|
@@ -161,3 +161,143 @@ static struct fb_videomode smdk6410_lcd_timing = {
|
|
|
.lower_margin = 5,
|
|
|
.hsync_len = 3,
|
|
|
.vsync_len = 1,
|
|
|
+ .xres = 800,
|
|
|
+ .yres = 480,
|
|
|
+};
|
|
|
+
|
|
|
+/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */
|
|
|
+static struct s3c_fb_platdata smdk6410_lcd_pdata __initdata = {
|
|
|
+ .setup_gpio = s3c64xx_fb_gpio_setup_24bpp,
|
|
|
+ .vtiming = &smdk6410_lcd_timing,
|
|
|
+ .win[0] = &smdk6410_fb_win0,
|
|
|
+ .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
|
|
+ .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * Configuring Ethernet on SMDK6410
|
|
|
+ *
|
|
|
+ * Both CS8900A and LAN9115 chips share one chip select mediated by CFG6.
|
|
|
+ * The constant address below corresponds to nCS1
|
|
|
+ *
|
|
|
+ * 1) Set CFGB2 p3 ON others off, no other CFGB selects "ethernet"
|
|
|
+ * 2) CFG6 needs to be switched to "LAN9115" side
|
|
|
+ */
|
|
|
+
|
|
|
+static struct resource smdk6410_smsc911x_resources[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C64XX_PA_XM0CSN1, SZ_64K),
|
|
|
+ [1] = DEFINE_RES_NAMED(S3C_EINT(10), 1, NULL, IORESOURCE_IRQ \
|
|
|
+ | IRQ_TYPE_LEVEL_LOW),
|
|
|
+};
|
|
|
+
|
|
|
+static struct smsc911x_platform_config smdk6410_smsc911x_pdata = {
|
|
|
+ .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
|
|
+ .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
|
|
|
+ .flags = SMSC911X_USE_32BIT | SMSC911X_FORCE_INTERNAL_PHY,
|
|
|
+ .phy_interface = PHY_INTERFACE_MODE_MII,
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+static struct platform_device smdk6410_smsc911x = {
|
|
|
+ .name = "smsc911x",
|
|
|
+ .id = -1,
|
|
|
+ .num_resources = ARRAY_SIZE(smdk6410_smsc911x_resources),
|
|
|
+ .resource = &smdk6410_smsc911x_resources[0],
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &smdk6410_smsc911x_pdata,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+#ifdef CONFIG_REGULATOR
|
|
|
+static struct regulator_consumer_supply smdk6410_b_pwr_5v_consumers[] __initdata = {
|
|
|
+ REGULATOR_SUPPLY("PVDD", "0-001b"),
|
|
|
+ REGULATOR_SUPPLY("AVDD", "0-001b"),
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data smdk6410_b_pwr_5v_data = {
|
|
|
+ .constraints = {
|
|
|
+ .always_on = 1,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = ARRAY_SIZE(smdk6410_b_pwr_5v_consumers),
|
|
|
+ .consumer_supplies = smdk6410_b_pwr_5v_consumers,
|
|
|
+};
|
|
|
+
|
|
|
+static struct fixed_voltage_config smdk6410_b_pwr_5v_pdata = {
|
|
|
+ .supply_name = "B_PWR_5V",
|
|
|
+ .microvolts = 5000000,
|
|
|
+ .init_data = &smdk6410_b_pwr_5v_data,
|
|
|
+ .gpio = -EINVAL,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device smdk6410_b_pwr_5v = {
|
|
|
+ .name = "reg-fixed-voltage",
|
|
|
+ .id = -1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &smdk6410_b_pwr_5v_pdata,
|
|
|
+ },
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+static struct s3c_ide_platdata smdk6410_ide_pdata __initdata = {
|
|
|
+ .setup_gpio = s3c64xx_ide_setup_gpio,
|
|
|
+};
|
|
|
+
|
|
|
+static uint32_t smdk6410_keymap[] __initdata = {
|
|
|
+ /* KEY(row, col, keycode) */
|
|
|
+ KEY(0, 3, KEY_1), KEY(0, 4, KEY_2), KEY(0, 5, KEY_3),
|
|
|
+ KEY(0, 6, KEY_4), KEY(0, 7, KEY_5),
|
|
|
+ KEY(1, 3, KEY_A), KEY(1, 4, KEY_B), KEY(1, 5, KEY_C),
|
|
|
+ KEY(1, 6, KEY_D), KEY(1, 7, KEY_E)
|
|
|
+};
|
|
|
+
|
|
|
+static struct matrix_keymap_data smdk6410_keymap_data __initdata = {
|
|
|
+ .keymap = smdk6410_keymap,
|
|
|
+ .keymap_size = ARRAY_SIZE(smdk6410_keymap),
|
|
|
+};
|
|
|
+
|
|
|
+static struct samsung_keypad_platdata smdk6410_keypad_data __initdata = {
|
|
|
+ .keymap_data = &smdk6410_keymap_data,
|
|
|
+ .rows = 2,
|
|
|
+ .cols = 8,
|
|
|
+};
|
|
|
+
|
|
|
+static struct map_desc smdk6410_iodesc[] = {};
|
|
|
+
|
|
|
+static struct platform_device *smdk6410_devices[] __initdata = {
|
|
|
+#ifdef CONFIG_SMDK6410_SD_CH0
|
|
|
+ &s3c_device_hsmmc0,
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_SMDK6410_SD_CH1
|
|
|
+ &s3c_device_hsmmc1,
|
|
|
+#endif
|
|
|
+ &s3c_device_i2c0,
|
|
|
+ &s3c_device_i2c1,
|
|
|
+ &s3c_device_fb,
|
|
|
+ &s3c_device_ohci,
|
|
|
+ &s3c_device_usb_hsotg,
|
|
|
+ &s3c64xx_device_iisv4,
|
|
|
+ &samsung_device_keypad,
|
|
|
+
|
|
|
+#ifdef CONFIG_REGULATOR
|
|
|
+ &smdk6410_b_pwr_5v,
|
|
|
+#endif
|
|
|
+ &smdk6410_lcd_powerdev,
|
|
|
+
|
|
|
+ &smdk6410_smsc911x,
|
|
|
+ &s3c_device_adc,
|
|
|
+ &s3c_device_cfcon,
|
|
|
+ &s3c_device_rtc,
|
|
|
+ &s3c_device_ts,
|
|
|
+ &s3c_device_wdt,
|
|
|
+};
|
|
|
+
|
|
|
+#ifdef CONFIG_REGULATOR
|
|
|
+/* ARM core */
|
|
|
+static struct regulator_consumer_supply smdk6410_vddarm_consumers[] = {
|
|
|
+ REGULATOR_SUPPLY("vddarm", NULL),
|
|
|
+};
|
|
|
+
|
|
|
+/* VDDARM, BUCK1 on J5 */
|
|
|
+static struct regulator_init_data smdk6410_vddarm = {
|
|
|
+ .constraints = {
|
|
|
+ .name = "PVDD_ARM",
|