Skip to content

Commit

Permalink
drm/panel: otm8009a: Don't double check prepared/enabled
Browse files Browse the repository at this point in the history
As talked about in commit d2aacaf ("drm/panel: Check for already
prepared/enabled in drm_panel"), we want to remove needless code from
panel drivers that was storing and double-checking the
prepared/enabled state. Even if someone was relying on the
double-check before, that double-check is now in the core and not
needed in individual drivers.

For the "otm8009a" driver we fully remove the storing of the "enabled"
state and we remove the double-checking, but we still keep the storing
of the "prepared" state since the backlight code in the driver checks
it. This backlight code may not be perfectly safe since there doesn't
appear to be sufficient synchronization between the backlight driver
(which userspace can call into directly) and the code that's
unpreparing the panel. However, this lack of safety is not new and can
be addressed in a future patch.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230804140605.RFC.3.I6a4a3c81c78acf5acdc2e5b5d936e19bf57ec07a@changeid
  • Loading branch information
Douglas Anderson committed Sep 13, 2023
1 parent d43f0fe commit 1e0465e
Showing 1 changed file with 0 additions and 17 deletions.
17 changes: 0 additions & 17 deletions drivers/gpu/drm/panel/panel-orisetech-otm8009a.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ struct otm8009a {
struct gpio_desc *reset_gpio;
struct regulator *supply;
bool prepared;
bool enabled;
};

static const struct drm_display_mode modes[] = {
Expand Down Expand Up @@ -267,9 +266,6 @@ static int otm8009a_disable(struct drm_panel *panel)
struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev);
int ret;

if (!ctx->enabled)
return 0; /* This is not an issue so we return 0 here */

backlight_disable(ctx->bl_dev);

ret = mipi_dsi_dcs_set_display_off(dsi);
Expand All @@ -282,18 +278,13 @@ static int otm8009a_disable(struct drm_panel *panel)

msleep(120);

ctx->enabled = false;

return 0;
}

static int otm8009a_unprepare(struct drm_panel *panel)
{
struct otm8009a *ctx = panel_to_otm8009a(panel);

if (!ctx->prepared)
return 0;

if (ctx->reset_gpio) {
gpiod_set_value_cansleep(ctx->reset_gpio, 1);
msleep(20);
Expand All @@ -311,9 +302,6 @@ static int otm8009a_prepare(struct drm_panel *panel)
struct otm8009a *ctx = panel_to_otm8009a(panel);
int ret;

if (ctx->prepared)
return 0;

ret = regulator_enable(ctx->supply);
if (ret < 0) {
dev_err(panel->dev, "failed to enable supply: %d\n", ret);
Expand Down Expand Up @@ -341,13 +329,8 @@ static int otm8009a_enable(struct drm_panel *panel)
{
struct otm8009a *ctx = panel_to_otm8009a(panel);

if (ctx->enabled)
return 0;

backlight_enable(ctx->bl_dev);

ctx->enabled = true;

return 0;
}

Expand Down

0 comments on commit 1e0465e

Please sign in to comment.