Skip to contentSkip to conversation

ARM: OMAP: Add Amstrad Delta platform bits for framebuffer.

PATCH In review Jonathan McDowell 2 participants 4 messages Aug 14, 2006 – Aug 17, 2006

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

PATCH 1/1 ARM: OMAP: Add Amstrad Delta platform bits for framebuffer.

This patch adds the platform file components for the Amstrad Delta LCD framebuffer. I have confirmed it works with latest git. The patch to clock.c /is/ needed for this to work.

-----

arch/arm/mach-omap1/board-ams-delta.c +11 -0
index 8437d06..1389799 100644
@@ -76,6 +76,10 @@ static struct map_desc ams_delta_io_desc
 	}
 };
 
+static struct omap_lcd_config ams_delta_lcd_config __initdata = {
+	.ctrl_name	= "internal",
+};
+
 static struct omap_uart_config ams_delta_uart_config __initdata = {
 	.enabled_uarts = 1,
 };
@@ -87,16 +91,23 @@ static struct omap_usb_config ams_delta_
 };
 
 static struct omap_board_config_kernel ams_delta_config[] = {
+	{ OMAP_TAG_LCD,		&ams_delta_lcd_config },
 	{ OMAP_TAG_UART,	&ams_delta_uart_config },
 	{ OMAP_TAG_USB,		&ams_delta_usb_config },
 };
 
+static struct platform_device ams_delta_lcd_device = {
+	.name	= "lcd_ams_delta",
+	.id	= "-1",
+};
+
 static struct platform_device ams_delta_led_device = {
 	.name	= "ams-delta-led",
 	.id	= -1
 };
 
 static struct platform_device *ams_delta_devices[] __initdata = {
+	&ams_delta_lcd_device,
 	&ams_delta_led_device,
 };
 
arch/arm/mach-omap1/clock.c +9 -0
index cc08775..70a5d50 100644
@@ -20,6 +20,7 @@ #include <linux/err.h>
 #include <linux/clk.h>
 
 #include <asm/io.h>
+#include <asm/mach-types.h>
 
 #include <asm/arch/cpu.h>
 #include <asm/arch/usb.h>
@@ -756,6 +757,14 @@ #if defined(CONFIG_MACH_OMAP_PERSEUS2) |
 	omap_writew(omap_readw(OMAP730_PCC_UPLD_CTRL) & ~0x1, OMAP730_PCC_UPLD_CTRL);
 #endif
 
+#ifdef CONFIG_MACH_AMS_DELTA
+	/* Amstrad Delta wants BCLK high when inactive */
+	if (machine_is_ams_delta())
+		omap_writel(omap_readl(ULPD_CLOCK_CTRL) |
+				(1 << SDW_MCLK_INV_BIT),
+				ULPD_CLOCK_CTRL);
+#endif
+
 	/* Turn off DSP and ARM_TIMXO. Make sure ARM_INTHCK is not divided */
 	/* (on 730, bit 13 must not be cleared) */
 	if (cpu_is_omap730())
arch/arm/mach-omap1/clock.h +1 -0
index 0b125c3..f7df002 100644
@@ -89,6 +89,7 @@ #define EN_TC2_CK	4
 #define EN_DSPTIMCK	5
 
 /* Various register defines for clock controls scattered around OMAP chip */
+#define SDW_MCLK_INV_BIT	2	/* In ULPD_CLKC_CTRL */
 #define USB_MCLK_EN_BIT		4	/* In ULPD_CLKC_CTRL */
 #define USB_HOST_HHC_UHOST_EN	9	/* In MOD_CONF_CTRL_0 */
 #define SWD_ULPD_PLL_CLK_REQ	1	/* In SWD_CLK_DIV_CTRL_SEL */

-----

J.

Signature · 4 lines
      Are you threatening me?      |  .''`.  Debian GNU/Linux Developer
                                   | : :' :  Happy to accept PGP signed
                                   | `. `'   or encrypted mail - RSA +
                                   |   `-    DSA keys on the keyservers.
#1 lore raw
Quoted 5 lines · Jonathan McDowell

This patch adds the platform file components for the Amstrad Delta LCD framebuffer. I have confirmed it works with latest git. The patch to clock.c /is/ needed for this to work.

[snip]

Quoted 13 lines
arch/arm/mach-omap1/clock.c +1 -0
index cc08775..70a5d50 100644
@@ -20,6 +20,7 @@ #include <linux/err.h>
 #include <linux/clk.h>
 
 #include <asm/io.h>
+#include <asm/mach-types.h>
 
 #include <asm/arch/cpu.h>
 #include <asm/arch/usb.h>

arch/arm/mach-omap1/clock.c #if defined(CONFIG_MACH_OMAP_PERSEUS2) | · line 766

Quoted 10 lines
arch/arm/mach-omap1/clock.c +7 -0
@@ -756,6 +757,14 @@ #if defined(CONFIG_MACH_OMAP_PERSEUS2) |
 	omap_writew(omap_readw(OMAP730_PCC_UPLD_CTRL) & ~0x1, OMAP730_PCC_UPLD_CTRL);
 #endif
 
