This is preparation for addition of generic eDP panel that
doesn't have any modes or delays defined.

Signed-off-by: Vasily Khoruzhick <anars...@gmail.com>
---
 drivers/gpu/drm/panel/panel-simple.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-simple.c 
b/drivers/gpu/drm/panel/panel-simple.c
index 9c69e739a524..2f2cb2d81f2b 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -176,7 +176,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;
@@ -195,7 +195,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;
@@ -220,11 +220,13 @@ static int panel_simple_prepare(struct drm_panel *panel)
 
        gpiod_set_value_cansleep(p->enable_gpio, 1);
 
-       delay = p->desc->delay.prepare;
-       if (p->no_hpd)
-               delay += p->desc->delay.hpd_absent_delay;
-       if (delay)
-               msleep(delay);
+       if (p->desc) {
+               delay = p->desc->delay.prepare;
+               if (p->no_hpd)
+                       delay += p->desc->delay.hpd_absent_delay;
+               if (delay)
+                       msleep(delay);
+       }
 
        p->prepared = true;
 
@@ -238,7 +240,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) {
@@ -280,6 +282,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;
 
-- 
2.20.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to