From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sylwester Nawrocki Date: Sat, 07 Sep 2013 22:55:21 +0000 Subject: Re: [PATCH 1/2] video: ARM CLCD: Add DT support Message-Id: <522BAED9.4020301@gmail.com> List-Id: References: <1378488201-21146-1-git-send-email-pawel.moll@arm.com> In-Reply-To: <1378488201-21146-1-git-send-email-pawel.moll@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-arm-kernel@lists.infradead.org Hi, On 09/06/2013 07:23 PM, Pawel Moll wrote: > This patch adds basic DT bindings for the PL11x CLCD cells > and make their fbdev driver use them. > > Signed-off-by: Pawel Moll > --- > .../devicetree/bindings/video/arm,pl11x.txt | 87 +++++++++ > drivers/video/Kconfig | 1 + > drivers/video/amba-clcd.c | 214 +++++++++++++++++++++ > 3 files changed, 302 insertions(+) > create mode 100644 Documentation/devicetree/bindings/video/arm,pl11x.txt > > diff --git a/Documentation/devicetree/bindings/video/arm,pl11x.txt b/Documentation/devicetree/bindings/video/arm,pl11x.txt > new file mode 100644 > index 0000000..178aebb > --- /dev/null > +++ b/Documentation/devicetree/bindings/video/arm,pl11x.txt > @@ -0,0 +1,87 @@ > +* ARM PrimeCell Color LCD Controller (CLCD) PL110/PL111 nit: Shouldn't the abbreviation be CLCDC ? > +See also Documentation/devicetree/bindings/arm/primecell.txt > + > +Required properties: > + > +- compatible: must be one of: > + "arm,pl110", "arm,primecell" > + "arm,pl111", "arm,primecell" > +- reg: base address and size of the control registers block > +- interrupts: either a single interrupt specifier representing the > + combined interrupt output (CLCDINTR) or an array of > + four interrupt specifiers for CLCDMBEINTR, > + CLCDVCOMPINTR, CLCDLNBUINTR, CLCDFUFINTR; in the > + latter case interrupt names must be specified > + (see below) > +- interrupt-names: when four interrupts are specified, their names: > + "mbe", "vcomp", "lnbu", "fuf" > + must be specified in order respective to the > + interrupt specifiers > +- clocks: contains phandle and clock specifier pairs for the entries > + in the clock-names property. See > + Documentation/devicetree/binding/clock/clock-bindings.txt > +- clocks names: should contain "clcdclk" and "apb_pclk" > + > +Optional properties: > + > +- video-ram: phandle to a node describing specialized video memory > + (that is *not* described in the top level "memory" node) > + that must be used as a framebuffer, eg. due to restrictions > + of the system interconnect; the node must contain a > + standard reg property describing the address and the size > + of the memory area It seems the "specialized video memory" is described by some vendor specific DT binding ? Is it documented ? It sounds like you are unnecessarily repeating the memory node details here. Perhaps this binding/driver should use the common reserved memory bindings, see thread http://www.spinics.net/lists/devicetree/msg02880.html > +- max-framebuffer-size: maximum size in bytes of the framebuffer the > + system can handle, eg. in terms of available > + memory bandwidth > + > +In the simplest case of a display panel being connected directly to the > +CLCD, it can be described in the node: > + > +- panel-dimensions: (optional) array of two numbers (width and height) > + describing physical dimension in mm of the panel > +- panel-type: (required) must be "tft" or "stn", defines panel type > +- panel-tft-interface: (for "tft" panel type) array of 3 numbers defining > + widths in bits of the R, G and B components > +- panel-tft-rb-swapped: (for "tft" panel type) if present means that > + the R& B components are swapped on the board > +- panel-stn-color: (for "stn" panel type) if present means that > + the panel is a colour STN display, if missing > + is a monochrome display > +- panel-stn-dual: (for "stn" panel type) if present means that there > + are two STN displays connected > +- panel-stn-4bit: (for monochrome "stn" panel) if present means > + that the monochrome display is connected > + via 4 bit-wide interface Are this vendor specific or common properties ? Shouldn't those be prefixed with the vendor name ? Anyway I think we need an RFC to possibly standardize properties that are common across multiple panels and have them listed in a common DT binding. It sounds a bit disappointing that for same class devices there are being introduced custom DT properties for each available device. For instance, the first 3 properties above look like they could apply to various display panels and controllers. > +- display-timings: standard display timings sub-node, see > + Documentation/devicetree/bindings/video/display-timing.txt > + > +Example: > + > + clcd@1f0000 { > + compatible = "arm,pl111", "arm,primecell"; > + reg =<0x1f0000 0x1000>; > + interrupts =<14>; > + clocks =<&v2m_oscclk1>,<&smbclk>; > + clock-names = "clcdclk", "apb_pclk"; > + > + video-ram =<&v2m_vram>; > + max-framebuffer-size =<614400>; /* 640x480 16bpp */ > + > + panel-type = "tft"; > + panel-tft-interface =<8 8 8>; > + display-timings { > + native-mode =<&v2m_clcd_timing0>; > + v2m_clcd_timing0: vga { > + clock-frequency =<25175000>; > + hactive =<640>; > + hback-porch =<40>; > + hfront-porch =<24>; > + hsync-len =<96>; > + vactive =<480>; > + vback-porch =<32>; > + vfront-porch =<11>; > + vsync-len =<2>; > + }; > + }; > + }; > diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig > index 4cf1e1d..375bf63 100644 > --- a/drivers/video/Kconfig > +++ b/drivers/video/Kconfig > @@ -316,6 +316,7 @@ config FB_ARMCLCD > select FB_CFB_FILLRECT > select FB_CFB_COPYAREA > select FB_CFB_IMAGEBLIT > + select VIDEOMODE_HELPERS if OF > help > This framebuffer device driver is for the ARM PrimeCell PL110 > Colour LCD controller. ARM PrimeCells provide the building > diff --git a/drivers/video/amba-clcd.c b/drivers/video/amba-clcd.c > index 0a2cce7..145ca5a 100644 > --- a/drivers/video/amba-clcd.c > +++ b/drivers/video/amba-clcd.c > @@ -25,6 +25,11 @@ > #include > #include > #include > +#include > +#include > +#include > +#include