GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
@@ -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
|
||||
...>
|
||||
}
|
||||
Reference in New Issue
Block a user