diff options
author | Christoph Muellner <christoph.muellner@theobroma-systems.com> | 2019-04-04 18:06:04 +0200 |
---|---|---|
committer | Christoph Müllner <christophm30@gmail.com> | 2019-04-07 15:54:08 +0200 |
commit | a072cac7686dfd78afa3912ae308e42e8aae4a25 (patch) | |
tree | 036bd27e83afe737032e291f9333372436e31e70 /drivers | |
parent | 1afbd643c878c6b8c59a088b5ec1e781addd32a9 (diff) |
drm: panel: Add simple-panel driver.
In case of eDP connections, when we want to read out panel infos
via the EDID and don't know the actual connected panel in advance,
we need a way to specify this in the DTS.
This patch does so by a 'simple-panel' panel, which
does not have any hard-coded properties.
Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/panel/panel-simple.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 97964f7f2ace..53085093b1a8 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -172,7 +172,7 @@ static int panel_simple_disable(struct drm_panel *panel) backlight_update_status(p->backlight); } - if (p->desc->delay.disable) + if (p->desc && p->desc->delay.disable) msleep(p->desc->delay.disable); p->enabled = false; @@ -191,7 +191,7 @@ static int panel_simple_unprepare(struct drm_panel *panel) regulator_disable(p->supply); - if (p->desc->delay.unprepare) + if (p->desc && p->desc->delay.unprepare) msleep(p->desc->delay.unprepare); p->prepared = false; @@ -215,7 +215,7 @@ static int panel_simple_prepare(struct drm_panel *panel) gpiod_set_value_cansleep(p->enable_gpio, 1); - if (p->desc->delay.prepare) + if (p->desc && p->desc->delay.prepare) msleep(p->desc->delay.prepare); p->prepared = true; @@ -230,7 +230,7 @@ static int panel_simple_enable(struct drm_panel *panel) if (p->enabled) return 0; - if (p->desc->delay.enable) + if (p->desc && p->desc->delay.enable) msleep(p->desc->delay.enable); if (p->backlight) { @@ -272,6 +272,9 @@ static int panel_simple_get_timings(struct drm_panel *panel, struct panel_simple *p = to_panel_simple(panel); unsigned int i; + if (!p->desc) + return 0; + if (p->desc->num_timings < num_timings) num_timings = p->desc->num_timings; @@ -2325,6 +2328,9 @@ static const struct panel_desc winstar_wf35ltiacd = { static const struct of_device_id platform_of_match[] = { { + .compatible = "simple-panel", + .data = NULL, + }, { .compatible = "ampire,am-480272h3tmqw-t01h", .data = &ire_am_480272h3tmqw_t01h, }, { |