|
@@ -635,3 +635,75 @@ static void __init smdk6410_map_io(void)
|
|
|
s3c64xx_init_io(smdk6410_iodesc, ARRAY_SIZE(smdk6410_iodesc));
|
|
|
s3c24xx_init_clocks(12000000);
|
|
|
s3c24xx_init_uarts(smdk6410_uartcfgs, ARRAY_SIZE(smdk6410_uartcfgs));
|
|
|
+
|
|
|
+ /* set the LCD type */
|
|
|
+
|
|
|
+ tmp = __raw_readl(S3C64XX_SPCON);
|
|
|
+ tmp &= ~S3C64XX_SPCON_LCD_SEL_MASK;
|
|
|
+ tmp |= S3C64XX_SPCON_LCD_SEL_RGB;
|
|
|
+ __raw_writel(tmp, S3C64XX_SPCON);
|
|
|
+
|
|
|
+ /* remove the lcd bypass */
|
|
|
+ tmp = __raw_readl(S3C64XX_MODEM_MIFPCON);
|
|
|
+ tmp &= ~MIFPCON_LCD_BYPASS;
|
|
|
+ __raw_writel(tmp, S3C64XX_MODEM_MIFPCON);
|
|
|
+}
|
|
|
+
|
|
|
+static void __init smdk6410_machine_init(void)
|
|
|
+{
|
|
|
+ u32 cs1;
|
|
|
+
|
|
|
+ s3c_i2c0_set_platdata(NULL);
|
|
|
+ s3c_i2c1_set_platdata(NULL);
|
|
|
+ s3c_fb_set_platdata(&smdk6410_lcd_pdata);
|
|
|
+ s3c_hsotg_set_platdata(&smdk6410_hsotg_pdata);
|
|
|
+
|
|
|
+ samsung_keypad_set_platdata(&smdk6410_keypad_data);
|
|
|
+
|
|
|
+ s3c24xx_ts_set_platdata(NULL);
|
|
|
+
|
|
|
+ /* configure nCS1 width to 16 bits */
|
|
|
+
|
|
|
+ cs1 = __raw_readl(S3C64XX_SROM_BW) &
|
|
|
+ ~(S3C64XX_SROM_BW__CS_MASK << S3C64XX_SROM_BW__NCS1__SHIFT);
|
|
|
+ cs1 |= ((1 << S3C64XX_SROM_BW__DATAWIDTH__SHIFT) |
|
|
|
+ (1 << S3C64XX_SROM_BW__WAITENABLE__SHIFT) |
|
|
|
+ (1 << S3C64XX_SROM_BW__BYTEENABLE__SHIFT)) <<
|
|
|
+ S3C64XX_SROM_BW__NCS1__SHIFT;
|
|
|
+ __raw_writel(cs1, S3C64XX_SROM_BW);
|
|
|
+
|
|
|
+ /* set timing for nCS1 suitable for ethernet chip */
|
|
|
+
|
|
|
+ __raw_writel((0 << S3C64XX_SROM_BCX__PMC__SHIFT) |
|
|
|
+ (6 << S3C64XX_SROM_BCX__TACP__SHIFT) |
|
|
|
+ (4 << S3C64XX_SROM_BCX__TCAH__SHIFT) |
|
|
|
+ (1 << S3C64XX_SROM_BCX__TCOH__SHIFT) |
|
|
|
+ (0xe << S3C64XX_SROM_BCX__TACC__SHIFT) |
|
|
|
+ (4 << S3C64XX_SROM_BCX__TCOS__SHIFT) |
|
|
|
+ (0 << S3C64XX_SROM_BCX__TACS__SHIFT), S3C64XX_SROM_BC1);
|
|
|
+
|
|
|
+ gpio_request(S3C64XX_GPN(5), "LCD power");
|
|
|
+ gpio_request(S3C64XX_GPF(13), "LCD power");
|
|
|
+
|
|
|
+ i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
|
|
|
+ i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
|
|
|
+
|
|
|
+ s3c_ide_set_platdata(&smdk6410_ide_pdata);
|
|
|
+
|
|
|
+ samsung_bl_set(&smdk6410_bl_gpio_info, &smdk6410_bl_data);
|
|
|
+
|
|
|
+ platform_add_devices(smdk6410_devices, ARRAY_SIZE(smdk6410_devices));
|
|
|
+}
|
|
|
+
|
|
|
+MACHINE_START(SMDK6410, "SMDK6410")
|
|
|
+ /* Maintainer: Ben Dooks <ben-linux@fluff.org> */
|
|
|
+ .atag_offset = 0x100,
|
|
|
+
|
|
|
+ .init_irq = s3c6410_init_irq,
|
|
|
+ .handle_irq = vic_handle_irq,
|
|
|
+ .map_io = smdk6410_map_io,
|
|
|
+ .init_machine = smdk6410_machine_init,
|
|
|
+ .init_late = s3c64xx_init_late,
|
|
|
+ .timer = &s3c24xx_timer,
|
|
|
+ .restart = s3c64xx_restart,
|
|
|
+MACHINE_END
|