@@ -157,7 +157,7 @@ struct rp1_firmware *rp1_firmware_get(struct device_node *client)
157
157
const char * match = rp1_firmware_of_match [0 ].compatible ;
158
158
struct platform_device * pdev ;
159
159
struct device_node * fwnode ;
160
- struct rp1_firmware * fw ;
160
+ struct rp1_firmware * fw = NULL ;
161
161
162
162
if (!client )
163
163
return NULL ;
@@ -166,7 +166,7 @@ struct rp1_firmware *rp1_firmware_get(struct device_node *client)
166
166
return NULL ;
167
167
if (!of_device_is_compatible (fwnode , match )) {
168
168
of_node_put (fwnode );
169
- return NULL ;
169
+ return ERR_PTR ( - ENXIO ) ;
170
170
}
171
171
172
172
pdev = of_find_device_by_node (fwnode );
@@ -176,7 +176,7 @@ struct rp1_firmware *rp1_firmware_get(struct device_node *client)
176
176
goto err_exit ;
177
177
178
178
fw = platform_get_drvdata (pdev );
179
- if (! fw )
179
+ if (IS_ERR_OR_NULL ( fw ) )
180
180
goto err_exit ;
181
181
182
182
if (!kref_get_unless_zero (& fw -> consumers ))
@@ -188,7 +188,7 @@ struct rp1_firmware *rp1_firmware_get(struct device_node *client)
188
188
189
189
err_exit :
190
190
put_device (& pdev -> dev );
191
- return NULL ;
191
+ return fw ;
192
192
}
193
193
EXPORT_SYMBOL_GPL (rp1_firmware_get );
194
194
@@ -204,8 +204,8 @@ struct rp1_firmware *devm_rp1_firmware_get(struct device *dev, struct device_nod
204
204
int ret ;
205
205
206
206
fw = rp1_firmware_get (client );
207
- if (! fw )
208
- return NULL ;
207
+ if (IS_ERR_OR_NULL ( fw ) )
208
+ return fw ;
209
209
210
210
ret = devm_add_action_or_reset (dev , devm_rp1_firmware_put , fw );
211
211
if (ret )
@@ -270,19 +270,18 @@ static int rp1_firmware_probe(struct platform_device *pdev)
270
270
init_completion (& fw -> c );
271
271
kref_init (& fw -> consumers );
272
272
273
- platform_set_drvdata (pdev , fw );
274
-
275
273
ret = rp1_firmware_message (fw , GET_FIRMWARE_VERSION ,
276
274
NULL , 0 , & version , sizeof (version ));
277
275
if (ret == sizeof (version )) {
278
276
dev_info (dev , "RP1 Firmware version %08x%08x%08x%08x%08x\n" ,
279
277
version [0 ], version [1 ], version [2 ], version [3 ], version [4 ]);
280
- ret = 0 ;
281
- } else if (ret >= 0 ) {
282
- ret = - EIO ;
278
+ platform_set_drvdata (pdev , fw );
279
+ } else {
280
+ kfree (fw );
281
+ platform_set_drvdata (pdev , ERR_PTR (- ENOENT ));
283
282
}
284
283
285
- return ret ;
284
+ return 0 ;
286
285
}
287
286
288
287
static int rp1_firmware_remove (struct platform_device * pdev )
0 commit comments