Source
226
226
efuse->config.size = SZ_512;
227
227
efuse->config.read_only = true;
228
228
efuse->config.reg_read = meson_mx_efuse_read;
229
229
230
230
efuse->core_clk = devm_clk_get(&pdev->dev, "core");
231
231
if (IS_ERR(efuse->core_clk)) {
232
232
dev_err(&pdev->dev, "Failed to get core clock\n");
233
233
return PTR_ERR(efuse->core_clk);
234
234
}
235
235
236
-
efuse->nvmem = nvmem_register(&efuse->config);
237
-
if (IS_ERR(efuse->nvmem))
238
-
return PTR_ERR(efuse->nvmem);
236
+
efuse->nvmem = devm_nvmem_register(&pdev->dev, &efuse->config);
239
237
240
-
platform_set_drvdata(pdev, efuse);
241
-
242
-
return 0;
243
-
}
244
-
245
-
static int meson_mx_efuse_remove(struct platform_device *pdev)
246
-
{
247
-
struct meson_mx_efuse *efuse = platform_get_drvdata(pdev);
248
-
249
-
return nvmem_unregister(efuse->nvmem);
238
+
return PTR_ERR_OR_ZERO(efuse->nvmem);
250
239
}
251
240
252
241
static struct platform_driver meson_mx_efuse_driver = {
253
242
.probe = meson_mx_efuse_probe,
254
-
.remove = meson_mx_efuse_remove,
255
243
.driver = {
256
244
.name = "meson-mx-efuse",
257
245
.of_match_table = meson_mx_efuse_match,
258
246
},
259
247
};
260
248
261
249
module_platform_driver(meson_mx_efuse_driver);
262
250
263
251
MODULE_AUTHOR("Martin Blumenstingl <martin.blumenstingl@googlemail.com>");
264
252
MODULE_DESCRIPTION("Amlogic Meson MX eFuse NVMEM driver");