123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /// Use mdio_alloc and mdio_register instead of miiphy_register
- ///
- //# Stop using the oldest mii interface in drivers
- //
- // Confidence: High
- // Copyright: (C) 2016 Joe Hershberger. GPLv2.
- // Comments:
- // Options: --include-headers --recursive-includes --local-includes -I include
- @ mii_reg @
- expression devname;
- identifier readfunc, writefunc;
- @@
- + int retval;
- - miiphy_register(devname, readfunc, writefunc);
- + struct mii_dev *mdiodev = mdio_alloc();
- + if (!mdiodev) return -ENOMEM;
- + strncpy(mdiodev->name, devname, MDIO_NAME_LEN);
- + mdiodev->read = readfunc;
- + mdiodev->write = writefunc;
- +
- + retval = mdio_register(mdiodev);
- + if (retval < 0) return retval;
- @ update_read_sig @
- identifier mii_reg.readfunc;
- identifier name0, addr0, reg0, output;
- type addrT, outputT;
- @@
- - readfunc (
- - const char *name0,
- - addrT addr0,
- - addrT reg0,
- - outputT *output
- - )
- + readfunc (
- + struct mii_dev *bus,
- + int addr0,
- + int devad,
- + int reg0
- + )
- {
- ...
- }
- @ update_read_impl @
- identifier mii_reg.readfunc;
- identifier update_read_sig.output;
- type update_read_sig.outputT;
- constant c;
- identifier retvar;
- expression E;
- @@
- readfunc (...)
- {
- + outputT output = 0;
- ...
- (
- - return 0;
- + return *output;
- |
- return c;
- |
- - return retvar;
- + if (retvar < 0)
- + return retvar;
- + return *output;
- |
- - return E;
- + int retval = E;
- + if (retval < 0)
- + return retval;
- + return *output;
- )
- }
- @ update_read_impl2 @
- identifier mii_reg.readfunc;
- identifier update_read_sig.output;
- @@
- readfunc (...)
- {
- <...
- (
- - *output
- + output
- |
- - output
- + &output
- )
- ...>
- }
- @ update_read_name @
- identifier mii_reg.readfunc;
- identifier update_read_sig.name0;
- @@
- readfunc (...) {
- <...
- - name0
- + bus->name
- ...>
- }
- @ update_write_sig @
- identifier mii_reg.writefunc;
- identifier name0, addr0, reg0, value0;
- type addrT, valueT;
- typedef u16;
- @@
- - writefunc (
- - const char *name0,
- - addrT addr0,
- - addrT reg0,
- - valueT value0
- - )
- + writefunc (
- + struct mii_dev *bus,
- + int addr0,
- + int devad,
- + int reg0,
- + u16 value0
- + )
- {
- ...
- }
- @ update_write_name @
- identifier mii_reg.writefunc;
- identifier update_write_sig.name0;
- @@
- writefunc (...) {
- <...
- - name0
- + bus->name
- ...>
- }
|