Skip to contentSkip to conversation

ARM: lpc32xx: migrate CLCD config to device tree

PATCH New Sylvain Lemieux 1 participant 4 messages Mar 8, 2017 – Mar 28, 2017

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index fd95e2b10357..1e5dbbad6cc4 100644
@@ -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
#2 lore raw

PATCH 2/2 ARM: lpc32xx: drop CLCD configuration

In reply to Sylvain Lemieux

From: 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
index 6c52bd32610e..97bffd9324f3 100644
@@ -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
#3 lore raw

cover ARM: lpc32xx: migrate CLCD config to device tree

In reply to Sylvain Lemieux

Hi 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.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.

Quoted 8 lines

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(-)

do you think you can look at this patchset?

Regards,
Sylvain