xref: /OK3568_Linux_fs/u-boot/scripts/coccinelle/net/mdio_register.cocci (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/// Use mdio_alloc and mdio_register instead of miiphy_register
2*4882a593Smuzhiyun///
3*4882a593Smuzhiyun//# Stop using the oldest mii interface in drivers
4*4882a593Smuzhiyun//
5*4882a593Smuzhiyun// Confidence: High
6*4882a593Smuzhiyun// Copyright: (C) 2016 Joe Hershberger.  GPLv2.
7*4882a593Smuzhiyun// Comments:
8*4882a593Smuzhiyun// Options: --include-headers --recursive-includes --local-includes -I include
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun@ mii_reg @
11*4882a593Smuzhiyunexpression devname;
12*4882a593Smuzhiyunidentifier readfunc, writefunc;
13*4882a593Smuzhiyun@@
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun+ int retval;
16*4882a593Smuzhiyun- miiphy_register(devname, readfunc, writefunc);
17*4882a593Smuzhiyun+ struct mii_dev *mdiodev = mdio_alloc();
18*4882a593Smuzhiyun+ if (!mdiodev) return -ENOMEM;
19*4882a593Smuzhiyun+ strncpy(mdiodev->name, devname, MDIO_NAME_LEN);
20*4882a593Smuzhiyun+ mdiodev->read = readfunc;
21*4882a593Smuzhiyun+ mdiodev->write = writefunc;
22*4882a593Smuzhiyun+
23*4882a593Smuzhiyun+ retval = mdio_register(mdiodev);
24*4882a593Smuzhiyun+ if (retval < 0) return retval;
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun@ update_read_sig @
27*4882a593Smuzhiyunidentifier mii_reg.readfunc;
28*4882a593Smuzhiyunidentifier name0, addr0, reg0, output;
29*4882a593Smuzhiyuntype addrT, outputT;
30*4882a593Smuzhiyun@@
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun- readfunc (
33*4882a593Smuzhiyun- 	const char *name0,
34*4882a593Smuzhiyun- 	addrT addr0,
35*4882a593Smuzhiyun- 	addrT reg0,
36*4882a593Smuzhiyun- 	outputT *output
37*4882a593Smuzhiyun- )
38*4882a593Smuzhiyun+ readfunc (
39*4882a593Smuzhiyun+ 	struct mii_dev *bus,
40*4882a593Smuzhiyun+ 	int addr0,
41*4882a593Smuzhiyun+ 	int devad,
42*4882a593Smuzhiyun+ 	int reg0
43*4882a593Smuzhiyun+ )
44*4882a593Smuzhiyun  {
45*4882a593Smuzhiyun  ...
46*4882a593Smuzhiyun  }
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun@ update_read_impl @
49*4882a593Smuzhiyunidentifier mii_reg.readfunc;
50*4882a593Smuzhiyunidentifier update_read_sig.output;
51*4882a593Smuzhiyuntype update_read_sig.outputT;
52*4882a593Smuzhiyunconstant c;
53*4882a593Smuzhiyunidentifier retvar;
54*4882a593Smuzhiyunexpression E;
55*4882a593Smuzhiyun@@
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun  readfunc (...)
58*4882a593Smuzhiyun  {
59*4882a593Smuzhiyun+ outputT output = 0;
60*4882a593Smuzhiyun  ...
61*4882a593Smuzhiyun(
62*4882a593Smuzhiyun- return 0;
63*4882a593Smuzhiyun+ return *output;
64*4882a593Smuzhiyun|
65*4882a593Smuzhiyun  return c;
66*4882a593Smuzhiyun|
67*4882a593Smuzhiyun- return retvar;
68*4882a593Smuzhiyun+ if (retvar < 0)
69*4882a593Smuzhiyun+ 	return retvar;
70*4882a593Smuzhiyun+ return *output;
71*4882a593Smuzhiyun|
72*4882a593Smuzhiyun- return E;
73*4882a593Smuzhiyun+ int retval = E;
74*4882a593Smuzhiyun+ if (retval < 0)
75*4882a593Smuzhiyun+ 	return retval;
76*4882a593Smuzhiyun+ return *output;
77*4882a593Smuzhiyun)
78*4882a593Smuzhiyun  }
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun@ update_read_impl2 @
81*4882a593Smuzhiyunidentifier mii_reg.readfunc;
82*4882a593Smuzhiyunidentifier update_read_sig.output;
83*4882a593Smuzhiyun@@
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun  readfunc (...)
86*4882a593Smuzhiyun  {
87*4882a593Smuzhiyun  <...
88*4882a593Smuzhiyun(
89*4882a593Smuzhiyun- *output
90*4882a593Smuzhiyun+ output
91*4882a593Smuzhiyun|
92*4882a593Smuzhiyun- output
93*4882a593Smuzhiyun+ &output
94*4882a593Smuzhiyun)
95*4882a593Smuzhiyun  ...>
96*4882a593Smuzhiyun  }
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun@ update_read_name @
99*4882a593Smuzhiyunidentifier mii_reg.readfunc;
100*4882a593Smuzhiyunidentifier update_read_sig.name0;
101*4882a593Smuzhiyun@@
102*4882a593Smuzhiyun  readfunc (...) {
103*4882a593Smuzhiyun  <...
104*4882a593Smuzhiyun- name0
105*4882a593Smuzhiyun+ bus->name
106*4882a593Smuzhiyun  ...>
107*4882a593Smuzhiyun  }
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun@ update_write_sig @
110*4882a593Smuzhiyunidentifier mii_reg.writefunc;
111*4882a593Smuzhiyunidentifier name0, addr0, reg0, value0;
112*4882a593Smuzhiyuntype addrT, valueT;
113*4882a593Smuzhiyuntypedef u16;
114*4882a593Smuzhiyun@@
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun- writefunc (
117*4882a593Smuzhiyun- 	const char *name0,
118*4882a593Smuzhiyun- 	addrT addr0,
119*4882a593Smuzhiyun- 	addrT reg0,
120*4882a593Smuzhiyun- 	valueT value0
121*4882a593Smuzhiyun- )
122*4882a593Smuzhiyun+ writefunc (
123*4882a593Smuzhiyun+ 	struct mii_dev *bus,
124*4882a593Smuzhiyun+ 	int addr0,
125*4882a593Smuzhiyun+ 	int devad,
126*4882a593Smuzhiyun+ 	int reg0,
127*4882a593Smuzhiyun+ 	u16 value0
128*4882a593Smuzhiyun+ )
129*4882a593Smuzhiyun  {
130*4882a593Smuzhiyun  ...
131*4882a593Smuzhiyun  }
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun@ update_write_name @
134*4882a593Smuzhiyunidentifier mii_reg.writefunc;
135*4882a593Smuzhiyunidentifier update_write_sig.name0;
136*4882a593Smuzhiyun@@
137*4882a593Smuzhiyun  writefunc (...) {
138*4882a593Smuzhiyun  <...
139*4882a593Smuzhiyun- name0
140*4882a593Smuzhiyun+ bus->name
141*4882a593Smuzhiyun  ...>
142*4882a593Smuzhiyun  }
143