mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
drm/bridge: tc358767: Add format negotiation hooks for DPI/DSI to (e)DP
With new connector model, tc358767 will not create the connector, when DRM_BRIDGE_ATTACH_NO_CONNECTOR is set and display-controller driver will rely on format negotiation to setup the encoder format. Add the missing bus format negotiation hooks in the drm_bridge_funcs to complete DRM_BRIDGE_ATTACH_NO_CONNECTOR support. Output format, for DPI/DSI to DP, is selected to MEDIA_BUS_FMT_RGB888_1X24 as default, keeping in mind what the older model used to support. Reported-by: Jan Kiszka <jan.kiszka@siemens.com> Closes: https://lore.kernel.org/all/24282420-b4dd-45b3-bb1c-fc37fe4a8205@siemens.com/ Signed-off-by: Aradhya Bhatia <a-bhatia1@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Link: https://patchwork.freedesktop.org/patch/msgid/20231108-tc358767-v2-1-25c5f70a2159@ideasonboard.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
parent
fafc8cd097
commit
4b12f91a06
|
|
@ -1820,6 +1820,7 @@ static void tc_edp_bridge_detach(struct drm_bridge *bridge)
|
|||
}
|
||||
|
||||
#define MAX_INPUT_SEL_FORMATS 1
|
||||
#define MAX_OUTPUT_SEL_FORMATS 1
|
||||
|
||||
static u32 *
|
||||
tc_dpi_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
|
||||
|
|
@ -1845,6 +1846,28 @@ tc_dpi_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
|
|||
return input_fmts;
|
||||
}
|
||||
|
||||
static u32 *
|
||||
tc_edp_atomic_get_output_bus_fmts(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state,
|
||||
struct drm_crtc_state *crtc_state,
|
||||
struct drm_connector_state *conn_state,
|
||||
unsigned int *num_output_fmts)
|
||||
{
|
||||
u32 *output_fmts;
|
||||
|
||||
*num_output_fmts = 0;
|
||||
|
||||
output_fmts = kcalloc(MAX_OUTPUT_SEL_FORMATS, sizeof(*output_fmts),
|
||||
GFP_KERNEL);
|
||||
if (!output_fmts)
|
||||
return NULL;
|
||||
|
||||
output_fmts[0] = MEDIA_BUS_FMT_RGB888_1X24;
|
||||
*num_output_fmts = 1;
|
||||
|
||||
return output_fmts;
|
||||
}
|
||||
|
||||
static const struct drm_bridge_funcs tc_dpi_bridge_funcs = {
|
||||
.attach = tc_dpi_bridge_attach,
|
||||
.mode_valid = tc_dpi_mode_valid,
|
||||
|
|
@ -1871,6 +1894,8 @@ static const struct drm_bridge_funcs tc_edp_bridge_funcs = {
|
|||
.atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
|
||||
.atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
|
||||
.atomic_reset = drm_atomic_helper_bridge_reset,
|
||||
.atomic_get_input_bus_fmts = drm_atomic_helper_bridge_propagate_bus_fmt,
|
||||
.atomic_get_output_bus_fmts = tc_edp_atomic_get_output_bus_fmts,
|
||||
};
|
||||
|
||||
static bool tc_readable_reg(struct device *dev, unsigned int reg)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user