From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean-Christophe PLAGNIOL-VILLARD Date: Thu, 11 Apr 2013 15:00:18 +0000 Subject: [PATCH 4/8] video: atmel_lcdfb: add device tree suport Message-Id: <1365692422-9565-4-git-send-email-plagnioj@jcrosoft.com> List-Id: References: <20130411145741.GB25242@game.jcrosoft.org> <1365692422-9565-1-git-send-email-plagnioj@jcrosoft.com> In-Reply-To: <1365692422-9565-1-git-send-email-plagnioj@jcrosoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: linux-arm-kernel@lists.infradead.org get display timings from device tree Use videomode helpers to get display timings and configurations from device tree Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Cc: linux-fbdev@vger.kernel.org Cc: Nicolas Ferre Cc: Andrew Morton --- .../devicetree/bindings/video/atmel,lcdc.txt | 75 ++++++ drivers/video/Kconfig | 2 + drivers/video/atmel_lcdfb.c | 244 ++++++++++++++++= +--- 3 files changed, 289 insertions(+), 32 deletions(-) create mode 100644 Documentation/devicetree/bindings/video/atmel,lcdc.txt diff --git a/Documentation/devicetree/bindings/video/atmel,lcdc.txt b/Docum= entation/devicetree/bindings/video/atmel,lcdc.txt new file mode 100644 index 0000000..1ec175e --- /dev/null +++ b/Documentation/devicetree/bindings/video/atmel,lcdc.txt @@ -0,0 +1,75 @@ +Atmel LCDC Framebuffer +----------------------------------------------------- + +Required properties: +- compatible : + "atmel,at91sam9261-lcdc" ,=20 + "atmel,at91sam9263-lcdc" , + "atmel,at91sam9g10-lcdc" , + "atmel,at91sam9g45-lcdc" , + "atmel,at91sam9g45es-lcdc" , + "atmel,at91sam9rl-lcdc" , + "atmel,at32ap-lcdc" +- reg : Should contain 1 register ranges(address and length) +- interrupts : framebuffer controller interrupt +- display: a phandle pointing to the display node + +Required nodes: +- display: a display node is required to initialize the lcd panel + This should be in the board dts. +- default-mode: a videomode within the display with timing parameters + as specified below. + +Example: + + fb0: fb@0x00500000 { + compatible =3D "atmel,at91sam9g45-lcdc"; + reg =3D <0x00500000 0x1000>; + interrupts =3D <23 3 0>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_fb>; + display =3D <&display0>; + status =3D "okay"; + #address-cells =3D <1>; + #size-cells =3D <1>; + + }; + +Atmel LCDC Display +----------------------------------------------------- +Required properties (as per of_videomode_helper): + + - atmel,dmacon: dma controler configuration + - atmel,lcdcon2: lcd controler configuration + - atmel,guard-time: lcd guard time (Delay in frame periods) + - bits-per-pixel: lcd panel bit-depth. + +Optional properties (as per of_videomode_helper): + - atmel,lcdcon-backlight: enable backlight + - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG" + - atmel,power-control-gpio: gpio to power on or off the LCD (as many as n= eeded) + +Example: + display0: display { + bits-per-pixel =3D <32>; + atmel,lcdcon-backlight; + atmel,dmacon =3D <0x1>; + atmel,lcdcon2 =3D <0x80008002>; + atmel,guard-time =3D <9>; + atmel,lcd-wiring-mode =3D <1>; + + display-timings { + native-mode =3D <&timing0>; + timing0: timing0 { + clock-frequency =3D <9000000>; + hactive =3D <480>; + vactive =3D <272>; + hback-porch =3D <1>; + hfront-porch =3D <1>; + vback-porch =3D <40>; + vfront-porch =3D <1>; + hsync-len =3D <45>; + vsync-len =3D <1>; + }; + }; + }; diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 4c1546f..0687482 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -1018,6 +1018,8 @@ config FB_ATMEL select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT + select FB_MODE_HELPERS + select OF_VIDEOMODE help This enables support for the AT91/AT32 LCD Controller. =20 diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index f67e226..4a31570 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c @@ -20,7 +20,11 @@ #include #include #include +#include +#include +#include #include