DRM/KMS experimental drivers for HiKey 970

Mauro Carvalho Chehab mchehab+huawei at kernel.org
Mon Aug 17 13:03:49 UTC 2020


Hi Daniel,

Em Wed, 5 Aug 2020 13:04:18 +0200
Daniel Vetter <daniel at ffwll.ch> escreveu:


> > > > I've been working to get upstream support for the DRM driver on HiKey 970.
> > > >
> > > > While the patches are not ready yet for upstream merge, I'm placing
> > > > what I've sone so far on this repository:
> > > >
> > > >         https://github.com/mchehab/linux/tree/hikey970/to_upstream-2.0-v1.1

I already started the process of submitting the pending drivers which
are required for the DRM driver to work (regulators and IOMMU).

I'm now planning what to do with the DRM KMS driver. This driver is
somewhat similar to the Kirin 6220 driver, but the display engine
uses a different set of registers which are chipset specific. My
port should work with either Kirin 960 or 970, although, so far,
I tested only the Kirin 970 part.

Besides its size, the driver is pretty much a standard KMS driver
that uses emulation framebuffer.

Yet, as I said before, it currently has some bugs that are hard to
debug and fix, as the downstream version also has them.

John has a different port, which works only for Kirin 960, adding
some functionality on the existing Kirin 6220 driver. Based on the
history on his WIP tree, it sounds to me that the same bugs I'm
facing are also present on his port. 

The known bugs are:

- EDID reads via adv7135 don't work properly. Adding a delay on
  some part of adv7135 code may help, but that sounds to me more
  like a hack than a final solution;

- There are some underflows on a something called LDI. This is the
  worse bug, as, once it happens, the hardware stops changing the
  displayed image. At John's tree for Kirin 960, there were several
  attempts (and several reverts), trying to address it. Based on a comment
  at the downstream version, at least for Kirin 970 I suspect that this could
  be due to a too low clock frequency, but increasing it alone breaks the 
  driver. I suspect that other clock frequencies would need to be adjusted,
  but I don't know how to adjust the other clocks for it to work with a
  higher frequency;

- There's currently a hack at the valid modesetting logic; only
  modes that are known to work return MODE_OK. 	 

I'm planning to test my port on Kirin 960 soon, and ensure that the
DRM driver will work for both chipsets.

In the future, I'm planning to try merging support for all 3 Kirin
variants at the same driver, probably using part of John's approach
for Kirin 960.

In any case, considering the existing bugs, plus the eventual future
work in order to support multiple Kirin variants at the same driver,
I would prefer merging this driver first at staging. 

Would that be acceptable?

Thanks,
Mauro


More information about the dri-devel mailing list