drm/bridge: Synopsys DW-HDMI bridge driver for the Ingenic JZ4780 (was Re: Specialising the Synopsys DW-HDMI bridge driver for the Ingenic JZ4780)
Paul Cercueil
paul at crapouillou.net
Fri Aug 21 22:24:11 UTC 2020
Le sam. 22 août 2020 à 0:11, Paul Boddie <paul at boddie.org.uk> a
écrit :
> On Friday, 21 August 2020 15:32:46 CEST Ezequiel Garcia wrote:
>> On Thu, 20 Aug 2020 at 19:49, Paul Boddie <paul at boddie.org.uk>
>> wrote:
>> >
>> > It still doesn't work for me. I still get "Input not supported"
>> from my
>> > monitor. It is a DVI monitor connected via a HDMI adapter, but
>> EDID
>> > probing
>> > works and, as I noted previously, the HDMI/LCDC can be made to
>> work (and
>> > obviously did work in the 3.18 kernel).
>>
>> This means the dw_hdmi encoder driver is still not good enough
>> to support your adapter. I haven't yet compared v3.18 vendor
>> with our version, but I'm afraid that the dw_hdmi stack has
>> probably changed quite a bit, so a comparison will be difficult.
>
> I would have to look at this again to check, but although I may have
> referred
> to the 3.18 HDMI driver (drivers/gpu/drm/jz4780/dwc_hdmi.c), I'm
> fairly sure I
> used the more recent driver
> (drivers/gpu/drm/bridge/synopsys/dw_hdmi.c) as my
> primary reference when making the hardware work with the L4 Runtime
> Environment. But the actual functionality with regard to setting
> registers in
> the HDMI peripheral is mostly identical between both forms of the
> driver.
>
> (This makes sense because few people are likely to have access to the
> proprietary documentation. In fact, few people are likely to have
> even tried
> to deduce what is doing on. One of the register value tables suggests
> that one
> of the values would really need to be different, if you consider the
> patterns
> involved, which means that either the documentation mentions this
> special case
> or that a mistake has been made that has not yet been exposed through
> real
> world use.)
>
>> The natural debug path for me would be to checkout v3.18,
>> connect your DVI monitor and make a dump of all the
>> dw_hdmi registers, then make the same dump for our
>> mainline kernel -- making sure we are comparing the same
>> mode.
>
> It is possible that something does not get initialised in the same
> way, and
> Nikolaus and I have been working with register dumps, although I
> haven't been
> generating them myself within Linux. So it is possible that I am
> missing some
> misconfiguration in the driver that causes an incompatibility with my
> monitor.
>
> It should be noted that the initialisation is simpler with the DVI
> mode,
> thankfully. The "AVI infoframe" stuff (going from memory) is
> completely
> skipped, as are a range of other things, which made my
> reimplementation effort
> somewhat quicker. I also didn't bother with the audio functionality,
> but then
> I don't think DVI has any audio channels, either.
>
> One reason for implementing drivers for L4Re was to determine what is
> actually
> needed to initialise the hardware correctly, doing so in an
> environment that
> has been quicker to test than Linux has been (given some very old
> development
> hardware I have been using until recently). Another reason is that I
> actually
> want to get the CI20 hardware working with L4Re, which it was
> originally
> supposed to do, but in fact that effort was never actually finished.
>
>> > I downloaded it from here:
>> >
>> >
>> https://gitlab.collabora.com/linux/0day/-/tree/jz4780-drm-hdmi-v5.9-rc1
>> >
>> > (I was going to clone the repository late last night, but it was
>> taking a
>> > long time and I also didn't want to clone everything yet again.)
>>
>> If you want to avoid cloning the same things over and over
>> you can use git-clone --reference. And if you want to checkout
>> just a single branch, git now has --single-branch.
>>
>> For instance, (assuming a torvalds/ local repo):
>>
>> git clone -b letux/jz4780-hdmi-v4 --single-branch
>> git://git.goldelico.com/letux-kernel.git --reference torvalds/ letux
>
> Thanks for the tip! I guess I will spare everyone my thoughts about
> git's
> never-ending usability deficit.
>
> [...]
>
>> > It would be nice to reconcile the JZ4780 support with the evolving
>> > upstream support, accommodating the extended descriptors and the
>> extra
>> > register usage.
>> I think that's already done in the patches I've cleaned up.
>> The only thing left to check is plane offset and overlay enablement.
>
> There are some things that are done in different places, like various
> registers being set in particular "atomic" methods and not during
> probing.
> Also, the upstream driver has specific plane descriptors whereas my
> own
> modifications introduced dual descriptors in a slightly different
> way. Plus,
> the upstream driver doesn't support extended descriptors, as far as I
> am
> aware.
>
> So, unless Paul Cercueil is fine with what you have done, I don't
> think we are
> close to integrating anything. Then again, I am not really a Linux
> kernel
> developer, so perhaps I won't comment in depth about what the
> requirements
> might be.
If you send clean patches, there's no reason for me not to merge them.
>> > P.S. I noticed a few problems with the 5.9-rc1 branches such as
>> powering
>> > down not actually removing the power and, in my own branch,
>> networking
>> > not working reliably (or maybe even at all), with the tedious
>> progress
>> > indicator never terminating in the boot sequence. So, once again,
>> it is
>> > another case of half a step forwards and about three steps back.
>>
>> Life (and kernel) is like this: sometimes you need to take three
>> steps
>> back to make a jump forward :-)
That's pretty much expected for a -rc1 release. Wait until -rc3 or -rc4
to have something more or less stable.
Cheers,
-Paul
> Well, I wish I could be so optimistic. Objectively, the whole Linux
> kernel
> development process is just so poor when we consider that we started
> out in
> 2014 or earlier with software that actually worked with the hardware,
> but
> since it wasn't written quite to everybody's tastes and in line with
> the
> fashions of the day, the whole exercise of reworking it was thrown
> straight
> back at the developers. And since the developers were only being paid
> for as
> long as their employers were interested, which turned out not to last
> particularly long, we all ended up with yet another piece of
> equipment which
> risks becoming obsolete unnecessarily.
>
> Of course I would probably benefit from upstreamed support for the
> CI20,
> although I was actually fairly happy using the 3.18 kernel with a
> relatively
> recent Debian version, and we might not yet be at the point where new
> Debian
> releases don't work with such an old kernel. But for the most part I
> don't
> really care personally about fixing up Linux support for such
> hardware because
> my own interests lie elsewhere. I suppose the most I get out of it is
> looking
> at how the hardware works and being in a stronger position to
> reimplement the
> driver support for L4Re. Indeed, I got the RTC support working in
> L4Re in
> order to troubleshoot the Linux drivers, although they still seem to
> be
> pathologically unable to handle the "lost clock" condition that is
> hardly
> unlikely on the CI20.
>
> Yet at the same time, I always manage to feel guilty asking for
> cooperation to
> get improvements made to Linux, spending quite a bit of my own
> personal time
> working with the underdocumented frameworks involved, building,
> deploying,
> testing, and so on. And this is just my own way of offering help to
> others who
> might not be in quite the same position, technically, to improve a
> situation
> that might be far more important to them. Whatever little
> satisfaction I might
> get from helping out tends to get completely overwhelmed by the
> amount of
> effort, frustration and time involved.
>
> Anyway, sorry for the rant. I'm sure other people find their own
> activities of
> this nature to be sufficiently fulfilling and enjoyable. Life does
> present us
> all with setbacks, but I generally don't appreciate getting served up
> with
> more of them just so that some people in the Valley or wherever can
> "have fun"
> or whatever the mantra is these days.
>
> Paul
>
>
More information about the dri-devel
mailing list