Message ID | 20230118081658.2198520-1-dmitry.baryshkov@linaro.org |
---|---|
Headers | show |
Series | drm/bridge: lt9611: several fixes and improvements | expand |
On 18/01/2023 09:16, Dmitry Baryshkov wrote: > The lt9611 bridge can support different modes, it makes no sense to list > them in the table. Drop the table and check the number of interfaces > using the fixed value. > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > drivers/gpu/drm/bridge/lontium-lt9611.c | 49 ++++++------------------- > 1 file changed, 12 insertions(+), 37 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/bridge/lontium-lt9611.c > index 82af1f954cc6..c2cd36d926a0 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9611.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c > @@ -84,24 +84,6 @@ static const struct regmap_config lt9611_regmap_config = { > .num_ranges = ARRAY_SIZE(lt9611_ranges), > }; > > -struct lt9611_mode { > - u16 hdisplay; > - u16 vdisplay; > - u8 vrefresh; > - u8 lanes; > - u8 intfs; > -}; > - > -static struct lt9611_mode lt9611_modes[] = { > - { 3840, 2160, 30, 4, 2 }, /* 3840x2160 24bit 30Hz 4Lane 2ports */ > - { 1920, 1080, 60, 4, 1 }, /* 1080P 24bit 60Hz 4lane 1port */ > - { 1920, 1080, 30, 3, 1 }, /* 1080P 24bit 30Hz 3lane 1port */ > - { 1920, 1080, 24, 3, 1 }, > - { 720, 480, 60, 4, 1 }, > - { 720, 576, 50, 2, 1 }, > - { 640, 480, 60, 2, 1 }, > -}; > - > static struct lt9611 *bridge_to_lt9611(struct drm_bridge *bridge) > { > return container_of(bridge, struct lt9611, bridge); > @@ -603,21 +585,6 @@ static int lt9611_regulator_enable(struct lt9611 *lt9611) > return 0; > } > > -static struct lt9611_mode *lt9611_find_mode(const struct drm_display_mode *mode) > -{ > - int i; > - > - for (i = 0; i < ARRAY_SIZE(lt9611_modes); i++) { > - if (lt9611_modes[i].hdisplay == mode->hdisplay && > - lt9611_modes[i].vdisplay == mode->vdisplay && > - lt9611_modes[i].vrefresh == drm_mode_vrefresh(mode)) { > - return <9611_modes[i]; > - } > - } > - > - return NULL; > -} > - > static enum drm_connector_status lt9611_bridge_detect(struct drm_bridge *bridge) > { > struct lt9611 *lt9611 = bridge_to_lt9611(bridge); > @@ -832,12 +799,20 @@ static enum drm_mode_status lt9611_bridge_mode_valid(struct drm_bridge *bridge, > const struct drm_display_info *info, > const struct drm_display_mode *mode) > { > - struct lt9611_mode *lt9611_mode = lt9611_find_mode(mode); > struct lt9611 *lt9611 = bridge_to_lt9611(bridge); > > - if (!lt9611_mode) > - return MODE_BAD; > - else if (lt9611_mode->intfs > 1 && !lt9611->dsi1) > + if (mode->hdisplay > 3840) > + return MODE_BAD_HVALUE; > + > + if (mode->vdisplay > 2160) > + return MODE_BAD_VVALUE; > + > + if (mode->hdisplay == 3840 && > + mode->vdisplay == 2160 && > + drm_mode_vrefresh(mode) > 30) > + return MODE_CLOCK_HIGH; > + > + if (mode->hdisplay > 2000 && !lt9611->dsi1_node) > return MODE_PANEL; > else > return MODE_OK; Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Hi, On Wed, 18 Jan 2023 10:16:45 +0200, Dmitry Baryshkov wrote: > A series of patches to fix mode programming for the Lontium lt9611 > DSI-to-HDMI bridge (found e.g. on the Thundercomm RB3/Dragonboard845c > platform). > > Changes since v2: > - Rewrote mode_valid callback to be more explicit. > > [...] Thanks, Applied to https://anongit.freedesktop.org/git/drm/drm-misc.git (drm-misc-next) [01/13] drm/bridge: lt9611: fix sleep mode setup https://cgit.freedesktop.org/drm/drm-misc/commit/?id=ae2d329f104b75a0a78dcaded29fe6283289cdf9 [02/13] drm/bridge: lt9611: fix HPD reenablement https://cgit.freedesktop.org/drm/drm-misc/commit/?id=a7790f6bd38f3642b60ae3504a2c749135b89451 [03/13] drm/bridge: lt9611: fix polarity programming https://cgit.freedesktop.org/drm/drm-misc/commit/?id=0b157efa384ea417304b1da284ee2f603c607fc3 [04/13] drm/bridge: lt9611: fix programming of video modes https://cgit.freedesktop.org/drm/drm-misc/commit/?id=ad188aa47edaa033a270e1a3efae43836ff47569 [05/13] drm/bridge: lt9611: fix clock calculation https://cgit.freedesktop.org/drm/drm-misc/commit/?id=2576eb26494eb0509dd9ceb0cd27771a7a5e3674 [06/13] drm/bridge: lt9611: pass a pointer to the of node https://cgit.freedesktop.org/drm/drm-misc/commit/?id=b0a7f8736789935f62d6df32d441cdf05a5c05d2 [07/13] drm/bridge: lt9611: rework the mode_set function https://cgit.freedesktop.org/drm/drm-misc/commit/?id=fad97f2811933085adb3dc3b13b2e1cf985295b1 [08/13] drm/bridge: lt9611: attach to the next bridge https://cgit.freedesktop.org/drm/drm-misc/commit/?id=0c3997b0fec74a828ef258851e2fb260e3e7620c [09/13] drm/bridge: lt9611: fix sync polarity for DVI output https://cgit.freedesktop.org/drm/drm-misc/commit/?id=0c7474694849b44cfdf4e22b41e8f3eb85d78709 [10/13] drm/bridge: lt9611: simplify video timings programming https://cgit.freedesktop.org/drm/drm-misc/commit/?id=6b089d5e35d6daf3d348a3fbd8974d4ed896a231 [11/13] drm/bridge: lt9611: rework infoframes handling https://cgit.freedesktop.org/drm/drm-misc/commit/?id=84cf74d99f88bc476678254310baffddfba68bb6 [12/13] drm/bridge: lt9611: stop filtering modes via the table https://cgit.freedesktop.org/drm/drm-misc/commit/?id=4914cbc4fbadf0a3bcad9b0b09b3d8005a3dcd9e [13/13] drm/bridge: lt9611: properly program the dual host mode https://cgit.freedesktop.org/drm/drm-misc/commit/?id=5e83f359d9805b3561f160afafddfa7572155d1c