нд, 23 лют. 2025 р. о 14:14 Dang Huynh <[email protected]> пише: > > This allows video drivers to obtain display timings from the video > bridge. > > Signed-off-by: Dang Huynh <[email protected]> > --- > drivers/video/rockchip/dw_mipi_dsi_rockchip.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/drivers/video/rockchip/dw_mipi_dsi_rockchip.c > b/drivers/video/rockchip/dw_mipi_dsi_rockchip.c > index > 95e825eb3d6de7ef2836fa029927034394486e9c..d21ea7953a6003fa49da3e22220d3312109f600c > 100644 > --- a/drivers/video/rockchip/dw_mipi_dsi_rockchip.c > +++ b/drivers/video/rockchip/dw_mipi_dsi_rockchip.c > @@ -224,6 +224,7 @@ struct dw_rockchip_dsi_priv { > struct mipi_dsi_device device; > void __iomem *base; > struct udevice *panel; > + struct display_timing timings; > void __iomem *grf; > > /* Optional external dphy */ > @@ -709,7 +710,7 @@ static int dw_mipi_dsi_rockchip_attach(struct udevice > *dev) > struct dw_rockchip_dsi_priv *priv = dev_get_priv(dev); > struct mipi_dsi_device *device = &priv->device; > struct mipi_dsi_panel_plat *mplat; > - struct display_timing timings; > + struct display_timing *timings = &priv->timings; > int ret; > > ret = uclass_first_device_err(UCLASS_PANEL, &priv->panel); > @@ -724,10 +725,10 @@ static int dw_mipi_dsi_rockchip_attach(struct udevice > *dev) > device->format = mplat->format; > device->mode_flags = mplat->mode_flags; > > - ret = panel_get_display_timing(priv->panel, &timings); > + ret = panel_get_display_timing(priv->panel, timings); > if (ret) { > ret = ofnode_decode_display_timing(dev_ofnode(priv->panel), > - 0, &timings); > + 0, timings); > if (ret) { > dev_err(dev, "decode display timing error %d\n", ret); > return ret; > @@ -740,7 +741,7 @@ static int dw_mipi_dsi_rockchip_attach(struct udevice > *dev) > return ret; > } > > - ret = dsi_host_init(priv->dsi_host, device, &timings, 4, > + ret = dsi_host_init(priv->dsi_host, device, timings, 4, > &dsi_rockchip_phy_ops); > if (ret) { > dev_err(dev, "failed to initialize mipi dsi host\n"); > @@ -902,9 +903,19 @@ static int dw_mipi_dsi_rockchip_probe(struct udevice > *dev) > return 0; > } > > +static int dw_mipi_dsi_rockchip_get_dt(struct udevice *dev, > + struct display_timing *timings) > +{ > + struct dw_rockchip_dsi_priv *priv = dev_get_priv(dev); > + > + memcpy(timings, &priv->timings, sizeof(*timings)); > + return 0; > +} > + > struct video_bridge_ops dw_mipi_dsi_rockchip_ops = { > .attach = dw_mipi_dsi_rockchip_attach, > .set_backlight = dw_mipi_dsi_rockchip_set_bl, > + .get_display_timing = dw_mipi_dsi_rockchip_get_dt, > }; > > static const struct rockchip_dw_dsi_chip_data rk3399_chip_data[] = { > > -- > 2.48.1 >
Reviewed-by: Svyatoslav Ryhel <[email protected]>

