diff options
author | Tom Rini <trini@konsulko.com> | 2016-08-15 20:38:39 (GMT) |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-08-15 20:38:39 (GMT) |
commit | 2ef98d33166e5c22a61eba29c20e236b72f1e8a2 (patch) | |
tree | 288afa85ba7134787f5c7146b0d87aaeb07d9b78 /scripts/coccinelle/net/mdio_register.cocci | |
parent | b064c9124acddbcdc70843f62fda13a2d7d7a392 (diff) | |
parent | cc2593128f7ad1b879e9e5bd3097f6c717cf4c9a (diff) | |
download | u-boot-fsl-qoriq-2ef98d33166e5c22a61eba29c20e236b72f1e8a2.tar.xz |
Merge branch 'master' of git://git.denx.de/u-boot-net
Diffstat (limited to 'scripts/coccinelle/net/mdio_register.cocci')
-rw-r--r-- | scripts/coccinelle/net/mdio_register.cocci | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/scripts/coccinelle/net/mdio_register.cocci b/scripts/coccinelle/net/mdio_register.cocci new file mode 100644 index 0000000..100f102 --- /dev/null +++ b/scripts/coccinelle/net/mdio_register.cocci @@ -0,0 +1,142 @@ +/// 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 + ...> + } |