|
@@ -462,3 +462,117 @@ static struct pxafb_mode_info sharp_lcd_mode = {
|
|
|
.vsync_len = 2,
|
|
|
.upper_margin = 0,
|
|
|
.lower_margin = 0,
|
|
|
+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
|
|
|
+ .cmap_greyscale = 0,
|
|
|
+};
|
|
|
+
|
|
|
+static struct pxafb_mach_info sharp_lcd = {
|
|
|
+ .modes = &sharp_lcd_mode,
|
|
|
+ .num_modes = 1,
|
|
|
+ .lcd_conn = LCD_COLOR_DSTN_16BPP | LCD_PCLK_EDGE_FALL,
|
|
|
+ .cmap_inverse = 0,
|
|
|
+ .cmap_static = 0,
|
|
|
+ .pxafb_backlight_power = board_backlight_power,
|
|
|
+};
|
|
|
+
|
|
|
+static struct pxafb_mode_info toshiba_lcd_mode = {
|
|
|
+ .pixclock = 39720,
|
|
|
+ .xres = 640,
|
|
|
+ .yres = 480,
|
|
|
+ .bpp = 8,
|
|
|
+ .hsync_len = 63,
|
|
|
+ .left_margin = 12,
|
|
|
+ .right_margin = 12,
|
|
|
+ .vsync_len = 4,
|
|
|
+ .upper_margin = 32,
|
|
|
+ .lower_margin = 10,
|
|
|
+ .sync = 0,
|
|
|
+ .cmap_greyscale = 0,
|
|
|
+};
|
|
|
+
|
|
|
+static struct pxafb_mach_info toshiba_lcd = {
|
|
|
+ .modes = &toshiba_lcd_mode,
|
|
|
+ .num_modes = 1,
|
|
|
+ .lcd_conn = (LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL),
|
|
|
+ .cmap_inverse = 0,
|
|
|
+ .cmap_static = 0,
|
|
|
+ .pxafb_backlight_power = board_backlight_power,
|
|
|
+};
|
|
|
+
|
|
|
+static void __init trizeps4_init(void)
|
|
|
+{
|
|
|
+ pxa2xx_mfp_config(ARRAY_AND_SIZE(trizeps4_pin_config));
|
|
|
+ if (machine_is_trizeps4wl()) {
|
|
|
+ pxa2xx_mfp_config(ARRAY_AND_SIZE(trizeps4wl_pin_config));
|
|
|
+ platform_add_devices(trizeps4wl_devices,
|
|
|
+ ARRAY_SIZE(trizeps4wl_devices));
|
|
|
+ } else {
|
|
|
+ platform_add_devices(trizeps4_devices,
|
|
|
+ ARRAY_SIZE(trizeps4_devices));
|
|
|
+ }
|
|
|
+
|
|
|
+ pxa_set_ffuart_info(NULL);
|
|
|
+ pxa_set_btuart_info(NULL);
|
|
|
+ pxa_set_stuart_info(NULL);
|
|
|
+
|
|
|
+ if (0) /* dont know how to determine LCD */
|
|
|
+ pxa_set_fb_info(NULL, &sharp_lcd);
|
|
|
+ else
|
|
|
+ pxa_set_fb_info(NULL, &toshiba_lcd);
|
|
|
+
|
|
|
+ pxa_set_mci_info(&trizeps4_mci_platform_data);
|
|
|
+#ifndef STATUS_LEDS_ON_STUART_PINS
|
|
|
+ pxa_set_ficp_info(&trizeps4_ficp_platform_data);
|
|
|
+#endif
|
|
|
+ pxa_set_ohci_info(&trizeps4_ohci_platform_data);
|
|
|
+ pxa_set_ac97_info(NULL);
|
|
|
+ pxa_set_i2c_info(NULL);
|
|
|
+ i2c_register_board_info(0, trizeps4_i2c_devices,
|
|
|
+ ARRAY_SIZE(trizeps4_i2c_devices));
|
|
|
+
|
|
|
+ /* this is the reset value */
|
|
|
+ trizeps_conxs_bcr = 0x00A0;
|
|
|
+
|
|
|
+ BCR_writew(trizeps_conxs_bcr);
|
|
|
+ board_backlight_power(1);
|
|
|
+}
|
|
|
+
|
|
|
+static void __init trizeps4_map_io(void)
|
|
|
+{
|
|
|
+ pxa27x_map_io();
|
|
|
+ iotable_init(trizeps4_io_desc, ARRAY_SIZE(trizeps4_io_desc));
|
|
|
+
|
|
|
+ if ((__raw_readl(MSC0) & 0x8) && (__raw_readl(BOOT_DEF) & 0x1)) {
|
|
|
+ /* if flash is 16 bit wide its a Trizeps4 WL */
|
|
|
+ __machine_arch_type = MACH_TYPE_TRIZEPS4WL;
|
|
|
+ trizeps4_flash_data[0].width = 2;
|
|
|
+ } else {
|
|
|
+ /* if flash is 32 bit wide its a Trizeps4 */
|
|
|
+ __machine_arch_type = MACH_TYPE_TRIZEPS4;
|
|
|
+ trizeps4_flash_data[0].width = 4;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module")
|
|
|
+ /* MAINTAINER("Jürgen Schindele") */
|
|
|
+ .atag_offset = 0x100,
|
|
|
+ .init_machine = trizeps4_init,
|
|
|
+ .map_io = trizeps4_map_io,
|
|
|
+ .nr_irqs = PXA_NR_IRQS,
|
|
|
+ .init_irq = pxa27x_init_irq,
|
|
|
+ .handle_irq = pxa27x_handle_irq,
|
|
|
+ .timer = &pxa_timer,
|
|
|
+ .restart = pxa_restart,
|
|
|
+MACHINE_END
|
|
|
+
|
|
|
+MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module")
|
|
|
+ /* MAINTAINER("Jürgen Schindele") */
|
|
|
+ .atag_offset = 0x100,
|
|
|
+ .init_machine = trizeps4_init,
|
|
|
+ .map_io = trizeps4_map_io,
|
|
|
+ .nr_irqs = PXA_NR_IRQS,
|
|
|
+ .init_irq = pxa27x_init_irq,
|
|
|
+ .handle_irq = pxa27x_handle_irq,
|
|
|
+ .timer = &pxa_timer,
|
|
|
+ .restart = pxa_restart,
|
|
|
+MACHINE_END
|