[PATCH v4 3/6] drm/panel: Use managed helpers in Novatek and Raydium panels
Osama Abdelkader <[email protected]>
| Newsgroups | org.freedesktop.lists.dri-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Use the managed MIPI DSI attach and panel add helpers in Novatek and Raydium panel drivers and drop the corresponding manual detach and panel remove calls from remove paths. Suggested-by: Luca Ceresoli <[email protected]> Signed-off-by: Osama Abdelkader <[email protected]> --- v4: - use devm_drm_panel_add instead of drm_panel_add. drivers/gpu/drm/panel/panel-novatek-nt35510.c | 13 +++------- drivers/gpu/drm/panel/panel-novatek-nt35532.c | 23 ++++------------- drivers/gpu/drm/panel/panel-novatek-nt35560.c | 19 +++----------- drivers/gpu/drm/panel/panel-novatek-nt36672a.c | 25 ++----------------- drivers/gpu/drm/panel/panel-novatek-nt36672e.c | 21 ++++------------ drivers/gpu/drm/panel/panel-novatek-nt37700f.c | 23 ++++------------- drivers/gpu/drm/panel/panel-novatek-nt37801.c | 23 ++++------------- drivers/gpu/drm/panel/panel-raydium-rm67191.c | 22 +++------------- drivers/gpu/drm/panel/panel-raydium-rm67200.c | 23 ++++------------- drivers/gpu/drm/panel/panel-raydium-rm68200.c | 16 +++--------- drivers/gpu/drm/panel/panel-raydium-rm692e5.c | 20 +++------------ 11 files changed, 45 insertions(+), 183 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-novatek-nt35510.c b/drivers/gpu/drm/panel/panel-novatek-nt35510.c index 3189d89c7ca0..91c81bfffbef 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt35510.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt35510.c @@ -1173,13 +1173,11 @@ static int nt35510_probe(struct mipi_dsi_device *dsi) nt->panel.backlight = bl; } - drm_panel_add(&nt->panel); - - ret = mipi_dsi_attach(dsi); - if (ret < 0) - drm_panel_remove(&nt->panel); + ret = devm_drm_panel_add(dev, &nt->panel); + if (ret) + return ret; - return 0; + return devm_mipi_dsi_attach(dev, dsi); } static void nt35510_remove(struct mipi_dsi_device *dsi) @@ -1187,13 +1185,10 @@ static void nt35510_remove(struct mipi_dsi_device *dsi) struct nt35510 *nt = mipi_dsi_get_drvdata(dsi); int ret; - mipi_dsi_detach(dsi); /* Power off */ ret = nt35510_power_off(nt); if (ret) dev_err(&dsi->dev, "Failed to power off\n"); - - drm_panel_remove(&nt->panel); } /* diff --git a/drivers/gpu/drm/panel/panel-novatek-nt35532.c b/drivers/gpu/drm/panel/panel-novatek-nt35532.c index edea766a3c44..752144220514 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt35532.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt35532.c @@ -752,29 +752,17 @@ static int nt35532_probe(struct mipi_dsi_device *dsi) if (ret) return dev_err_probe(dev, ret, "Failed to get backlight\n"); - drm_panel_add(&ctx->panel); + ret = devm_drm_panel_add(dev, &ctx->panel); + if (ret) + return ret; - ret = mipi_dsi_attach(dsi); - if (ret < 0) { - drm_panel_remove(&ctx->panel); + ret = devm_mipi_dsi_attach(dev, dsi); + if (ret < 0) return dev_err_probe(dev, ret, "Failed to attach to DSI host\n"); - } return 0; } -static void nt35532_remove(struct mipi_dsi_device *dsi) -{ - struct novatek_nt35532 *ctx = mipi_dsi_get_drvdata(dsi); - int ret; - - ret = mipi_dsi_detach(dsi); - if (ret < 0) - dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); - - drm_panel_remove(&ctx->panel); -} - static const struct of_device_id nt35532_of_match[] = { { .compatible = "flipkart,rimob-panel-nt35532-cs", .data = &rimob_panel_desc }, { /* sentinel */ } @@ -783,7 +771,6 @@ MODULE_DEVICE_TABLE(of, nt35532_of_match); static struct mipi_dsi_driver nt35532_driver = { .probe = nt35532_probe, - .remove = nt35532_remove, .driver = { .name = "panel-novatek-nt35532", .of_match_table = nt35532_of_match, diff --git a/drivers/gpu/drm/panel/panel-novatek-nt35560.c b/drivers/gpu/drm/panel/panel-novatek-nt35560.c index 6e5173f98a22..be42eb9ef423 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt35560.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt35560.c @@ -433,23 +433,11 @@ static int nt35560_probe(struct mipi_dsi_device *dsi) return dev_err_probe(dev, PTR_ERR(nt->panel.backlight), "failed to register backlight device\n"); - drm_panel_add(&nt->panel); - - ret = mipi_dsi_attach(dsi); - if (ret < 0) { - drm_panel_remove(&nt->panel); + ret = devm_drm_panel_add(dev, &nt->panel); + if (ret) return ret; - } - - return 0; -} - -static void nt35560_remove(struct mipi_dsi_device *dsi) -{ - struct nt35560 *nt = mipi_dsi_get_drvdata(dsi); - mipi_dsi_detach(dsi); - drm_panel_remove(&nt->panel); + return devm_mipi_dsi_attach(dev, dsi); } static const struct of_device_id nt35560_of_match[] = { @@ -467,7 +455,6 @@ MODULE_DEVICE_TABLE(of, nt35560_of_match); static struct mipi_dsi_driver nt35560_driver = { .probe = nt35560_probe, - .remove = nt35560_remove, .driver = { .name = "panel-novatek-nt35560", .of_match_table = nt35560_of_match, diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36672a.c b/drivers/gpu/drm/panel/panel-novatek-nt36672a.c index 464d9ce47d87..da466cdd9354 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt36672a.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt36672a.c @@ -428,9 +428,7 @@ static int nt36672a_panel_add(struct nt36672a_panel *pinfo) if (ret) return dev_err_probe(dev, ret, "Failed to get backlight\n"); - drm_panel_add(&pinfo->base); - - return 0; + return devm_drm_panel_add(dev, &pinfo->base); } static int nt36672a_panel_probe(struct mipi_dsi_device *dsi) @@ -458,25 +456,7 @@ static int nt36672a_panel_probe(struct mipi_dsi_device *dsi) if (err < 0) return err; - err = mipi_dsi_attach(dsi); - if (err < 0) { - drm_panel_remove(&pinfo->base); - return err; - } - - return 0; -} - -static void nt36672a_panel_remove(struct mipi_dsi_device *dsi) -{ - struct nt36672a_panel *pinfo = mipi_dsi_get_drvdata(dsi); - int err; - - err = mipi_dsi_detach(dsi); - if (err < 0) - dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", err); - - drm_panel_remove(&pinfo->base); + return devm_mipi_dsi_attach(&dsi->dev, dsi); } static const struct of_device_id tianma_fhd_video_of_match[] = { @@ -491,7 +471,6 @@ static struct mipi_dsi_driver nt36672a_panel_driver = { .of_match_table = tianma_fhd_video_of_match, }, .probe = nt36672a_panel_probe, - .remove = nt36672a_panel_remove, }; module_mipi_dsi_driver(nt36672a_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36672e.c b/drivers/gpu/drm/panel/panel-novatek-nt36672e.c index c5e00eb55722..85902338f10d 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt36672e.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt36672e.c @@ -561,27 +561,17 @@ static int nt36672e_panel_probe(struct mipi_dsi_device *dsi) ctx->panel.prepare_prev_first = true; - drm_panel_add(&ctx->panel); + ret = devm_drm_panel_add(dev, &ctx->panel); + if (ret) + return ret; - ret = mipi_dsi_attach(dsi); + ret = devm_mipi_dsi_attach(dev, dsi); if (ret < 0) { dev_err(dev, "Failed to attach to DSI host: %d\n", ret); - goto err_dsi_attach; + return ret; } return 0; - -err_dsi_attach: - drm_panel_remove(&ctx->panel); - return ret; -} - -static void nt36672e_panel_remove(struct mipi_dsi_device *dsi) -{ - struct nt36672e_panel *ctx = mipi_dsi_get_drvdata(dsi); - - mipi_dsi_detach(ctx->dsi); - drm_panel_remove(&ctx->panel); } static const struct of_device_id nt36672e_of_match[] = { @@ -599,7 +589,6 @@ static struct mipi_dsi_driver nt36672e_panel_driver = { .of_match_table = nt36672e_of_match, }, .probe = nt36672e_panel_probe, - .remove = nt36672e_panel_remove, }; module_mipi_dsi_driver(nt36672e_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-novatek-nt37700f.c b/drivers/gpu/drm/panel/panel-novatek-nt37700f.c index c221dd498fed..c2d219e52f6a 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt37700f.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt37700f.c @@ -257,29 +257,17 @@ static int nt37700f_tianma_probe(struct mipi_dsi_device *dsi) return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight), "Failed to create backlight\n"); - drm_panel_add(&ctx->panel); + ret = devm_drm_panel_add(dev, &ctx->panel); + if (ret) + return ret; - ret = mipi_dsi_attach(dsi); - if (ret < 0) { - drm_panel_remove(&ctx->panel); + ret = devm_mipi_dsi_attach(dev, dsi); + if (ret < 0) return dev_err_probe(dev, ret, "Failed to attach to DSI host\n"); - } return 0; } -static void nt37700f_tianma_remove(struct mipi_dsi_device *dsi) -{ - struct nt37700f_tianma *ctx = mipi_dsi_get_drvdata(dsi); - int ret; - - ret = mipi_dsi_detach(dsi); - if (ret < 0) - dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); - - drm_panel_remove(&ctx->panel); -} - static const struct of_device_id nt37700f_tianma_of_match[] = { { .compatible = "novatek,nt37700f" }, { /* sentinel */ } @@ -288,7 +276,6 @@ MODULE_DEVICE_TABLE(of, nt37700f_tianma_of_match); static struct mipi_dsi_driver nt37700f_tianma_driver = { .probe = nt37700f_tianma_probe, - .remove = nt37700f_tianma_remove, .driver = { .name = "panel-novatek-nt37700f", .of_match_table = nt37700f_tianma_of_match, diff --git a/drivers/gpu/drm/panel/panel-novatek-nt37801.c b/drivers/gpu/drm/panel/panel-novatek-nt37801.c index 5e46c4c6d771..4db560b66f4d 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt37801.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt37801.c @@ -270,7 +270,9 @@ static int novatek_nt37801_probe(struct mipi_dsi_device *dsi) return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight), "Failed to create backlight\n"); - drm_panel_add(&ctx->panel); + ret = devm_drm_panel_add(dev, &ctx->panel); + if (ret) + return ret; /* This panel only supports DSC; unconditionally enable it */ dsi->dsc = &ctx->dsc; @@ -283,27 +285,13 @@ static int novatek_nt37801_probe(struct mipi_dsi_device *dsi) ctx->dsc.bits_per_pixel = 8 << 4; /* 4 fractional bits */ ctx->dsc.block_pred_enable = true; - ret = mipi_dsi_attach(dsi); - if (ret < 0) { - drm_panel_remove(&ctx->panel); + ret = devm_mipi_dsi_attach(dev, dsi); + if (ret < 0) return dev_err_probe(dev, ret, "Failed to attach to DSI host\n"); - } return 0; } -static void novatek_nt37801_remove(struct mipi_dsi_device *dsi) -{ - struct novatek_nt37801 *ctx = mipi_dsi_get_drvdata(dsi); - int ret; - - ret = mipi_dsi_detach(dsi); - if (ret < 0) - dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); - - drm_panel_remove(&ctx->panel); -} - static const struct of_device_id novatek_nt37801_of_match[] = { { .compatible = "novatek,nt37801" }, {} @@ -312,7 +300,6 @@ MODULE_DEVICE_TABLE(of, novatek_nt37801_of_match); static struct mipi_dsi_driver novatek_nt37801_driver = { .probe = novatek_nt37801_probe, - .remove = novatek_nt37801_remove, .driver = { .name = "panel-novatek-nt37801", .of_match_table = novatek_nt37801_of_match, diff --git a/drivers/gpu/drm/panel/panel-raydium-rm67191.c b/drivers/gpu/drm/panel/panel-raydium-rm67191.c index 2af6aa47a551..62062ae0ebe3 100644 --- a/drivers/gpu/drm/panel/panel-raydium-rm67191.c +++ b/drivers/gpu/drm/panel/panel-raydium-rm67191.c @@ -590,26 +590,11 @@ static int rad_panel_probe(struct mipi_dsi_device *dsi) dev_set_drvdata(dev, panel); - drm_panel_add(&panel->panel); - - ret = mipi_dsi_attach(dsi); - if (ret) - drm_panel_remove(&panel->panel); - - return ret; -} - -static void rad_panel_remove(struct mipi_dsi_device *dsi) -{ - struct rad_panel *rad = mipi_dsi_get_drvdata(dsi); - struct device *dev = &dsi->dev; - int ret; - - ret = mipi_dsi_detach(dsi); + ret = devm_drm_panel_add(dev, &panel->panel); if (ret) - dev_err(dev, "Failed to detach from host (%d)\n", ret); + return ret; - drm_panel_remove(&rad->panel); + return devm_mipi_dsi_attach(dev, dsi); } static const struct of_device_id rad_of_match[] = { @@ -624,7 +609,6 @@ static struct mipi_dsi_driver rad_panel_driver = { .of_match_table = rad_of_match, }, .probe = rad_panel_probe, - .remove = rad_panel_remove, }; module_mipi_dsi_driver(rad_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-raydium-rm67200.c b/drivers/gpu/drm/panel/panel-raydium-rm67200.c index b2ba006c06f6..e16f9ad6d193 100644 --- a/drivers/gpu/drm/panel/panel-raydium-rm67200.c +++ b/drivers/gpu/drm/panel/panel-raydium-rm67200.c @@ -420,29 +420,17 @@ static int raydium_rm67200_probe(struct mipi_dsi_device *dsi) if (ret) return ret; - drm_panel_add(&ctx->panel); + ret = devm_drm_panel_add(dev, &ctx->panel); + if (ret) + return ret; - ret = mipi_dsi_attach(dsi); - if (ret < 0) { + ret = devm_mipi_dsi_attach(dev, dsi); + if (ret < 0) dev_err(dev, "Failed to attach to DSI host: %d\n", ret); - drm_panel_remove(&ctx->panel); - } return ret; } -static void raydium_rm67200_remove(struct mipi_dsi_device *dsi) -{ - struct raydium_rm67200 *ctx = mipi_dsi_get_drvdata(dsi); - int ret; - - ret = mipi_dsi_detach(dsi); - if (ret < 0) - dev_err(&dsi->dev, "Failed to detach DSI host: %d\n", ret); - - drm_panel_remove(&ctx->panel); -} - static const struct regulator_bulk_data w552793baa_regulators[] = { { .supply = "vdd", }, /* 2.8V */ { .supply = "iovcc", }, /* 1.8V */ @@ -479,7 +467,6 @@ MODULE_DEVICE_TABLE(of, raydium_rm67200_of_match); static struct mipi_dsi_driver raydium_rm67200_driver = { .probe = raydium_rm67200_probe, - .remove = raydium_rm67200_remove, .driver = { .name = "panel-raydium-rm67200", .of_match_table = raydium_rm67200_of_match, diff --git a/drivers/gpu/drm/panel/panel-raydium-rm68200.c b/drivers/gpu/drm/panel/panel-raydium-rm68200.c index c535dc931903..f235cb4ae071 100644 --- a/drivers/gpu/drm/panel/panel-raydium-rm68200.c +++ b/drivers/gpu/drm/panel/panel-raydium-rm68200.c @@ -360,26 +360,19 @@ static int rm68200_probe(struct mipi_dsi_device *dsi) if (ret) return ret; - drm_panel_add(&ctx->panel); + ret = devm_drm_panel_add(dev, &ctx->panel); + if (ret) + return ret; - ret = mipi_dsi_attach(dsi); + ret = devm_mipi_dsi_attach(dev, dsi); if (ret < 0) { dev_err(dev, "mipi_dsi_attach() failed: %d\n", ret); - drm_panel_remove(&ctx->panel); return ret; } return 0; } -static void rm68200_remove(struct mipi_dsi_device *dsi) -{ - struct rm68200 *ctx = mipi_dsi_get_drvdata(dsi); - - mipi_dsi_detach(dsi); - drm_panel_remove(&ctx->panel); -} - static const struct of_device_id raydium_rm68200_of_match[] = { { .compatible = "raydium,rm68200" }, { } @@ -388,7 +381,6 @@ MODULE_DEVICE_TABLE(of, raydium_rm68200_of_match); static struct mipi_dsi_driver raydium_rm68200_driver = { .probe = rm68200_probe, - .remove = rm68200_remove, .driver = { .name = "panel-raydium-rm68200", .of_match_table = raydium_rm68200_of_match, diff --git a/drivers/gpu/drm/panel/panel-raydium-rm692e5.c b/drivers/gpu/drm/panel/panel-raydium-rm692e5.c index 8e9484768657..4065cdf690f9 100644 --- a/drivers/gpu/drm/panel/panel-raydium-rm692e5.c +++ b/drivers/gpu/drm/panel/panel-raydium-rm692e5.c @@ -315,7 +315,9 @@ static int rm692e5_probe(struct mipi_dsi_device *dsi) return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight), "Failed to create backlight\n"); - drm_panel_add(&ctx->panel); + ret = devm_drm_panel_add(dev, &ctx->panel); + if (ret) + return ret; /* This panel only supports DSC; unconditionally enable it */ dsi->dsc = &ctx->dsc; @@ -331,28 +333,15 @@ static int rm692e5_probe(struct mipi_dsi_device *dsi) ctx->dsc.bits_per_pixel = 8 << 4; /* 4 fractional bits */ ctx->dsc.block_pred_enable = true; - ret = mipi_dsi_attach(dsi); + ret = devm_mipi_dsi_attach(dev, dsi); if (ret < 0) { dev_err(dev, "Failed to attach to DSI host: %d\n", ret); - drm_panel_remove(&ctx->panel); return ret; } return 0; } -static void rm692e5_remove(struct mipi_dsi_device *dsi) -{ - struct rm692e5_panel *ctx = mipi_dsi_get_drvdata(dsi); - int ret; - - ret = mipi_dsi_detach(dsi); - if (ret < 0) - dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); - - drm_panel_remove(&ctx->panel); -} - static const struct of_device_id rm692e5_of_match[] = { { .compatible = "fairphone,fp5-rm692e5-boe" }, { } @@ -361,7 +350,6 @@ MODULE_DEVICE_TABLE(of, rm692e5_of_match); static struct mipi_dsi_driver rm692e5_driver = { .probe = rm692e5_probe, - .remove = rm692e5_remove, .driver = { .name = "panel-rm692e5-boe-amoled", .of_match_table = rm692e5_of_match, -- 2.43.0