On Mon, Sep 13, 2021 at 06:57:20AM -0700, Doug Anderson wrote: > Hi, > > On Mon, Sep 13, 2021 at 6:51 AM Greg Kroah-Hartman > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > > > From: Douglas Anderson <dianders@xxxxxxxxxxxx> > > > > [ Upstream commit a70e558c151043ce46a5e5999f4310e0b3551f57 ] > > > > This is really just a revert of commit 58074b08c04a ("drm/bridge: > > ti-sn65dsi86: Read EDID blob over DDC"), resolving conflicts. > > > > The old code failed to read the EDID properly in a very important > > case: before the bridge's pre_enable() was called. The way things need > > to work: > > 1. Read the EDID. > > 2. Based on the EDID, decide on video settings and pixel clock. > > 3. Enable the bridge w/ the desired settings. > > > > The way things were working: > > 1. Try to read the EDID but fail; fall back to hardcoded values. > > 2. Based on hardcoded values, decide on video settings and pixel clock. > > 3. Enable the bridge w/ the desired settings. > > 4. Try again to read the EDID, it works now! > > 5. Realize that the hardcoded settings weren't quite right. > > 6. Disable / reenable the bridge w/ the right settings. > > > > The reasons for the failures were twofold: > > a) Since we never ran the bridge chip's pre-enable then we never set > > the bit to ignore HPD. This meant the bridge chip didn't even _try_ > > to go out on the bus and communicate with the panel. > > b) Even if we fixed things to ignore HPD, the EDID still wouldn't read > > if the panel wasn't on. > > > > Instead of reverting the code, we could fix it to set the HPD bit and > > also power on the panel. However, it also works nicely to just let the > > panel code read the EDID. Now that we've split the driver up we can > > expose the DDC AUX channel bus to the panel node. The panel can take > > charge of reading the EDID. > > > > NOTE: in order for things to work, anyone that needs to read the EDID > > will need to instantiate their panel using the new DP AUX bus (AKA by > > listing their panel under the "aux-bus" node of the bridge chip in the > > device tree). > > > > In the future if we want to use the bridge chip to provide a full > > external DP port (which won't have a panel) then we will have to > > conditinally add EDID reading back in. > > > > Suggested-by: Andrzej Hajda <a.hajda@xxxxxxxxxxx> > > Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx> > > Reviewed-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > > Link: https://patchwork.freedesktop.org/patch/msgid/20210611101711.v10.9.I9330684c25f65bb318eff57f0616500f83eac3cc@changeid > > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > > --- > > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 22 ---------------------- > > 1 file changed, 22 deletions(-) > > I guess it's not a huge deal, but I did respond to Sasha and request > that this patch be dropped from the stable queue unless the whole big > pile of patches was being backported. See: > > https://lore.kernel.org/lkml/CAD=FV=U2dGjeEzp+K1vnLTj8oPJ-GKBTTKz2XQ1OZ7QF_sTHuw@xxxxxxxxxxxxxx/ > > I said: > > > I would suggest against backporting this one unless you're going to > > backport the whole pile of DP AUX bus patches, which probably doesn't > > make sense for stable. Even though the old EDID reading was broken for > > the first read, it still worked for later reads. ...and the first read > . didn't crash or anything--it just timed out. I see a "bunch" of patches for this driver in this -rc, did Sasha not get them all? If not, I can drop this one, but maybe it was needed for the follow-on patches? thanks, greg k-h