Message ID | 20190228220756.20262-2-paul@crapouillou.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Ingenic JZ47xx KMS driver | expand |
Hi Paul. Good to see work migrating fbdev => drm. Following comments is based on experience while working on migrating another driver from fbdev => drm. On Thu, Feb 28, 2019 at 07:07:54PM -0300, Paul Cercueil wrote: > Add documentation for the devicetree bindings of the DRM driver for the > JZ47xx family of SoCs from Ingenic. > > Signed-off-by: Paul Cercueil <paul@crapouillou.net> > Tested-by: Artur Rojek <contact@artur-rojek.eu> > --- > .../devicetree/bindings/display/ingenic,drm.txt | 30 ++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/ingenic,drm.txt > > diff --git a/Documentation/devicetree/bindings/display/ingenic,drm.txt b/Documentation/devicetree/bindings/display/ingenic,drm.txt > new file mode 100644 > index 000000000000..52a368ec35cd > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/ingenic,drm.txt > @@ -0,0 +1,30 @@ > +Ingenic JZ47xx DRM driver > + > +Required properties: > +- compatible: one of: > + * ingenic,jz4740-drm > + * ingenic,jz4725b-drm > +- reg: LCD registers location and length The fbdev way of doing this was to hardcode register setttings. In the drm world we read the configuration of the panel and let this decide the actual configuration. Note that no drm drivers supports stn displays and that there is really no use for this these days. So you can skip the STN parts. Also the modern way to specify a panel in the DT is using OF graph bindings. You can find many examples how to do this. I was there with the atmel LCDC driver (not in the kernel yet), and had some challenges with this. Sam
Hi Sam, thanks for the feedback. Le ven. 1 mars 2019 à 17:16, Sam Ravnborg <sam@ravnborg.org> a écrit : > Hi Paul. > > Good to see work migrating fbdev => drm. > > Following comments is based on experience while working on migrating > another driver from fbdev => drm. > > On Thu, Feb 28, 2019 at 07:07:54PM -0300, Paul Cercueil wrote: >> Add documentation for the devicetree bindings of the DRM driver for >> the >> JZ47xx family of SoCs from Ingenic. >> >> Signed-off-by: Paul Cercueil <paul@crapouillou.net> >> Tested-by: Artur Rojek <contact@artur-rojek.eu> >> --- >> .../devicetree/bindings/display/ingenic,drm.txt | 30 >> ++++++++++++++++++++++ >> 1 file changed, 30 insertions(+) >> create mode 100644 >> Documentation/devicetree/bindings/display/ingenic,drm.txt >> >> diff --git >> a/Documentation/devicetree/bindings/display/ingenic,drm.txt >> b/Documentation/devicetree/bindings/display/ingenic,drm.txt >> new file mode 100644 >> index 000000000000..52a368ec35cd >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/display/ingenic,drm.txt >> @@ -0,0 +1,30 @@ >> +Ingenic JZ47xx DRM driver >> + >> +Required properties: >> +- compatible: one of: >> + * ingenic,jz4740-drm >> + * ingenic,jz4725b-drm >> +- reg: LCD registers location and length > The fbdev way of doing this was to hardcode register setttings. > In the drm world we read the configuration of the panel and let > this decide the actual configuration. > > Note that no drm drivers supports stn displays and that there > is really no use for this these days. So you can skip the STN parts. STN panels aren't really my problem; but I have a board with a Sharp LS020B1DD01D panel, which requires the LCD IP to be configured for a "special 2" panel. I also have a board with a "smart" panel (ili9331) that needs a special configuration in the IP. There is nothing in the drm_panel interface that tells me what mode I should use for what panel... > Also the modern way to specify a panel in the DT is using OF graph > bindings. > You can find many examples how to do this. Ok, I was looking at the Tegra driver, which uses a "nvidia,panel" DT property. I will change it to use the graph thing. > I was there with the atmel LCDC driver (not in the kernel yet), > and had some challenges with this. > > Sam Thanks, -Paul
On Fri, Mar 1, 2019 at 11:41 PM Paul Cercueil <paul@crapouillou.net> wrote: > I also have a board with a "smart" panel (ili9331) > that needs a special configuration in the IP. There is nothing in > the drm_panel interface that tells me what mode I should use for what > panel... Is the ILI9331 anything similar to ILI9322 that I have a driver for in drivers/gpu/drm/panel/panel-ilitek-ili9322.c? I was hoping they would be similar and we ẃould be able to just reuse that driver for more of them but I might be mistaken. Yours, Linus Walleij
On Thu, Feb 28, 2019 at 4:08 PM Paul Cercueil <paul@crapouillou.net> wrote: > > Add documentation for the devicetree bindings of the DRM driver for the > JZ47xx family of SoCs from Ingenic. > > Signed-off-by: Paul Cercueil <paul@crapouillou.net> > Tested-by: Artur Rojek <contact@artur-rojek.eu> > --- > .../devicetree/bindings/display/ingenic,drm.txt | 30 ++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/ingenic,drm.txt > > diff --git a/Documentation/devicetree/bindings/display/ingenic,drm.txt b/Documentation/devicetree/bindings/display/ingenic,drm.txt > new file mode 100644 > index 000000000000..52a368ec35cd > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/ingenic,drm.txt > @@ -0,0 +1,30 @@ > +Ingenic JZ47xx DRM driver > + > +Required properties: > +- compatible: one of: > + * ingenic,jz4740-drm > + * ingenic,jz4725b-drm DRM is a kernel thing. What's the h/w called? > +- reg: LCD registers location and length > +- clocks: LCD pixclock and device clock specifiers. > + The device clock is only required on the JZ4740. > +- clock-names: "lcd_pclk" and "lcd" > +- interrupts: Specifies the interrupt line the LCD controller is connected to. > + > +Optional properties: > +- ingenic,panel: phandle to a display panel, if one is present Use the graph binding or a child node. See other bindings. > +- ingenic,lcd-mode: LCD mode to use with the display panel. > + See <dt-bindings/display/ingenic,drm.h> for all the > + possible values. > + > +Example: > + > +lcd: lcd-controller@13050000 { > + compatible = "ingenic,jz4725b-drm"; > + reg = <0x13050000 0x1000>; > + > + interrupt-parent = <&intc>; > + interrupts = <31>; > + > + clocks = <&cgu JZ4725B_CLK_LCD>; > + clock-names = "lcd"; > +}; > -- > 2.11.0 >
Hi Linus, On Fri, Mar 8, 2019 at 11:23 PM, Linus Walleij <linus.walleij@linaro.org> wrote: > On Fri, Mar 1, 2019 at 11:41 PM Paul Cercueil <paul@crapouillou.net > <mailto:paul@crapouillou.net>> wrote: > >> I also have a board with a "smart" panel (ili9331) >> that needs a special configuration in the IP. There is nothing in >> the drm_panel interface that tells me what mode I should use for >> what >> panel... > > Is the ILI9331 anything similar to ILI9322 that I have a driver > for in drivers/gpu/drm/panel/panel-ilitek-ili9322.c? > I was hoping they would be similar and we ẃould be able > to just reuse that driver for more of them but I might be > mistaken. That's a bit hard to tell right now, but from a quick look at the datasheet, it looks quite different :( -Paul
diff --git a/Documentation/devicetree/bindings/display/ingenic,drm.txt b/Documentation/devicetree/bindings/display/ingenic,drm.txt new file mode 100644 index 000000000000..52a368ec35cd --- /dev/null +++ b/Documentation/devicetree/bindings/display/ingenic,drm.txt @@ -0,0 +1,30 @@ +Ingenic JZ47xx DRM driver + +Required properties: +- compatible: one of: + * ingenic,jz4740-drm + * ingenic,jz4725b-drm +- reg: LCD registers location and length +- clocks: LCD pixclock and device clock specifiers. + The device clock is only required on the JZ4740. +- clock-names: "lcd_pclk" and "lcd" +- interrupts: Specifies the interrupt line the LCD controller is connected to. + +Optional properties: +- ingenic,panel: phandle to a display panel, if one is present +- ingenic,lcd-mode: LCD mode to use with the display panel. + See <dt-bindings/display/ingenic,drm.h> for all the + possible values. + +Example: + +lcd: lcd-controller@13050000 { + compatible = "ingenic,jz4725b-drm"; + reg = <0x13050000 0x1000>; + + interrupt-parent = <&intc>; + interrupts = <31>; + + clocks = <&cgu JZ4725B_CLK_LCD>; + clock-names = "lcd"; +};