lkml.org 
[lkml]   [2023]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 5/8] drm/bridge: sii902x: Support format negotiation hooks
    Date
    With new connector model, sii902x will not create the connector, when
    DRM_BRIDGE_ATTACH_NO_CONNECTOR is set and SoC driver will rely on format
    negotiation to setup the encoder format.

    Support format negotiations hooks in the drm_bridge_funcs.
    Use helper functions for state management.

    Input format is selected to MEDIA_BUS_FMT_RGB888_1X24 as default, as is
    the case with older model.

    Signed-off-by: Aradhya Bhatia <a-bhatia1@ti.com>
    ---
    drivers/gpu/drm/bridge/sii902x.c | 26 ++++++++++++++++++++++++++
    1 file changed, 26 insertions(+)

    diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c
    index ef66461e7f7c..662b6cb4aa62 100644
    --- a/drivers/gpu/drm/bridge/sii902x.c
    +++ b/drivers/gpu/drm/bridge/sii902x.c
    @@ -473,6 +473,28 @@ static struct edid *sii902x_bridge_get_edid(struct drm_bridge *bridge,
    return sii902x_get_edid(sii902x, connector);
    }

    +static u32 *sii902x_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
    + struct drm_bridge_state *bridge_state,
    + struct drm_crtc_state *crtc_state,
    + struct drm_connector_state *conn_state,
    + u32 output_fmt,
    + unsigned int *num_input_fmts)
    +{
    + u32 *input_fmts;
    + u32 default_bus_format = MEDIA_BUS_FMT_RGB888_1X24;
    +
    + *num_input_fmts = 0;
    +
    + input_fmts = kcalloc(1, sizeof(*input_fmts), GFP_KERNEL);
    + if (!input_fmts)
    + return NULL;
    +
    + input_fmts[0] = default_bus_format;
    + *num_input_fmts = 1;
    +
    + return input_fmts;
    +}
    +
    static const struct drm_bridge_funcs sii902x_bridge_funcs = {
    .attach = sii902x_bridge_attach,
    .mode_set = sii902x_bridge_mode_set,
    @@ -480,6 +502,10 @@ static const struct drm_bridge_funcs sii902x_bridge_funcs = {
    .enable = sii902x_bridge_enable,
    .detect = sii902x_bridge_detect,
    .get_edid = sii902x_bridge_get_edid,
    + .atomic_reset = drm_atomic_helper_bridge_reset,
    + .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
    + .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
    + .atomic_get_input_bus_fmts = sii902x_bridge_atomic_get_input_bus_fmts,
    };

    static int sii902x_mute(struct sii902x *sii902x, bool mute)
    --
    2.40.1
    \
     
     \ /
      Last update: 2023-05-09 11:31    [W:2.468 / U:0.452 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site