+#ifdef CONFIG_MACH_AMS_DELTA
+	/* Amstrad Delta wants BCLK high when inactive */
+	if (machine_is_ams_delta())
+		omap_writel(omap_readl(ULPD_CLOCK_CTRL) |
+				(1 << SDW_MCLK_INV_BIT),
+				ULPD_CLOCK_CTRL);
+#endif

This #ifdef is not necessary. machine_is_ams_delta() will expand to (0) when CONFIG_MACH_AMS_DELTA not selected and that if (0) will be optimized away.

arch/arm/mach-omap1/clock.c #if defined(CONFIG_MACH_OMAP_PERSEUS2) | · line 770

Quoted 3 lines
arch/arm/mach-omap1/clock.c +0 -0
 	/* Turn off DSP and ARM_TIMXO. Make sure ARM_INTHCK is not divided */
 	/* (on 730, bit 13 must not be cleared) */
 	if (cpu_is_omap730())

Best regards,
ladis

#2 lore raw
Quoted 7 lines · Ladislav Michl
Quoted 6 lines · Jonathan McDowell

This patch adds the platform file components for the Amstrad Delta LCD framebuffer. I have confirmed it works with latest git. The patch to clock.c /is/ needed for this to work.

Quoted 11 lines

Review

Quoted 7 lines
(quoted diff) +7 -0
+#ifdef CONFIG_MACH_AMS_DELTA
+	/* Amstrad Delta wants BCLK high when inactive */
+	if (machine_is_ams_delta())
+		omap_writel(omap_readl(ULPD_CLOCK_CTRL) |
+				(1 << SDW_MCLK_INV_BIT),
+				ULPD_CLOCK_CTRL);
+#endif

This #ifdef is not necessary. machine_is_ams_delta() will expand to (0) when CONFIG_MACH_AMS_DELTA not selected and that if (0) will be optimized away.

I tend to adopt a belt and braces approach to these things. :) Here's a revised patch without the #ifdef.

-----

arch/arm/mach-omap1/board-ams-delta.c +11 -0
index 8437d06..1389799 100644
@@ -76,6 +76,10 @@ static struct map_desc ams_delta_io_desc
 	}
 };
 
+static struct omap_lcd_config ams_delta_lcd_config __initdata = {
+	.ctrl_name	= "internal",
+};
+
 static struct omap_uart_config ams_delta_uart_config __initdata = {
 	.enabled_uarts = 1,
 };
@@ -87,16 +91,23 @@ static struct omap_usb_config ams_delta_
 };
 
 static struct omap_board_config_kernel ams_delta_config[] = {
+	{ OMAP_TAG_LCD,		&ams_delta_lcd_config },
 	{ OMAP_TAG_UART,	&ams_delta_uart_config },
 	{ OMAP_TAG_USB,		&ams_delta_usb_config },
 };
 
+static struct platform_device ams_delta_lcd_device = {
+	.name	= "lcd_ams_delta",
+	.id	= "-1",
+};
+
 static struct platform_device ams_delta_led_device = {
 	.name	= "ams-delta-led",
 	.id	= -1
 };
 
 static struct platform_device *ams_delta_devices[] __initdata = {
+	&ams_delta_lcd_device,
 	&ams_delta_led_device,
 };
 
arch/arm/mach-omap1/clock.c +7 -0
index cc08775..7a25e8d 100644
@@ -20,6 +20,7 @@ #include <linux/err.h>
 #include <linux/clk.h>
 
 #include <asm/io.h>
+#include <asm/mach-types.h>
 
 #include <asm/arch/cpu.h>
 #include <asm/arch/usb.h>
@@ -756,6 +757,12 @@ #if defined(CONFIG_MACH_OMAP_PERSEUS2) |
 	omap_writew(omap_readw(OMAP730_PCC_UPLD_CTRL) & ~0x1, OMAP730_PCC_UPLD_CTRL);
 #endif
 
+	/* Amstrad Delta wants BCLK high when inactive */
+	if (machine_is_ams_delta())
+		omap_writel(omap_readl(ULPD_CLOCK_CTRL) |
+				(1 << SDW_MCLK_INV_BIT),
+				ULPD_CLOCK_CTRL);
+
 	/* Turn off DSP and ARM_TIMXO. Make sure ARM_INTHCK is not divided */
 	/* (on 730, bit 13 must not be cleared) */
 	if (cpu_is_omap730())
arch/arm/mach-omap1/clock.h +1 -0
index 0b125c3..f7df002 100644
@@ -89,6 +89,7 @@ #define EN_TC2_CK	4
 #define EN_DSPTIMCK	5
 
 /* Various register defines for clock controls scattered around OMAP chip */
+#define SDW_MCLK_INV_BIT	2	/* In ULPD_CLKC_CTRL */
 #define USB_MCLK_EN_BIT		4	/* In ULPD_CLKC_CTRL */
 #define USB_HOST_HHC_UHOST_EN	9	/* In MOD_CONF_CTRL_0 */
 #define SWD_ULPD_PLL_CLK_REQ	1	/* In SWD_CLK_DIV_CTRL_SEL */

