ARM: lpc32xx: migrate CLCD config to device tree
cover ARM: lpc32xx: migrate CLCD config to device tree
From: Sylvain Lemieux <[email protected]>
Migrate the CLCD configurations to the device tree and remove custom functions from board files.
This change depends on the following change:
"video: ARM CLCD: fix dma allocation size"
https://www.spinics.net/lists/arm-kernel/msg567178.html
Note:
* We tested a similar change on a custom LPC32xx board with a 480x272 LCD.
* We did not test this change on hardware;
we do not have access to a PHY3250 board with the 240x320 LCD.
Liam Beguin (2):
ARM: dts: lpc32xx: phy3250: add clcd configuration
ARM: lpc32xx: drop CLCD configuration
arch/arm/boot/dts/lpc3250-phy3250.dts | 35 ++++++++++++++++++ arch/arm/mach-lpc32xx/phy3250.c | 70 ----------------------------------- 2 files changed, 35 insertions(+), 70 deletions(-)
Signature · 1 line
2.11.0
PATCH 1/2 ARM: dts: lpc32xx: phy3250: add clcd configuration
From: Liam Beguin <[email protected]>
Updating CLCD board and panel definiton to use
up-to-date devicetree hardware description.
--- arch/arm/boot/dts/lpc3250-phy3250.dts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
arch/arm/boot/dts/lpc3250-phy3250.dts +35 -0
@@ -72,7 +72,42 @@ }; &clcd { + interrupt-names = "combined"; + max-memory-bandwidth = <11700000>; /* Bps, 240x320 at 60 16bpp */ status = "okay"; + + port { + clcd_pads: endpoint { + remote-endpoint = <&clcd_panel>; + arm,pl11x,tft-r0g0b0-pads = <3 10 19>; /* Set LCD to BGR 565 */ + }; + }; + + panel { + compatible = "panel-dpi"; + + port { + clcd_panel: endpoint { + remote-endpoint = <&clcd_pads>; + }; + }; + + panel-timing { + clock-frequency = <5850000>; + + hactive = <240>; + hback-porch = <11>; + hfront-porch = <22>; + hsync-len = <5>; + + vactive = <320>; + vback-porch = <2>; + vfront-porch = <1>; + vsync-len = <2>; + + pixelclk-active = <1>; + }; + }; }; &i2c1 {
Signature · 1 line
2.11.0
PATCH 2/2 ARM: lpc32xx: drop CLCD configuration
In reply to Sylvain LemieuxFrom: Liam Beguin <[email protected]>
Drop the CLCD configurations and custom functions
since it's now done using the devicetree.
--- arch/arm/mach-lpc32xx/phy3250.c | 70 ----------------------------------------- 1 file changed, 70 deletions(-)
arch/arm/mach-lpc32xx/phy3250.c +0 -70
@@ -24,8 +24,6 @@#include <linux/irq.h> #include <linux/dma-mapping.h> #include <linux/gpio.h> -#include <linux/amba/bus.h> -#include <linux/amba/clcd.h> #include <linux/amba/pl08x.h> #include <linux/amba/mmci.h> #include <linux/of.h>
@@ -45,73 +43,6 @@#include <mach/board.h> #include "common.h" -/* -* AMBA LCD controller -*/ -static struct clcd_panel conn_lcd_panel = { - .mode = { - .name ="QVGA portrait" , - .refresh =60 , - .xres =240 , - .yres =320 , - .pixclock =191828 , - .left_margin =22 , - .right_margin =11 , - .upper_margin =2 , - .lower_margin =1 , - .hsync_len =5 , - .vsync_len =2 , - .sync =0 , - .vmode =FB_VMODE_NONINTERLACED , - }, - .width =-1 , - .height =-1 , - .tim2 = (TIM2_IVS |TIM2_IHS ), - .cntl = (CNTL_BGR |CNTL_LCDTFT |CNTL_LCDVCOMP (1 ) | -CNTL_LCDBPP16_565 ), - .bpp =16 , -}; -#define PANEL_SIZE (3 * SZ_64K) - -static int lpc32xx_clcd_setup (struct clcd_fb *fb) -{ -dma_addr_t dma; - - fb->fb.screen_base =dma_alloc_wc (&fb->dev->dev,PANEL_SIZE , &dma, -GFP_KERNEL ); -if (!fb->fb.screen_base) { -printk (KERN_ERR "CLCD: unable to map framebuffer\n" ); -return -ENOMEM ; - } - - fb->fb.fix.smem_start = dma; - fb->fb.fix.smem_len =PANEL_SIZE ; - fb->panel = &conn_lcd_panel; - -return 0 ; -} - -static int lpc32xx_clcd_mmap (struct clcd_fb *fb,struct vm_area_struct *vma) -{ -return dma_mmap_wc (&fb->dev->dev, vma, fb->fb.screen_base, - fb->fb.fix.smem_start, fb->fb.fix.smem_len); -} - -static void lpc32xx_clcd_remove (struct clcd_fb *fb) -{ -dma_free_wc (&fb->dev->dev, fb->fb.fix.smem_len, fb->fb.screen_base, - fb->fb.fix.smem_start); -} - -static struct clcd_board lpc32xx_clcd_data = { - .name ="Phytec LCD" , - .check = clcdfb_check, - .decode = clcdfb_decode, - .setup = lpc32xx_clcd_setup, - .mmap = lpc32xx_clcd_mmap, - .remove = lpc32xx_clcd_remove, -}; -static struct pl08x_channel_data pl08x_slave_channels[] = { { .bus_id ="nand-slc" ,
@@ -161,7 +92,6 @@ static struct lpc32xx_mlc_platform_data lpc32xx_mlc_data = {static const struct of_dev_auxdata lpc32xx_auxdata_lookup[]__initconst = {OF_DEV_AUXDATA ("arm,pl022" ,0x20084000 ,"dev:ssp0" ,NULL ),OF_DEV_AUXDATA ("arm,pl022" ,0x2008C000 ,"dev:ssp1" ,NULL ), -OF_DEV_AUXDATA ("arm,pl110" ,0x31040000 ,"dev:clcd" , &lpc32xx_clcd_data),OF_DEV_AUXDATA ("arm,pl080" ,0x31000000 ,"pl08xdmac" , &pl08x_pd),OF_DEV_AUXDATA ("arm,pl18x" ,0x20098000 ,"20098000.sd" , &lpc32xx_mmci_data),
Signature · 1 line
2.11.0
cover ARM: lpc32xx: migrate CLCD config to device tree
In reply to Sylvain LemieuxHi Vladimir,
Quoted 14 lines · Sylvain Lemieux
From: Sylvain Lemieux <[email protected]>
Migrate the CLCD configurations to the device tree and remove custom functions from board files.
This change depends on the following change:
"video: ARM CLCD: fix dma allocation size"
https://www.spinics.net/lists/arm-kernel/msg567178.htmlNote:
* We tested a similar change on a custom LPC32xx board with a 480x272 LCD.
* We did not test this change on hardware;
we do not have access to a PHY3250 board with the 240x320 LCD.
Quoted 8 lines
Liam Beguin (2):
ARM: dts: lpc32xx: phy3250: add clcd configuration
ARM: lpc32xx: drop CLCD configurationarch/arm/boot/dts/lpc3250-phy3250.dts | 35 ++++++++++++++++++ arch/arm/mach-lpc32xx/phy3250.c | 70 ----------------------------------- 2 files changed, 35 insertions(+), 70 deletions(-)
do you think you can look at this patchset?
Regards,
Sylvain