Re: DRM Driver implementation question

From: Laurent Pinchart
Date: Wed Sep 18 2019 - 09:03:45 EST


Hi Gareth,

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.

--
Regards,

Laurent Pinchart