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