From bdea58c1b2baabf3d42a9dccf73af2fc773d483f Mon Sep 17 00:00:00 2001 From: Ralph Metzler Date: Wed, 11 Apr 2018 21:18:00 +0200 Subject: [PATCH] replace direct register based mdio with ioctl --- apps/octonet/ddtest.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/octonet/ddtest.c b/apps/octonet/ddtest.c index c06dda6..b1b46c6 100644 --- a/apps/octonet/ddtest.c +++ b/apps/octonet/ddtest.c @@ -722,9 +722,10 @@ int mdio(int dev, int argc, char* argv[], uint32_t Flags) adr = strtoul(argv[0], NULL, 16); reg = strtoul(argv[1], NULL, 16); +#if 0 writereg(dev, 0x24, adr); writereg(dev, 0x28, reg); - if(argc > 2) { + if (argc > 2) { val = strtoul(argv[2], NULL, 16); writereg(dev, 0x2c, val); writereg(dev, 0x20, 0x03); @@ -739,6 +740,23 @@ int mdio(int dev, int argc, char* argv[], uint32_t Flags) readreg(dev, 0x2c, &val); printf("%04x\n", val); } +#else + { + struct ddb_mdio mdio = { + .adr = adr, + .reg = reg, + }; + + if(argc > 2) { + mdio.val = strtoul(argv[2], NULL, 16); + return ioctl(dev, IOCTL_DDB_WRITE_MDIO, &mdio); + } else { + if (ioctl(dev, IOCTL_DDB_READ_MDIO, &mdio) < 0) + return -1; + printf("%04x\n", mdio.val); + } + } +#endif return 0; }