On Thu, Aug 10, 2023 at 8:32 AM Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> wrote: > > atomic_get_input_bus_fmts is only implemented for LVDS decoders, resulting > that LVDS encoders only support bus format MEDIA_BUS_FMT_FIXED. This > results in warnings like: > mxsfb 21c8000.lcdif: Bridge does not provide bus format, assuming > MEDIA_BUS_FMT_RGB888_1X24. > Please fix bridge driver by handling atomic_get_input_bus_fmts. > > Fix this by reusing lvds_codec_atomic_get_input_bus_fmts currently used > for LVDS decoders. Use RGB888_1X24 for LVDS encoders. This also allows > removing the dedicated struct drm_bridge_funcs for decoders. > > Signed-off-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> > --- > > Notes: > Currently all supported LVDS encoders (ti,ds90c185, ti,ds90c187 and > ti,sn75lvds83) only support RGB888_1X24. > > drivers/gpu/drm/bridge/lvds-codec.c | 12 ++++-------- > 1 file changed, 4 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/lvds-codec.c b/drivers/gpu/drm/bridge/lvds-codec.c > index 8c5668dca0c4b..991732c4b6298 100644 > --- a/drivers/gpu/drm/bridge/lvds-codec.c > +++ b/drivers/gpu/drm/bridge/lvds-codec.c > @@ -5,6 +5,7 @@ > */ > > #include <linux/gpio/consumer.h> > +#include <linux/media-bus-format.h> > #include <linux/module.h> > #include <linux/of.h> > #include <linux/of_graph.h> > @@ -71,12 +72,6 @@ static void lvds_codec_disable(struct drm_bridge *bridge) > "Failed to disable regulator \"vcc\": %d\n", ret); > } > > -static const struct drm_bridge_funcs funcs = { > - .attach = lvds_codec_attach, > - .enable = lvds_codec_enable, > - .disable = lvds_codec_disable, > -}; > - > #define MAX_INPUT_SEL_FORMATS 1 > static u32 * > lvds_codec_atomic_get_input_bus_fmts(struct drm_bridge *bridge, > @@ -102,7 +97,7 @@ lvds_codec_atomic_get_input_bus_fmts(struct drm_bridge *bridge, > return input_fmts; > } > > -static const struct drm_bridge_funcs funcs_decoder = { > +static const struct drm_bridge_funcs funcs = { > .attach = lvds_codec_attach, > .enable = lvds_codec_enable, > .disable = lvds_codec_disable, > @@ -184,8 +179,9 @@ static int lvds_codec_probe(struct platform_device *pdev) > return ret; > } else { > lvds_codec->bus_format = ret; > - lvds_codec->bridge.funcs = &funcs_decoder; > } > + } else { > + lvds_codec->bus_format = MEDIA_BUS_FMT_RGB888_1X24; > } > > /* Reviewed-by: Robert Foss <rfoss@xxxxxxxxxx>