blob: 4db60c786aee6005a269786590334c0bac3b3d69 [file] [log] [blame]
hj.shaof72d6ff2025-06-10 04:34:26 -07001#include <stdlib.h>
2#include <fcntl.h>
3#include <unistd.h>
4#include <string.h>
5#include <stdint.h>
6#include <stdio.h>
7
8struct mdio_reg_op
9{
10 uint32_t reg;
11 uint32_t val;
12};
13
14#define DEVICE_NAME "/dev/mdio_misc"
15
16int main(int argc, char*argv[])
17{
18 int fd;
19 ssize_t ret;
20 struct mdio_reg_op reg_op;
21
22 if (argc != 2 && argc != 3)
23 {
24 fprintf(stderr, "Usage: %s <reg> [val]\n", argv[0]);
25 fprintf(stderr, " Read: %s 0x0 \n", argv[0]);
26 fprintf(stderr, " Write: %s 0x0 0x2100\n", argv[0]);
27 return -1;
28 }
29
30 fd = open(DEVICE_NAME, O_RDWR);
31 if (fd < 0)
32 {
33 perror("Failed to open device");
34 return -1;
35 }
36
37 reg_op.reg = strtoul(argv[1], NULL, 16);
38
39 if (argc == 2)
40 {
41 ret = read(fd, &reg_op, sizeof(struct mdio_reg_op));
42 if (ret != sizeof(struct mdio_reg_op))
43 {
44 perror("Read operation failed");
45 close(fd);
46 return -1;
47 }
48 printf("Read success: reg=0x%08X, val=0x%08X\n", reg_op.reg, reg_op.val);
49 }
50 else
51 {
52 reg_op.val = strtoul(argv[2], NULL, 16);
53 ret = write(fd, &reg_op, sizeof(reg_op));
54 if (ret != sizeof(reg_op))
55 {
56 perror("Write operation failed");
57 close(fd);
58 return -1;
59 }
60 printf("Write success: reg=0x%08X, val=0x%08X\n", reg_op.reg, reg_op.val);
61 }
62
63 close(fd);
64 return 0;
65}