Source
217
217
ctx->chans[i].con_priv = &ctx->mc[i];
218
218
}
219
219
220
220
/* Setup mailbox controller */
221
221
ctx->mb_ctrl.dev = &pdev->dev;
222
222
ctx->mb_ctrl.chans = ctx->chans;
223
223
ctx->mb_ctrl.txdone_irq = true;
224
224
ctx->mb_ctrl.ops = &slimpro_mbox_ops;
225
225
ctx->mb_ctrl.num_chans = i;
226
226
227
-
rc = mbox_controller_register(&ctx->mb_ctrl);
227
+
rc = devm_mbox_controller_register(&pdev->dev, &ctx->mb_ctrl);
228
228
if (rc) {
229
229
dev_err(&pdev->dev,
230
230
"APM X-Gene SLIMpro MailBox register failed:%d\n", rc);
231
231
return rc;
232
232
}
233
233
234
234
dev_info(&pdev->dev, "APM X-Gene SLIMpro MailBox registered\n");
235
235
return 0;
236
236
}
237
237
238
-
static int slimpro_mbox_remove(struct platform_device *pdev)
239
-
{
240
-
struct slimpro_mbox *smb = platform_get_drvdata(pdev);
241
-
242
-
mbox_controller_unregister(&smb->mb_ctrl);
243
-
return 0;
244
-
}
245
-
246
238
static const struct of_device_id slimpro_of_match[] = {
247
239
{.compatible = "apm,xgene-slimpro-mbox" },
248
240
{ },
249
241
};
250
242
MODULE_DEVICE_TABLE(of, slimpro_of_match);
251
243
252
244
#ifdef CONFIG_ACPI
253
245
static const struct acpi_device_id slimpro_acpi_ids[] = {
254
246
{"APMC0D01", 0},
255
247
{}
256
248
};
257
249
MODULE_DEVICE_TABLE(acpi, slimpro_acpi_ids);
258
250
#endif
259
251
260
252
static struct platform_driver slimpro_mbox_driver = {
261
253
.probe = slimpro_mbox_probe,
262
-
.remove = slimpro_mbox_remove,
263
254
.driver = {
264
255
.name = "xgene-slimpro-mbox",
265
256
.of_match_table = of_match_ptr(slimpro_of_match),
266
257
.acpi_match_table = ACPI_PTR(slimpro_acpi_ids)
267
258
},
268
259
};
269
260
270
261
static int __init slimpro_mbox_init(void)
271
262
{
272
263
return platform_driver_register(&slimpro_mbox_driver);