@@ -35,27 +35,20 @@ struct mdio_gpio_info {
35
35
struct gpio_desc * mdc , * mdio , * mdo ;
36
36
};
37
37
38
- static void * mdio_gpio_of_get_data (struct device * dev )
38
+ static int mdio_gpio_get_data (struct device * dev ,
39
+ struct mdio_gpio_info * bitbang )
39
40
{
40
- struct mdio_gpio_platform_data * pdata ;
41
+ bitbang -> mdc = devm_gpiod_get_index (dev , NULL , 0 , GPIOD_OUT_LOW );
42
+ if (IS_ERR (bitbang -> mdc ))
43
+ return PTR_ERR (bitbang -> mdc );
41
44
42
- pdata = devm_kzalloc (dev , sizeof (* pdata ), GFP_KERNEL );
43
- if (!pdata )
44
- return NULL ;
45
-
46
- pdata -> mdc = devm_gpiod_get_index (dev , NULL , 0 , GPIOD_OUT_LOW );
47
- if (IS_ERR (pdata -> mdc ))
48
- return ERR_CAST (pdata -> mdc );
49
-
50
- pdata -> mdio = devm_gpiod_get_index (dev , NULL , 1 , GPIOD_IN );
51
- if (IS_ERR (pdata -> mdio ))
52
- return ERR_CAST (pdata -> mdio );
53
-
54
- pdata -> mdo = devm_gpiod_get_index_optional (dev , NULL , 2 , GPIOD_OUT_LOW );
55
- if (IS_ERR (pdata -> mdo ))
56
- return ERR_CAST (pdata -> mdo );
45
+ bitbang -> mdio = devm_gpiod_get_index (dev , NULL , 1 , GPIOD_IN );
46
+ if (IS_ERR (bitbang -> mdio ))
47
+ return PTR_ERR (bitbang -> mdio );
57
48
58
- return pdata ;
49
+ bitbang -> mdo = devm_gpiod_get_index_optional (dev , NULL , 2 ,
50
+ GPIOD_OUT_LOW );
51
+ return PTR_ERR_OR_ZERO (bitbang -> mdo );
59
52
}
60
53
61
54
static void mdio_dir (struct mdiobb_ctrl * ctrl , int dir )
@@ -116,15 +109,11 @@ static const struct mdiobb_ops mdio_gpio_ops = {
116
109
117
110
static struct mii_bus * mdio_gpio_bus_init (struct device * dev ,
118
111
struct mdio_gpio_info * bitbang ,
119
- struct mdio_gpio_platform_data * pdata ,
120
112
int bus_id )
121
113
{
122
114
struct mii_bus * new_bus ;
123
115
124
116
bitbang -> ctrl .ops = & mdio_gpio_ops ;
125
- bitbang -> mdc = pdata -> mdc ;
126
- bitbang -> mdio = pdata -> mdio ;
127
- bitbang -> mdo = pdata -> mdo ;
128
117
129
118
new_bus = alloc_mdio_bitbang (& bitbang -> ctrl );
130
119
if (!new_bus )
@@ -160,7 +149,6 @@ static void mdio_gpio_bus_destroy(struct device *dev)
160
149
161
150
static int mdio_gpio_probe (struct platform_device * pdev )
162
151
{
163
- struct mdio_gpio_platform_data * pdata ;
164
152
struct mdio_gpio_info * bitbang ;
165
153
struct mii_bus * new_bus ;
166
154
int ret , bus_id ;
@@ -169,22 +157,21 @@ static int mdio_gpio_probe(struct platform_device *pdev)
169
157
if (!bitbang )
170
158
return - ENOMEM ;
171
159
160
+ ret = mdio_gpio_get_data (& pdev -> dev , bitbang );
161
+ if (ret )
162
+ return ret ;
163
+
172
164
if (pdev -> dev .of_node ) {
173
- pdata = mdio_gpio_of_get_data (& pdev -> dev );
174
165
bus_id = of_alias_get_id (pdev -> dev .of_node , "mdio-gpio" );
175
166
if (bus_id < 0 ) {
176
167
dev_warn (& pdev -> dev , "failed to get alias id\n" );
177
168
bus_id = 0 ;
178
169
}
179
170
} else {
180
- pdata = dev_get_platdata (& pdev -> dev );
181
171
bus_id = pdev -> id ;
182
172
}
183
173
184
- if (!pdata )
185
- return - ENODEV ;
186
-
187
- new_bus = mdio_gpio_bus_init (& pdev -> dev , bitbang , pdata , bus_id );
174
+ new_bus = mdio_gpio_bus_init (& pdev -> dev , bitbang , bus_id );
188
175
if (!new_bus )
189
176
return - ENODEV ;
190
177
0 commit comments