lkml.org 
[lkml]   [2017]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 1/3] drm/exynos: mic: Add mode_set callback function
    Date
    Before applying the patch, used the of_get_videomode function to
    parse the display-timings in the panel which is the child driver
    of dsi in the devicetree. this is wrong. So removed the
    of_get_videomode and fixed to get videomode struct through
    mode_set callback function.

    Signed-off-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
    ---
    drivers/gpu/drm/exynos/exynos_drm_mic.c | 33 ++++++++++++++++++++++-----------
    1 file changed, 22 insertions(+), 11 deletions(-)

    diff --git a/drivers/gpu/drm/exynos/exynos_drm_mic.c b/drivers/gpu/drm/exynos/exynos_drm_mic.c
    index a0def0b..9a50ceb 100644
    --- a/drivers/gpu/drm/exynos/exynos_drm_mic.c
    +++ b/drivers/gpu/drm/exynos/exynos_drm_mic.c
    @@ -286,13 +286,6 @@ static int parse_dt(struct exynos_mic *mic)
    }
    nodes[j++] = remote_node;

    - ret = of_get_videomode(remote_node,
    - &mic->vm, 0);
    - if (ret) {
    - DRM_ERROR("mic: failed to get videomode");
    - goto exit;
    - }
    -
    break;
    default:
    DRM_ERROR("mic: Unknown endpoint from MIC");
    @@ -329,6 +322,27 @@ static void mic_post_disable(struct drm_bridge *bridge)
    mutex_unlock(&mic_mutex);
    }

    +static void mic_mode_set(struct drm_bridge *bridge,
    + struct drm_display_mode *mode,
    + struct drm_display_mode *adjusted_mode)
    +{
    + struct exynos_mic *mic = bridge->driver_private;
    +
    + mutex_lock(&mic_mutex);
    + if (mic->enabled)
    + goto already_enabled;
    +
    + drm_display_mode_to_videomode(mode, &mic->vm);
    +
    + if (!mic->i80_mode)
    + mic_set_porch_timing(mic);
    + mic_set_img_size(mic);
    + mic_set_output_timing(mic);
    +
    +already_enabled:
    + mutex_unlock(&mic_mutex);
    +}
    +
    static void mic_pre_enable(struct drm_bridge *bridge)
    {
    struct exynos_mic *mic = bridge->driver_private;
    @@ -355,10 +369,6 @@ static void mic_pre_enable(struct drm_bridge *bridge)
    goto turn_off_clks;
    }

    - if (!mic->i80_mode)
    - mic_set_porch_timing(mic);
    - mic_set_img_size(mic);
    - mic_set_output_timing(mic);
    mic_set_reg_on(mic, 1);
    mic->enabled = 1;
    mutex_unlock(&mic_mutex);
    @@ -377,6 +387,7 @@ static void mic_enable(struct drm_bridge *bridge) { }
    static const struct drm_bridge_funcs mic_bridge_funcs = {
    .disable = mic_disable,
    .post_disable = mic_post_disable,
    + .mode_set = mic_mode_set,
    .pre_enable = mic_pre_enable,
    .enable = mic_enable,
    };
    --
    1.9.1
    \
     
     \ /
      Last update: 2017-01-04 08:01    [W:2.643 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site