[PATCH] ARM: OMAP: Add Amstrad Delta platform bits for framebuffer
authorJonathan McDowell <noodles@earth.li>
Tue, 5 Sep 2006 15:05:03 +0000 (18:05 +0300)
committerTony Lindgren <tony@atomide.com>
Tue, 5 Sep 2006 15:05:03 +0000 (18:05 +0300)
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.

Signed-off-by: Jonathan McDowell <noodles@earth.li>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/clock.c
arch/arm/mach-omap1/clock.h

index 8437d06..8ada935 100644 (file)
@@ -76,6 +76,10 @@ static struct map_desc ams_delta_io_desc[] __initdata = {
        }
 };
 
+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_usb_config __initdata = {
 };
 
 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,
 };
 
index cc08775..7a25e8d 100644 (file)
@@ -20,6 +20,7 @@
 #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 @@ int __init omap1_clk_init(void)
        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())
index 0b125c3..f7df002 100644 (file)
@@ -89,6 +89,7 @@ struct arm_idlect1_clk {
 #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 */