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.