From: Sam Ravnborg <sam@ravnborg.org> To: dri-devel@lists.freedesktop.org, Jingoo Han <jingoohan1@gmail.com>, Lee Jones <lee.jones@linaro.org>, Daniel Thompson <daniel.thompson@linaro.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>, Thierry Reding <thierry.reding@gmail.com>, Sam Ravnborg <sam@ravnborg.org>, Hoegeun Kwon <hoegeun.kwon@samsung.com> Subject: [PATCH v1 12/22] drm/panel: samsung-s6e63j0x03: Backlight update Date: Sun, 2 Aug 2020 13:06:26 +0200 Message-ID: <20200802110636.1018743-13-sam@ravnborg.org> (raw) In-Reply-To: <20200802110636.1018743-1-sam@ravnborg.org> - Use backlight support from drm_panel. This shifts this driver away from manually handling of power state. - Add helper function for registering backlight, like other samsung panel drivers do. - Use devm_ for backlight register thus benefit from automatic unregistering. Drop all explicit unregistering. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Hoegeun Kwon <hoegeun.kwon@samsung.com> Cc: Inki Dae <inki.dae@samsung.com> Cc: Sam Ravnborg <sam@ravnborg.org> --- .../gpu/drm/panel/panel-samsung-s6e63j0x03.c | 56 +++++++++---------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c b/drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c index a3570e0a90a8..f8dbb1cf1429 100644 --- a/drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c +++ b/drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c @@ -36,7 +36,6 @@ struct s6e63j0x03 { struct device *dev; struct drm_panel panel; - struct backlight_device *bl_dev; struct regulator_bulk_data supplies[2]; struct gpio_desc *reset_gpio; @@ -181,10 +180,8 @@ static unsigned int s6e63j0x03_get_brightness_index(unsigned int brightness) return index; } -static int s6e63j0x03_update_gamma(struct s6e63j0x03 *ctx, - unsigned int brightness) +static int s6e63j0x03_update_gamma(struct s6e63j0x03 *ctx, int brightness) { - struct backlight_device *bl_dev = ctx->bl_dev; unsigned int index = s6e63j0x03_get_brightness_index(brightness); int ret; @@ -200,15 +197,13 @@ static int s6e63j0x03_update_gamma(struct s6e63j0x03 *ctx, if (ret < 0) return ret; - bl_dev->props.brightness = brightness; - return 0; } static int s6e63j0x03_set_brightness(struct backlight_device *bl_dev) { struct s6e63j0x03 *ctx = bl_get_data(bl_dev); - unsigned int brightness = bl_dev->props.brightness; + unsigned int brightness = backlight_get_brightness(bl_dev); return s6e63j0x03_update_gamma(ctx, brightness); } @@ -227,8 +222,6 @@ static int s6e63j0x03_disable(struct drm_panel *panel) if (ret < 0) return ret; - ctx->bl_dev->props.power = FB_BLANK_NORMAL; - ret = mipi_dsi_dcs_enter_sleep_mode(dsi); if (ret < 0) return ret; @@ -247,8 +240,6 @@ static int s6e63j0x03_unprepare(struct drm_panel *panel) if (ret < 0) return ret; - ctx->bl_dev->props.power = FB_BLANK_POWERDOWN; - return 0; } @@ -334,8 +325,6 @@ static int s6e63j0x03_prepare(struct drm_panel *panel) if (ret < 0) goto err; - ctx->bl_dev->props.power = FB_BLANK_NORMAL; - return 0; err: @@ -395,8 +384,6 @@ static int s6e63j0x03_enable(struct drm_panel *panel) if (ret < 0) return ret; - ctx->bl_dev->props.power = FB_BLANK_UNBLANK; - return 0; } @@ -432,6 +419,25 @@ static const struct drm_panel_funcs s6e63j0x03_funcs = { .get_modes = s6e63j0x03_get_modes, }; +static int s6e63j0x03_backlight_register(struct s6e63j0x03 *ctx) +{ + DECLARE_BACKLIGHT_INIT_RAW(props, DEFAULT_BRIGHTNESS, MAX_BRIGHTNESS); + struct device *dev = ctx->dev; + struct backlight_device *bd; + int ret = 0; + + bd = devm_backlight_device_register(dev, "panel", dev, ctx, + &s6e63j0x03_bl_ops, &props); + if (IS_ERR(bd)) { + ret = PTR_ERR(bd); + DRM_DEV_ERROR(dev, "error registering backlight device (%d)\n", ret); + return ret; + } + + ctx->panel.backlight = bd; + return ret; +} + static int s6e63j0x03_probe(struct mipi_dsi_device *dsi) { struct device *dev = &dsi->dev; @@ -469,20 +475,13 @@ static int s6e63j0x03_probe(struct mipi_dsi_device *dsi) drm_panel_init(&ctx->panel, dev, &s6e63j0x03_funcs, DRM_MODE_CONNECTOR_DSI); - ctx->bl_dev = backlight_device_register("s6e63j0x03", dev, ctx, - &s6e63j0x03_bl_ops, NULL); - if (IS_ERR(ctx->bl_dev)) { - dev_err(dev, "failed to register backlight device\n"); - return PTR_ERR(ctx->bl_dev); - } - - ctx->bl_dev->props.max_brightness = MAX_BRIGHTNESS; - ctx->bl_dev->props.brightness = DEFAULT_BRIGHTNESS; - ctx->bl_dev->props.power = FB_BLANK_POWERDOWN; + ret = s6e63j0x03_backlight_register(ctx); + if (ret) + return ret; ret = drm_panel_add(&ctx->panel); if (ret < 0) - goto unregister_backlight; + return ret; ret = mipi_dsi_attach(dsi); if (ret < 0) @@ -493,9 +492,6 @@ static int s6e63j0x03_probe(struct mipi_dsi_device *dsi) remove_panel: drm_panel_remove(&ctx->panel); -unregister_backlight: - backlight_device_unregister(ctx->bl_dev); - return ret; } @@ -506,8 +502,6 @@ static int s6e63j0x03_remove(struct mipi_dsi_device *dsi) mipi_dsi_detach(dsi); drm_panel_remove(&ctx->panel); - backlight_device_unregister(ctx->bl_dev); - return 0; } -- 2.25.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply index Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-02 11:06 [RFC PATCH v1 0/22] backlight: add init macros and accessors Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 01/22] backlight: Silently fail backlight_update_status() if no device Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 02/22] backlight: Add DECLARE_* macro for device registration Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 03/22] backlight: Add get/set operations for brightness/power properties Sam Ravnborg 2020-08-04 16:43 ` daniel 2020-08-04 19:56 ` Sam Ravnborg 2020-08-05 7:16 ` daniel 2020-08-02 11:06 ` [PATCH v1 04/22] backlight: gpio: Use DECLARE_BACKLIGHT_INIT_RAW and get/setters Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 05/22] drm/gma500: Backlight support Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 06/22] drm/panel: asus-z00t-tm5p5-n35596: Backlight update Sam Ravnborg 2020-08-04 16:59 ` daniel 2020-08-02 11:06 ` [PATCH v1 07/22] drm/panel: jdi-lt070me05000: " Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 08/22] drm/panel: novatek-nt35510: " Sam Ravnborg 2020-08-04 21:29 ` Linus Walleij 2020-08-02 11:06 ` [PATCH v1 09/22] drm/panel: orisetech-otm8009a: " Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 10/22] drm/panel: raydium-rm67191: " Sam Ravnborg 2020-08-04 17:04 ` daniel 2020-08-02 11:06 ` [PATCH v1 11/22] drm/panel: samsung-s6e63m0: " Sam Ravnborg 2020-08-02 11:06 ` Sam Ravnborg [this message] 2020-08-02 11:06 ` [PATCH v1 13/22] drm/panel: samsung-s6e3ha2: " Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 14/22] drm/panel: sony-acx424akp: " Sam Ravnborg 2020-08-04 21:31 ` Linus Walleij 2020-08-02 11:06 ` [PATCH v1 15/22] drm/panel: sony-acx565akm: " Sam Ravnborg 2020-08-04 17:09 ` daniel 2020-08-02 11:06 ` [PATCH v1 16/22] drm/bridge: parade-ps8622: " Sam Ravnborg 2020-08-02 14:05 ` kernel test robot 2020-08-02 14:32 ` Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 17/22] drm/tilcdc: " Sam Ravnborg 2020-08-02 13:21 ` kernel test robot 2020-08-02 11:06 ` [PATCH v1 18/22] drm/radeon: " Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 19/22] drm/amdgpu/atom: " Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 20/22] drm/i915: " Sam Ravnborg 2020-08-02 11:06 ` [PATCH v1 21/22] drm/omap: display: " Sam Ravnborg 2020-08-02 14:26 ` Sebastian Reichel 2020-08-02 14:32 ` Sam Ravnborg 2020-08-02 22:48 ` Sebastian Reichel 2020-08-02 11:06 ` [PATCH v1 22/22] drm/shmobile: " Sam Ravnborg 2020-08-04 16:51 ` [RFC PATCH v1 0/22] backlight: add init macros and accessors daniel
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200802110636.1018743-13-sam@ravnborg.org \ --to=sam@ravnborg.org \ --cc=daniel.thompson@linaro.org \ --cc=daniel.vetter@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=hoegeun.kwon@samsung.com \ --cc=jingoohan1@gmail.com \ --cc=lee.jones@linaro.org \ --cc=thierry.reding@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
dri-devel Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/dri-devel/0 dri-devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dri-devel dri-devel/ https://lore.kernel.org/dri-devel \ dri-devel@lists.freedesktop.org public-inbox-index dri-devel Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.freedesktop.lists.dri-devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git