-----

J.

Signature · 3 lines
I have found the monster - the monster is us.
This .sig brought to you by the letter H and the number 13
Product of the Republic of HuggieTag
#3 lore raw
Quoted 20 lines · Jonathan McDowell
Quoted 7 lines · Ladislav Michl
Quoted 6 lines · Jonathan McDowell

This patch adds the platform file components for the Amstrad Delta LCD framebuffer. I have confirmed it works with latest git. The patch to clock.c /is/ needed for this to work.

Quoted 11 lines

Review

Quoted 7 lines
(quoted diff) +7 -0
+#ifdef CONFIG_MACH_AMS_DELTA
+	/* Amstrad Delta wants BCLK high when inactive */
+	if (machine_is_ams_delta())
+		omap_writel(omap_readl(ULPD_CLOCK_CTRL) |
+				(1 << SDW_MCLK_INV_BIT),
+				ULPD_CLOCK_CTRL);
+#endif

This #ifdef is not necessary. machine_is_ams_delta() will expand to (0) when CONFIG_MACH_AMS_DELTA not selected and that if (0) will be optimized away.

Quoted 2 lines

I tend to adopt a belt and braces approach to these things. :) Here's a revised patch without the #ifdef.

Ok. One last try with this; the id element of ams_delta_lcd_device should be an int, not a string.

-----

arch/arm/mach-omap1/board-ams-delta.c +11 -0
index 8437d06..1389799 100644
@@ -76,6 +76,10 @@ static struct map_desc ams_delta_io_desc
 	}
 };
 
+static struct omap_lcd_config ams_delta_lcd_config __initdata = {
+	.ctrl_name	= "internal",
+};
+
 static struct omap_uart_config ams_delta_uart_config __initdata = {
 	.enabled_uarts = 1,
 };
@@ -87,16 +91,23 @@ static struct omap_usb_config ams_delta_
 };
 
 static struct omap_board_config_kernel ams_delta_config[] = {
+	{ OMAP_TAG_LCD,		&ams_delta_lcd_config },
 	{ OMAP_TAG_UART,	&ams_delta_uart_config },
 	{ OMAP_TAG_USB,		&ams_delta_usb_config },
 };
 
+static struct platform_device ams_delta_lcd_device = {
+	.name	= "lcd_ams_delta",
+	.id	= -1,
+};
+
 static struct platform_device ams_delta_led_device = {
 	.name	= "ams-delta-led",
 	.id	= -1
 };
 
 static struct platform_device *ams_delta_devices[] __initdata = {
+	&ams_delta_lcd_device,
 	&ams_delta_led_device,
 };
 
arch/arm/mach-omap1/clock.c +7 -0
index cc08775..7a25e8d 100644
@@ -20,6 +20,7 @@ #include <linux/err.h>
 #include <linux/clk.h>
 
 #include <asm/io.h>
+#include <asm/mach-types.h>
 
 #include <asm/arch/cpu.h>
 #include <asm/arch/usb.h>
@@ -756,6 +757,12 @@ #if defined(CONFIG_MACH_OMAP_PERSEUS2) |
 	omap_writew(omap_readw(OMAP730_PCC_UPLD_CTRL) & ~0x1, OMAP730_PCC_UPLD_CTRL);
 #endif
 
+	/* Amstrad Delta wants BCLK high when inactive */
+	if (machine_is_ams_delta())
+		omap_writel(omap_readl(ULPD_CLOCK_CTRL) |
+				(1 << SDW_MCLK_INV_BIT),
+				ULPD_CLOCK_CTRL);
+
 	/* Turn off DSP and ARM_TIMXO. Make sure ARM_INTHCK is not divided */
 	/* (on 730, bit 13 must not be cleared) */
 	if (cpu_is_omap730())
arch/arm/mach-omap1/clock.h +1 -0
index 0b125c3..f7df002 100644
@@ -89,6 +89,7 @@ #define EN_TC2_CK	4
 #define EN_DSPTIMCK	5
 
 /* Various register defines for clock controls scattered around OMAP chip */
+#define SDW_MCLK_INV_BIT	2	/* In ULPD_CLKC_CTRL */
 #define USB_MCLK_EN_BIT		4	/* In ULPD_CLKC_CTRL */
 #define USB_HOST_HHC_UHOST_EN	9	/* In MOD_CONF_CTRL_0 */
 #define SWD_ULPD_PLL_CLK_REQ	1	/* In SWD_CLK_DIV_CTRL_SEL */

-----

J.

Signature · 4 lines
] http://www.earth.li/~noodles/ []  Life takes its toll.  Have exact   [
]  PGP/GPG Key @ the.earth.li   []         change ready. . . .         [
] via keyserver, web or email.  []                                     [
] RSA: 4DC4E7FD / DSA: 5B430367 []                                     [