DRM Driver implementation question
laurent.pinchart at ideasonboard.com
Wed Sep 18 13:03:31 UTC 2019
Sorry for the delayed response, I was travelling for the Linux Plumbers
Conference followed by a code camp.
On Tue, Sep 17, 2019 at 03:27:34PM +0000, Gareth Williams wrote:
> Hi Yoshihiro,
> This looks like an elegant solution that I can implement.
> Many thanks for pointing me in a good direction.
> > From: Yoshihiro Shimoda, Sent: Tuesday, September 17, 2019 05:39 PM
> > Hi Gareth,
> > > From: Gareth Williams, Sent: Monday, September 16, 2019 10:56 PM
> > >
> > > Hi Laurent/Kieran,
> > >
> > > I need to upstream a driver for a display controller that within its
> > > registers memory region contains registers related to a PWM
> > > device. The PWM device is for controlling the backlight of the
> > > display.
> > >
> > > Ideally, I would like to create a separated driver for the PWM, so
> > > that I can re-use "pwm-backlight", but since the registers for the PWM
> > > are right in the middle of the registers for the display
> > > controller I would need to ioremap the memory region for the PWM
> > > registers region twice, once from the display controller driver,
> > > and once from the PWM driver.
> > >
> > > Do you think that the double ioremap would be acceptable upstream?
> > I think that an MFD driver can support such hardware. I checked
> > Documentation/devicetree/bindings/mfd roughly, and then atmel-hlcdc.txt
> > seems to have a display controller and a PWM device.
While MFD should technically work, I think it's quite overkill. You
could instead bundle both the display controller and the PWM controller
in the same driver. The driver would create both a DRM/KMS device and a
PWM device. The DT node for your device would contain a #pwm-cells
property and could thus be referenced as a PWM controller by the
backlight using the pwms property.
More information about the dri-devel