lkml.org 
[lkml]   [2019]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 3/4] drm/connector: Split out orientation quirk detection
    Date
    Not every platform needs quirk detection for panel orientation, so
    split the drm_connector_init_panel_orientation_property into two
    functions. One for platforms without the need for quirks, and the
    other for platforms that need quirks.

    Signed-off-by: Derek Basehore <dbasehore@chromium.org>
    ---
    drivers/gpu/drm/drm_connector.c | 45 ++++++++++++++++++-------
    drivers/gpu/drm/i915/display/intel_dp.c | 4 +--
    drivers/gpu/drm/i915/display/vlv_dsi.c | 2 +-
    include/drm/drm_connector.h | 2 ++
    4 files changed, 38 insertions(+), 15 deletions(-)

    diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
    index b3f2cf7eae9c..52777d647494 100644
    --- a/drivers/gpu/drm/drm_connector.c
    +++ b/drivers/gpu/drm/drm_connector.c
    @@ -1892,31 +1892,23 @@ EXPORT_SYMBOL(drm_connector_set_vrr_capable_property);
    * drm_connector_init_panel_orientation_property -
    * initialize the connecters panel_orientation property
    * @connector: connector for which to init the panel-orientation property.
    - * @width: width in pixels of the panel, used for panel quirk detection
    - * @height: height in pixels of the panel, used for panel quirk detection
    *
    * This function should only be called for built-in panels, after setting
    * connector->display_info.panel_orientation first (if known).
    *
    - * This function will check for platform specific (e.g. DMI based) quirks
    - * overriding display_info.panel_orientation first, then if panel_orientation
    - * is not DRM_MODE_PANEL_ORIENTATION_UNKNOWN it will attach the
    - * "panel orientation" property to the connector.
    + * This function will check if the panel_orientation is not
    + * DRM_MODE_PANEL_ORIENTATION_UNKNOWN. If not, it will attach the "panel
    + * orientation" property to the connector.
    *
    * Returns:
    * Zero on success, negative errno on failure.
    */
    int drm_connector_init_panel_orientation_property(
    - struct drm_connector *connector, int width, int height)
    + struct drm_connector *connector)
    {
    struct drm_device *dev = connector->dev;
    struct drm_display_info *info = &connector->display_info;
    struct drm_property *prop;
    - int orientation_quirk;
    -
    - orientation_quirk = drm_get_panel_orientation_quirk(width, height);
    - if (orientation_quirk != DRM_MODE_PANEL_ORIENTATION_UNKNOWN)
    - info->panel_orientation = orientation_quirk;

    if (info->panel_orientation == DRM_MODE_PANEL_ORIENTATION_UNKNOWN)
    return 0;
    @@ -1939,6 +1931,35 @@ int drm_connector_init_panel_orientation_property(
    }
    EXPORT_SYMBOL(drm_connector_init_panel_orientation_property);

    +/**
    + * drm_connector_init_panel_orientation_property_quirk -
    + * initialize the connecters panel_orientation property with a quirk
    + * override
    + * @connector: connector for which to init the panel-orientation property.
    + * @width: width in pixels of the panel, used for panel quirk detection
    + * @height: height in pixels of the panel, used for panel quirk detection
    + *
    + * This function will check for platform specific (e.g. DMI based) quirks
    + * overriding display_info.panel_orientation first, then if panel_orientation
    + * is not DRM_MODE_PANEL_ORIENTATION_UNKNOWN it will attach the
    + * "panel orientation" property to the connector.
    + *
    + * Returns:
    + * Zero on success, negative errno on failure.
    + */
    +int drm_connector_init_panel_orientation_property_quirk(
    + struct drm_connector *connector, int width, int height)
    +{
    + int orientation_quirk;
    +
    + orientation_quirk = drm_get_panel_orientation_quirk(width, height);
    + if (orientation_quirk != DRM_MODE_PANEL_ORIENTATION_UNKNOWN)
    + connector->display_info.panel_orientation = orientation_quirk;
    +
    + return drm_connector_init_panel_orientation_property(connector);
    +}
    +EXPORT_SYMBOL(drm_connector_init_panel_orientation_property_quirk);
    +
    int drm_connector_set_obj_prop(struct drm_mode_object *obj,
    struct drm_property *property,
    uint64_t value)
    diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
    index 0bdb7ecc5a81..975196c86e50 100644
    --- a/drivers/gpu/drm/i915/display/intel_dp.c
    +++ b/drivers/gpu/drm/i915/display/intel_dp.c
    @@ -7063,8 +7063,8 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
    intel_panel_setup_backlight(connector, pipe);

    if (fixed_mode)
    - drm_connector_init_panel_orientation_property(
    - connector, fixed_mode->hdisplay, fixed_mode->vdisplay);
    + drm_connector_init_panel_orientation_property_quirk(connector,
    + fixed_mode->hdisplay, fixed_mode->vdisplay);

    return true;

    diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
    index e272d826210a..dd7fa806f95c 100644
    --- a/drivers/gpu/drm/i915/display/vlv_dsi.c
    +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
    @@ -1662,7 +1662,7 @@ static void intel_dsi_add_properties(struct intel_connector *connector)

    connector->base.display_info.panel_orientation =
    vlv_dsi_get_panel_orientation(connector);
    - drm_connector_init_panel_orientation_property(
    + drm_connector_init_panel_orientation_property_quirk(
    &connector->base,
    connector->panel.fixed_mode->hdisplay,
    connector->panel.fixed_mode->vdisplay);
    diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
    index ca745d9feaf5..940254b06767 100644
    --- a/include/drm/drm_connector.h
    +++ b/include/drm/drm_connector.h
    @@ -1512,6 +1512,8 @@ void drm_connector_set_link_status_property(struct drm_connector *connector,
    void drm_connector_set_vrr_capable_property(
    struct drm_connector *connector, bool capable);
    int drm_connector_init_panel_orientation_property(
    + struct drm_connector *connector);
    +int drm_connector_init_panel_orientation_property_quirk(
    struct drm_connector *connector, int width, int height);
    int drm_connector_attach_max_bpc_property(struct drm_connector *connector,
    int min, int max);
    --
    2.22.0.410.gd8fdbe21b5-goog
    \
     
     \ /
      Last update: 2019-07-10 04:18    [W:4.967 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site