Loading arch/arm/mach-sa1100/assabet.c +100 −30 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include <linux/delay.h> #include <linux/mm.h> #include <video/sa1100fb.h> #include <mach/hardware.h> #include <asm/mach-types.h> #include <asm/irq.h> Loading Loading @@ -69,33 +71,6 @@ void ASSABET_BCR_frob(unsigned int mask, unsigned int val) EXPORT_SYMBOL(ASSABET_BCR_frob); static void assabet_backlight_power(int on) { #ifndef ASSABET_PAL_VIDEO if (on) ASSABET_BCR_set(ASSABET_BCR_LIGHT_ON); else #endif ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON); } /* * Turn on/off the backlight. When turning the backlight on, * we wait 500us after turning it on so we don't cause the * supplies to droop when we enable the LCD controller (and * cause a hard reset.) */ static void assabet_lcd_power(int on) { #ifndef ASSABET_PAL_VIDEO if (on) { ASSABET_BCR_set(ASSABET_BCR_LCD_ON); udelay(500); } else #endif ASSABET_BCR_clear(ASSABET_BCR_LCD_ON); } /* * Assabet flash support code. Loading Loading @@ -197,6 +172,99 @@ static struct mcp_plat_data assabet_mcp_data = { .sclk_rate = 11981000, }; static void assabet_lcd_set_visual(u32 visual) { u_int is_true_color = visual == FB_VISUAL_TRUECOLOR; if (machine_is_assabet()) { #if 1 // phase 4 or newer Assabet's if (is_true_color) ASSABET_BCR_set(ASSABET_BCR_LCD_12RGB); else ASSABET_BCR_clear(ASSABET_BCR_LCD_12RGB); #else // older Assabet's if (is_true_color) ASSABET_BCR_clear(ASSABET_BCR_LCD_12RGB); else ASSABET_BCR_set(ASSABET_BCR_LCD_12RGB); #endif } } #ifndef ASSABET_PAL_VIDEO static void assabet_lcd_backlight_power(int on) { if (on) ASSABET_BCR_set(ASSABET_BCR_LIGHT_ON); else ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON); } /* * Turn on/off the backlight. When turning the backlight on, we wait * 500us after turning it on so we don't cause the supplies to droop * when we enable the LCD controller (and cause a hard reset.) */ static void assabet_lcd_power(int on) { if (on) { ASSABET_BCR_set(ASSABET_BCR_LCD_ON); udelay(500); } else ASSABET_BCR_clear(ASSABET_BCR_LCD_ON); } /* * The assabet uses a sharp LQ039Q2DS54 LCD module. It is actually * takes an RGB666 signal, but we provide it with an RGB565 signal * instead (def_rgb_16). */ static struct sa1100fb_mach_info lq039q2ds54_info = { .pixclock = 171521, .bpp = 16, .xres = 320, .yres = 240, .hsync_len = 5, .vsync_len = 1, .left_margin = 61, .upper_margin = 3, .right_margin = 9, .lower_margin = 0, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2), .backlight_power = assabet_lcd_backlight_power, .lcd_power = assabet_lcd_power, .set_visual = assabet_lcd_set_visual, }; #else static void assabet_pal_backlight_power(int on) { ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON); } static void assabet_pal_power(int on) { ASSABET_BCR_clear(ASSABET_BCR_LCD_ON); } static struct sa1100fb_mach_info pal_info = { .pixclock = 67797, .bpp = 16, .xres = 640, .yres = 512, .hsync_len = 64, .vsync_len = 6, .left_margin = 125, .upper_margin = 70, .right_margin = 115, .lower_margin = 36, .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(512), .backlight_power = assabet_pal_backlight_power, .lcd_power = assabet_pal_power, .set_visual = assabet_lcd_set_visual, }; #endif #ifdef CONFIG_ASSABET_NEPONSET static struct resource neponset_resources[] = { DEFINE_RES_MEM(0x10000000, 0x08000000), Loading Loading @@ -241,9 +309,6 @@ static void __init assabet_init(void) PPDR |= PPC_TXD3 | PPC_TXD1; PPSR |= PPC_TXD3 | PPC_TXD1; sa1100fb_lcd_power = assabet_lcd_power; sa1100fb_backlight_power = assabet_backlight_power; if (machine_has_neponset()) { /* * Angel sets this, but other bootloaders may not. Loading @@ -262,6 +327,11 @@ static void __init assabet_init(void) #endif } #ifndef ASSABET_PAL_VIDEO sa11x0_register_lcd(&lq039q2ds54_info); #else sa11x0_register_lcd(&pal_video); #endif sa11x0_register_mtd(&assabet_flash_data, assabet_flash_resources, ARRAY_SIZE(assabet_flash_resources)); sa11x0_register_irda(&assabet_irda_data); Loading arch/arm/mach-sa1100/collie.c +17 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ #include <linux/gpio.h> #include <linux/pda_power.h> #include <video/sa1100fb.h> #include <mach/hardware.h> #include <asm/mach-types.h> #include <asm/irq.h> Loading Loading @@ -294,6 +296,20 @@ static struct resource collie_flash_resources[] = { DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M), }; static struct sa1100fb_mach_info collie_lcd_info = { .pixclock = 171521, .bpp = 16, .xres = 320, .yres = 240, .hsync_len = 5, .vsync_len = 1, .left_margin = 11, .upper_margin = 2, .right_margin = 30, .lower_margin = 0, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2), }; static void __init collie_init(void) { int ret = 0; Loading Loading @@ -332,6 +348,7 @@ static void __init collie_init(void) printk(KERN_WARNING "collie: Unable to register LoCoMo device\n"); } sa11x0_register_lcd(&collie_lcd_info); sa11x0_register_mtd(&collie_flash_data, collie_flash_resources, ARRAY_SIZE(collie_flash_resources)); sa11x0_register_mcp(&collie_mcp_data); Loading arch/arm/mach-sa1100/generic.c +7 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include <linux/ioport.h> #include <linux/platform_device.h> #include <video/sa1100fb.h> #include <asm/div64.h> #include <mach/hardware.h> #include <asm/system.h> Loading Loading @@ -247,6 +249,11 @@ static struct platform_device sa11x0fb_device = { .resource = sa11x0fb_resources, }; void sa11x0_register_lcd(struct sa1100fb_mach_info *inf) { sa11x0_register_device(&sa11x0fb_device, inf); } static struct platform_device sa11x0pcmcia_device = { .name = "sa11x0-pcmcia", .id = -1, Loading Loading @@ -319,7 +326,6 @@ static struct platform_device *sa11x0_devices[] __initdata = { &sa11x0uart3_device, &sa11x0ssp_device, &sa11x0pcmcia_device, &sa11x0fb_device, &sa11x0rtc_device, &sa11x0dma_device, }; Loading @@ -332,12 +338,6 @@ static int __init sa1100_init(void) arch_initcall(sa1100_init); void (*sa1100fb_backlight_power)(int on); void (*sa1100fb_lcd_power)(int on); EXPORT_SYMBOL(sa1100fb_backlight_power); EXPORT_SYMBOL(sa1100fb_lcd_power); /* * Common I/O mapping: Loading arch/arm/mach-sa1100/generic.h +3 −3 Original line number Diff line number Diff line Loading @@ -16,9 +16,6 @@ extern void sa11x0_restart(char, const char *); mi->bank[__nr].start = (__start), \ mi->bank[__nr].size = (__size) extern void (*sa1100fb_backlight_power)(int on); extern void (*sa1100fb_lcd_power)(int on); extern void sa1110_mb_enable(void); extern void sa1110_mb_disable(void); Loading @@ -40,3 +37,6 @@ void sa11x0_register_irda(struct irda_platform_data *irda); struct mcp_plat_data; void sa11x0_register_mcp(struct mcp_plat_data *data); struct sa1100fb_mach_info; void sa11x0_register_lcd(struct sa1100fb_mach_info *inf); arch/arm/mach-sa1100/h3100.c +21 −2 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ #include <linux/kernel.h> #include <linux/gpio.h> #include <video/sa1100fb.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/irda.h> Loading @@ -36,13 +38,28 @@ static void h3100_lcd_power(int enable) } } static struct sa1100fb_mach_info h3100_lcd_info = { .pixclock = 406977, .bpp = 4, .xres = 320, .yres = 240, .hsync_len = 26, .vsync_len = 41, .left_margin = 4, .upper_margin = 0, .right_margin = 4, .lower_margin = 0, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, .cmap_greyscale = 1, .cmap_inverse = 1, .lccr0 = LCCR0_Mono | LCCR0_4PixMono | LCCR0_Sngl | LCCR0_Pas, .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2), .lcd_power = h3100_lcd_power, }; static void __init h3100_map_io(void) { h3xxx_map_io(); sa1100fb_lcd_power = h3100_lcd_power; /* Older bootldrs put GPIO2-9 in alternate mode on the assumption that they are used for video */ GAFR &= ~0x000001fb; Loading Loading @@ -80,6 +97,8 @@ static void __init h3100_mach_init(void) { h3xxx_init_gpio(h3100_default_gpio, ARRAY_SIZE(h3100_default_gpio)); h3xxx_mach_init(); sa11x0_register_lcd(&h3100_lcd_info); sa11x0_register_irda(&h3100_irda_data); } Loading Loading
arch/arm/mach-sa1100/assabet.c +100 −30 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include <linux/delay.h> #include <linux/mm.h> #include <video/sa1100fb.h> #include <mach/hardware.h> #include <asm/mach-types.h> #include <asm/irq.h> Loading Loading @@ -69,33 +71,6 @@ void ASSABET_BCR_frob(unsigned int mask, unsigned int val) EXPORT_SYMBOL(ASSABET_BCR_frob); static void assabet_backlight_power(int on) { #ifndef ASSABET_PAL_VIDEO if (on) ASSABET_BCR_set(ASSABET_BCR_LIGHT_ON); else #endif ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON); } /* * Turn on/off the backlight. When turning the backlight on, * we wait 500us after turning it on so we don't cause the * supplies to droop when we enable the LCD controller (and * cause a hard reset.) */ static void assabet_lcd_power(int on) { #ifndef ASSABET_PAL_VIDEO if (on) { ASSABET_BCR_set(ASSABET_BCR_LCD_ON); udelay(500); } else #endif ASSABET_BCR_clear(ASSABET_BCR_LCD_ON); } /* * Assabet flash support code. Loading Loading @@ -197,6 +172,99 @@ static struct mcp_plat_data assabet_mcp_data = { .sclk_rate = 11981000, }; static void assabet_lcd_set_visual(u32 visual) { u_int is_true_color = visual == FB_VISUAL_TRUECOLOR; if (machine_is_assabet()) { #if 1 // phase 4 or newer Assabet's if (is_true_color) ASSABET_BCR_set(ASSABET_BCR_LCD_12RGB); else ASSABET_BCR_clear(ASSABET_BCR_LCD_12RGB); #else // older Assabet's if (is_true_color) ASSABET_BCR_clear(ASSABET_BCR_LCD_12RGB); else ASSABET_BCR_set(ASSABET_BCR_LCD_12RGB); #endif } } #ifndef ASSABET_PAL_VIDEO static void assabet_lcd_backlight_power(int on) { if (on) ASSABET_BCR_set(ASSABET_BCR_LIGHT_ON); else ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON); } /* * Turn on/off the backlight. When turning the backlight on, we wait * 500us after turning it on so we don't cause the supplies to droop * when we enable the LCD controller (and cause a hard reset.) */ static void assabet_lcd_power(int on) { if (on) { ASSABET_BCR_set(ASSABET_BCR_LCD_ON); udelay(500); } else ASSABET_BCR_clear(ASSABET_BCR_LCD_ON); } /* * The assabet uses a sharp LQ039Q2DS54 LCD module. It is actually * takes an RGB666 signal, but we provide it with an RGB565 signal * instead (def_rgb_16). */ static struct sa1100fb_mach_info lq039q2ds54_info = { .pixclock = 171521, .bpp = 16, .xres = 320, .yres = 240, .hsync_len = 5, .vsync_len = 1, .left_margin = 61, .upper_margin = 3, .right_margin = 9, .lower_margin = 0, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2), .backlight_power = assabet_lcd_backlight_power, .lcd_power = assabet_lcd_power, .set_visual = assabet_lcd_set_visual, }; #else static void assabet_pal_backlight_power(int on) { ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON); } static void assabet_pal_power(int on) { ASSABET_BCR_clear(ASSABET_BCR_LCD_ON); } static struct sa1100fb_mach_info pal_info = { .pixclock = 67797, .bpp = 16, .xres = 640, .yres = 512, .hsync_len = 64, .vsync_len = 6, .left_margin = 125, .upper_margin = 70, .right_margin = 115, .lower_margin = 36, .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(512), .backlight_power = assabet_pal_backlight_power, .lcd_power = assabet_pal_power, .set_visual = assabet_lcd_set_visual, }; #endif #ifdef CONFIG_ASSABET_NEPONSET static struct resource neponset_resources[] = { DEFINE_RES_MEM(0x10000000, 0x08000000), Loading Loading @@ -241,9 +309,6 @@ static void __init assabet_init(void) PPDR |= PPC_TXD3 | PPC_TXD1; PPSR |= PPC_TXD3 | PPC_TXD1; sa1100fb_lcd_power = assabet_lcd_power; sa1100fb_backlight_power = assabet_backlight_power; if (machine_has_neponset()) { /* * Angel sets this, but other bootloaders may not. Loading @@ -262,6 +327,11 @@ static void __init assabet_init(void) #endif } #ifndef ASSABET_PAL_VIDEO sa11x0_register_lcd(&lq039q2ds54_info); #else sa11x0_register_lcd(&pal_video); #endif sa11x0_register_mtd(&assabet_flash_data, assabet_flash_resources, ARRAY_SIZE(assabet_flash_resources)); sa11x0_register_irda(&assabet_irda_data); Loading
arch/arm/mach-sa1100/collie.c +17 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ #include <linux/gpio.h> #include <linux/pda_power.h> #include <video/sa1100fb.h> #include <mach/hardware.h> #include <asm/mach-types.h> #include <asm/irq.h> Loading Loading @@ -294,6 +296,20 @@ static struct resource collie_flash_resources[] = { DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M), }; static struct sa1100fb_mach_info collie_lcd_info = { .pixclock = 171521, .bpp = 16, .xres = 320, .yres = 240, .hsync_len = 5, .vsync_len = 1, .left_margin = 11, .upper_margin = 2, .right_margin = 30, .lower_margin = 0, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2), }; static void __init collie_init(void) { int ret = 0; Loading Loading @@ -332,6 +348,7 @@ static void __init collie_init(void) printk(KERN_WARNING "collie: Unable to register LoCoMo device\n"); } sa11x0_register_lcd(&collie_lcd_info); sa11x0_register_mtd(&collie_flash_data, collie_flash_resources, ARRAY_SIZE(collie_flash_resources)); sa11x0_register_mcp(&collie_mcp_data); Loading
arch/arm/mach-sa1100/generic.c +7 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include <linux/ioport.h> #include <linux/platform_device.h> #include <video/sa1100fb.h> #include <asm/div64.h> #include <mach/hardware.h> #include <asm/system.h> Loading Loading @@ -247,6 +249,11 @@ static struct platform_device sa11x0fb_device = { .resource = sa11x0fb_resources, }; void sa11x0_register_lcd(struct sa1100fb_mach_info *inf) { sa11x0_register_device(&sa11x0fb_device, inf); } static struct platform_device sa11x0pcmcia_device = { .name = "sa11x0-pcmcia", .id = -1, Loading Loading @@ -319,7 +326,6 @@ static struct platform_device *sa11x0_devices[] __initdata = { &sa11x0uart3_device, &sa11x0ssp_device, &sa11x0pcmcia_device, &sa11x0fb_device, &sa11x0rtc_device, &sa11x0dma_device, }; Loading @@ -332,12 +338,6 @@ static int __init sa1100_init(void) arch_initcall(sa1100_init); void (*sa1100fb_backlight_power)(int on); void (*sa1100fb_lcd_power)(int on); EXPORT_SYMBOL(sa1100fb_backlight_power); EXPORT_SYMBOL(sa1100fb_lcd_power); /* * Common I/O mapping: Loading
arch/arm/mach-sa1100/generic.h +3 −3 Original line number Diff line number Diff line Loading @@ -16,9 +16,6 @@ extern void sa11x0_restart(char, const char *); mi->bank[__nr].start = (__start), \ mi->bank[__nr].size = (__size) extern void (*sa1100fb_backlight_power)(int on); extern void (*sa1100fb_lcd_power)(int on); extern void sa1110_mb_enable(void); extern void sa1110_mb_disable(void); Loading @@ -40,3 +37,6 @@ void sa11x0_register_irda(struct irda_platform_data *irda); struct mcp_plat_data; void sa11x0_register_mcp(struct mcp_plat_data *data); struct sa1100fb_mach_info; void sa11x0_register_lcd(struct sa1100fb_mach_info *inf);
arch/arm/mach-sa1100/h3100.c +21 −2 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ #include <linux/kernel.h> #include <linux/gpio.h> #include <video/sa1100fb.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/irda.h> Loading @@ -36,13 +38,28 @@ static void h3100_lcd_power(int enable) } } static struct sa1100fb_mach_info h3100_lcd_info = { .pixclock = 406977, .bpp = 4, .xres = 320, .yres = 240, .hsync_len = 26, .vsync_len = 41, .left_margin = 4, .upper_margin = 0, .right_margin = 4, .lower_margin = 0, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, .cmap_greyscale = 1, .cmap_inverse = 1, .lccr0 = LCCR0_Mono | LCCR0_4PixMono | LCCR0_Sngl | LCCR0_Pas, .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2), .lcd_power = h3100_lcd_power, }; static void __init h3100_map_io(void) { h3xxx_map_io(); sa1100fb_lcd_power = h3100_lcd_power; /* Older bootldrs put GPIO2-9 in alternate mode on the assumption that they are used for video */ GAFR &= ~0x000001fb; Loading Loading @@ -80,6 +97,8 @@ static void __init h3100_mach_init(void) { h3xxx_init_gpio(h3100_default_gpio, ARRAY_SIZE(h3100_default_gpio)); h3xxx_mach_init(); sa11x0_register_lcd(&h3100_lcd_info); sa11x0_register_irda(&h3100_irda_data); } Loading