aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s5pv210/mach-smdkc110.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-s5pv210/mach-smdkc110.c')
-rw-r--r--arch/arm/mach-s5pv210/mach-smdkc110.c589
1 files changed, 7 insertions, 582 deletions
diff --git a/arch/arm/mach-s5pv210/mach-smdkc110.c b/arch/arm/mach-s5pv210/mach-smdkc110.c
index 85d1b73..6c412c8 100644
--- a/arch/arm/mach-s5pv210/mach-smdkc110.c
+++ b/arch/arm/mach-s5pv210/mach-smdkc110.c
@@ -10,51 +10,27 @@
#include <linux/kernel.h>
#include <linux/types.h>
-#include <linux/i2c.h>
-#include <linux/regulator/consumer.h>
-#include <linux/regulator/fixed.h>
-#include <linux/regulator/machine.h>
-#include <linux/mfd/max8698.h>
#include <linux/init.h>
#include <linux/serial_core.h>
+#include <linux/i2c.h>
#include <linux/sysdev.h>
-#include <linux/dm9000.h>
-#include <linux/fb.h>
-#include <linux/gpio.h>
-#include <linux/gpio_event.h>
-#include <linux/delay.h>
-#include <linux/pwm_backlight.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
-#include <video/platform_lcd.h>
-
#include <mach/map.h>
-#include <mach/gpio.h>
#include <mach/regs-clock.h>
-#include <mach/cpu-freq-v210.h>
-#include <mach/media.h>
#include <plat/regs-serial.h>
-#include <plat/regs-srom.h>
-#include <plat/gpio-cfg.h>
#include <plat/s5pv210.h>
#include <plat/devs.h>
#include <plat/cpu.h>
-#include <plat/adc.h>
-#include <plat/ts.h>
#include <plat/ata.h>
#include <plat/iic.h>
-#include <plat/keypad.h>
#include <plat/pm.h>
-#include <plat/fb.h>
#include <plat/s5p-time.h>
-#include <plat/media.h>
-#include <plat/backlight.h>
-#include <plat/regs-fb-v4.h>
/* Following are default values for UCON, ULCON and UFCON UART registers */
#define SMDKC110_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
@@ -101,511 +77,23 @@ static struct s3c2410_uartcfg smdkv210_uartcfgs[] __initdata = {
},
};
-#ifdef CONFIG_CPU_FREQ
-static struct s5pv210_cpufreq_voltage smdkc110_cpufreq_volt[] = {
- {
- .freq = 1000000,
- .varm = 1275000,
- .vint = 1100000,
- }, {
- .freq = 800000,
- .varm = 1200000,
- .vint = 1100000,
- }, {
- .freq = 400000,
- .varm = 1050000,
- .vint = 1100000,
- }, {
- .freq = 200000,
- .varm = 950000,
- .vint = 1100000,
- }, {
- .freq = 100000,
- .varm = 950000,
- .vint = 1000000,
- },
-};
-
-static struct s5pv210_cpufreq_data smdkc110_cpufreq_plat = {
- .volt = smdkc110_cpufreq_volt,
- .size = ARRAY_SIZE(smdkc110_cpufreq_volt),
-};
-#endif
-
-#if defined(CONFIG_REGULATOR_MAX8698)
-/* LDO */
-static struct regulator_consumer_supply smdkc110_ldo3_consumer[] = {
- REGULATOR_SUPPLY("pd_io", "s3c-usbgadget")
-};
-
-static struct regulator_consumer_supply smdkc110_ldo5_consumer[] = {
- REGULATOR_SUPPLY("AVDD", "0-001b"),
- REGULATOR_SUPPLY("DVDD", "0-001b"),
-};
-
-static struct regulator_consumer_supply smdkc110_ldo8_consumer[] = {
- REGULATOR_SUPPLY("pd_core", "s3c-usbgadget")
-};
-
-static struct regulator_init_data smdkc110_ldo2_data = {
- .constraints = {
- .name = "VALIVE_1.1V",
- .min_uV = 1100000,
- .max_uV = 1100000,
- .apply_uV = 1,
- .always_on = 1,
- .state_mem = {
- .enabled = 1,
- },
- },
-};
-
-static struct regulator_init_data smdkc110_ldo3_data = {
- .constraints = {
- .name = "VUOTG_D+VUHOST_D_1.1V",
- .min_uV = 1100000,
- .max_uV = 1100000,
- .apply_uV = 1,
- .valid_ops_mask = REGULATOR_CHANGE_STATUS,
- .state_mem = {
- .disabled = 1,
- },
- },
- .num_consumer_supplies = ARRAY_SIZE(smdkc110_ldo3_consumer),
- .consumer_supplies = smdkc110_ldo3_consumer,
-};
-
-static struct regulator_init_data smdkc110_ldo4_data = {
- .constraints = {
- .name = "V_MIPI_1.8V",
- .min_uV = 1800000,
- .max_uV = 1800000,
- .apply_uV = 1,
- .always_on = 1,
- .valid_ops_mask = REGULATOR_CHANGE_STATUS,
- .state_mem = {
- .disabled = 1,
- },
- },
-};
-
-static struct regulator_init_data smdkc110_ldo5_data = {
- .constraints = {
- .name = "VMMC+VEXT_2.8V",
- .min_uV = 2800000,
- .max_uV = 2800000,
- .apply_uV = 1,
- .always_on = 1,
- .valid_ops_mask = REGULATOR_CHANGE_STATUS,
- .state_mem = {
- .enabled = 1,
- },
- },
- .num_consumer_supplies = ARRAY_SIZE(smdkc110_ldo5_consumer),
- .consumer_supplies = smdkc110_ldo5_consumer,
-};
-
-static struct regulator_init_data smdkc110_ldo6_data = {
- .constraints = {
- .name = "VCC_2.6V",
- .min_uV = 2600000,
- .max_uV = 2600000,
- .apply_uV = 1,
- .always_on = 1,
- .valid_ops_mask = REGULATOR_CHANGE_STATUS,
- .state_mem = {
- .disabled = 1,
- },
- },
-};
-
-static struct regulator_init_data smdkc110_ldo7_data = {
- .constraints = {
- .name = "VDAC_2.8V",
- .min_uV = 2800000,
- .max_uV = 2800000,
- .apply_uV = 1,
- .valid_ops_mask = REGULATOR_CHANGE_STATUS,
- .state_mem = {
- .enabled = 1,
- },
- },
-};
-
-static struct regulator_init_data smdkc110_ldo8_data = {
- .constraints = {
- .name = "VUOTG_A+VUHOST_A_3.3V",
- .min_uV = 3300000,
- .max_uV = 3300000,
- .apply_uV = 1,
- .valid_ops_mask = REGULATOR_CHANGE_STATUS,
- .state_mem = {
- .disabled = 1,
- },
- },
- .num_consumer_supplies = ARRAY_SIZE(smdkc110_ldo8_consumer),
- .consumer_supplies = smdkc110_ldo8_consumer,
-};
-
-static struct regulator_init_data smdkc110_ldo9_data = {
- .constraints = {
- .name = "VADC+VSYS+VKEY_2.8V",
- .min_uV = 2800000,
- .max_uV = 2800000,
- .apply_uV = 1,
- .always_on = 1,
- .state_mem = {
- .enabled = 1,
- },
- },
-};
-
-/* BUCK */
-static struct regulator_consumer_supply smdkc110_buck1_consumer =
- REGULATOR_SUPPLY("vddarm", NULL);
-
-static struct regulator_consumer_supply smdkc110_buck2_consumer =
- REGULATOR_SUPPLY("vddint", NULL);
-
-static struct regulator_init_data smdkc110_buck1_data = {
- .constraints = {
- .name = "VCC_ARM",
- .min_uV = 750000,
- .max_uV = 1500000,
- .apply_uV = 1,
- .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
- REGULATOR_CHANGE_STATUS,
- .state_mem = {
- .uV = 1250000,
- .mode = REGULATOR_MODE_NORMAL,
- .disabled = 1,
- },
- },
- .num_consumer_supplies = 1,
- .consumer_supplies = &smdkc110_buck1_consumer,
-};
-
-static struct regulator_init_data smdkc110_buck2_data = {
- .constraints = {
- .name = "VCC_INTERNAL",
- .min_uV = 950000,
- .max_uV = 1200000,
- .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
- REGULATOR_CHANGE_STATUS,
- .state_mem = {
- .uV = 1100000,
- .mode = REGULATOR_MODE_NORMAL,
- .disabled = 1,
- },
- },
- .num_consumer_supplies = 1,
- .consumer_supplies = &smdkc110_buck2_consumer,
-};
-
-static struct regulator_init_data smdkc110_buck3_data = {
- .constraints = {
- .name = "VCC_MEM",
- .min_uV = 1800000,
- .max_uV = 1800000,
- .always_on = 1,
- .apply_uV = 1,
- .state_mem = {
- .uV = 1800000,
- .mode = REGULATOR_MODE_NORMAL,
- .enabled = 1,
- },
- },
-};
-
-static struct max8698_regulator_data smdkc110_regulators[] = {
- { MAX8698_LDO2, &smdkc110_ldo2_data },
- { MAX8698_LDO3, &smdkc110_ldo3_data },
- { MAX8698_LDO4, &smdkc110_ldo4_data },
- { MAX8698_LDO5, &smdkc110_ldo5_data },
- { MAX8698_LDO6, &smdkc110_ldo6_data },
- { MAX8698_LDO7, &smdkc110_ldo7_data },
- { MAX8698_LDO8, &smdkc110_ldo8_data },
- { MAX8698_LDO9, &smdkc110_ldo9_data },
- { MAX8698_BUCK1, &smdkc110_buck1_data },
- { MAX8698_BUCK2, &smdkc110_buck2_data },
- { MAX8698_BUCK3, &smdkc110_buck3_data },
-};
-
-static struct max8698_platform_data smdkc110_max8698_pdata = {
- .num_regulators = ARRAY_SIZE(smdkc110_regulators),
- .regulators = smdkc110_regulators,
-
- /* 1GHz default voltage */
- .dvsarm1 = 0xa, /* 1.25v */
- .dvsarm2 = 0x9, /* 1.20V */
- .dvsarm3 = 0x6, /* 1.05V */
- .dvsarm4 = 0x4, /* 0.95V */
- .dvsint1 = 0x7, /* 1.10v */
- .dvsint2 = 0x5, /* 1.00V */
-
- .set1 = S5PV210_GPH1(6),
- .set2 = S5PV210_GPH1(7),
- .set3 = S5PV210_GPH0(4),
-};
-#endif
-
static struct s3c_ide_platdata smdkc110_ide_pdata __initdata = {
.setup_gpio = s5pv210_ide_setup_gpio,
};
-static uint32_t smdkc110_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 smdkc110_keymap_data __initdata = {
- .keymap = smdkc110_keymap,
- .keymap_size = ARRAY_SIZE(smdkc110_keymap),
-};
-
-static struct samsung_keypad_platdata smdkc110_keypad_data __initdata = {
- .keymap_data = &smdkc110_keymap_data,
- .rows = 2,
- .cols = 8,
-};
-
-static struct resource smdkc110_dm9000_resources[] = {
- [0] = {
- .start = S5PV210_PA_SROM_BANK5,
- .end = S5PV210_PA_SROM_BANK5,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = S5PV210_PA_SROM_BANK5 + 2,
- .end = S5PV210_PA_SROM_BANK5 + 2,
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = IRQ_EINT(9),
- .end = IRQ_EINT(9),
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
- },
-};
-
-static struct dm9000_plat_data smdkc110_dm9000_platdata = {
- .flags = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM,
- .dev_addr = { 0x00, 0x09, 0xc0, 0xff, 0xec, 0x48 },
-};
-
-struct platform_device smdkc110_dm9000 = {
- .name = "dm9000",
- .id = -1,
- .num_resources = ARRAY_SIZE(smdkc110_dm9000_resources),
- .resource = smdkc110_dm9000_resources,
- .dev = {
- .platform_data = &smdkc110_dm9000_platdata,
- },
-};
-
-#ifdef CONFIG_REGULATOR
-static struct regulator_consumer_supply smdkc110_b_pwr_5v_consumers[] = {
- {
- /* WM8580 */
- .supply = "PVDD",
- .dev_name = "0-001b",
- },
-};
-
-static struct regulator_init_data smdkc110_b_pwr_5v_data = {
- .constraints = {
- .always_on = 1,
- },
- .num_consumer_supplies = ARRAY_SIZE(smdkc110_b_pwr_5v_consumers),
- .consumer_supplies = smdkc110_b_pwr_5v_consumers,
-};
-
-static struct fixed_voltage_config smdkc110_b_pwr_5v_pdata = {
- .supply_name = "B_PWR_5V",
- .microvolts = 5000000,
- .init_data = &smdkc110_b_pwr_5v_data,
-};
-
-static struct platform_device smdkc110_b_pwr_5v = {
- .name = "reg-fixed-voltage",
- .id = -1,
- .dev = {
- .platform_data = &smdkc110_b_pwr_5v_pdata,
- },
-};
-#endif
-
-static void smdkc110_lte480wv_set_power(struct plat_lcd_data *pd,
- unsigned int power)
-{
- if (power) {
-#if !defined(CONFIG_BACKLIGHT_PWM)
- gpio_request(S5PV210_GPD0(3), "GPD0");
- gpio_direction_output(S5PV210_GPD0(3), 1);
- gpio_free(S5PV210_GPD0(3));
-#endif
-
- /* fire nRESET on power up */
- gpio_request(S5PV210_GPH0(6), "GPH0");
-
- gpio_direction_output(S5PV210_GPH0(6), 1);
-
- gpio_set_value(S5PV210_GPH0(6), 0);
- mdelay(10);
-
- gpio_set_value(S5PV210_GPH0(6), 1);
- mdelay(10);
-
- gpio_free(S5PV210_GPH0(6));
- } else {
-#if !defined(CONFIG_BACKLIGHT_PWM)
- gpio_request(S5PV210_GPD0(3), "GPD0");
- gpio_direction_output(S5PV210_GPD0(3), 0);
- gpio_free(S5PV210_GPD0(3));
-#endif
- }
-}
-
-static struct plat_lcd_data smdkc110_lcd_lte480wv_data = {
- .set_power = smdkc110_lte480wv_set_power,
-};
-
-static struct platform_device smdkc110_lcd_lte480wv = {
- .name = "platform-lcd",
- .dev.parent = &s3c_device_fb.dev,
- .dev.platform_data = &smdkc110_lcd_lte480wv_data,
-};
-
-static struct s3c_fb_pd_win smdkc110_fb_win0 = {
- .win_mode = {
- .left_margin = 13,
- .right_margin = 8,
- .upper_margin = 7,
- .lower_margin = 5,
- .hsync_len = 3,
- .vsync_len = 1,
- .xres = 800,
- .yres = 480,
- },
- .max_bpp = 32,
- .default_bpp = 24,
-};
-
-static struct s3c_fb_platdata smdkc110_lcd0_pdata __initdata = {
- .win[0] = &smdkc110_fb_win0,
- .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
- .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
- .setup_gpio = s5pv210_fb_gpio_setup_24bpp,
-};
-
-static struct gpio_event_direct_entry smdkc110_keypad_key_map[] = {
- {
- .gpio = S5PV210_GPH3(7),
- .code = KEY_POWER,
- }
-};
-
-static struct gpio_event_input_info smdkc110_keypad_key_info = {
- .info.func = gpio_event_input_func,
- .info.no_suspend = true,
- .debounce_time.tv64 = 5 * NSEC_PER_MSEC,
- .type = EV_KEY,
- .keymap = smdkc110_keypad_key_map,
- .keymap_size = ARRAY_SIZE(smdkc110_keypad_key_map)
-};
-
-static struct gpio_event_info *smdkc110_input_info[] = {
- &smdkc110_keypad_key_info.info,
-};
-
-static struct gpio_event_platform_data smdkc110_input_data = {
- .names = {
- "smdkc110-keypad",
- NULL,
- },
- .info = smdkc110_input_info,
- .info_count = ARRAY_SIZE(smdkc110_input_info),
-};
-
-static struct platform_device smdkc110_input_device = {
- .name = GPIO_EVENT_DEV_NAME,
- .id = 0,
- .dev = {
- .platform_data = &smdkc110_input_data,
- },
-};
-
-#ifdef CONFIG_BATTERY_SAMSUNG
-static struct platform_device samsung_device_battery = {
- .name = "samsung-fake-battery",
- .id = -1,
-};
-#endif
-
static struct platform_device *smdkc110_devices[] __initdata = {
- &s3c_device_adc,
+ &samsung_asoc_dma,
+ &s5pv210_device_iis0,
+ &s5pv210_device_ac97,
+ &s5pv210_device_spdif,
&s3c_device_cfcon,
- &s3c_device_fb,
- &s3c_device_hsmmc0,
- &s3c_device_hsmmc1,
- &s3c_device_hsmmc2,
- &s3c_device_hsmmc3,
&s3c_device_i2c0,
&s3c_device_i2c1,
&s3c_device_i2c2,
&s3c_device_rtc,
- &s3c_device_ts,
&s3c_device_wdt,
- &s5pv210_device_ac97,
- &s5pv210_device_iis0,
- &s5pv210_device_spdif,
-#ifdef CONFIG_CPU_FREQ
- &s5pv210_device_cpufreq,
-#endif
- &samsung_asoc_dma,
- &samsung_device_keypad,
-#ifdef CONFIG_BATTERY_SAMSUNG
- &samsung_device_battery,
-#endif
- &smdkc110_dm9000,
- &smdkc110_lcd_lte480wv,
- &smdkc110_input_device,
-#ifdef CONFIG_REGULATOR
- &smdkc110_b_pwr_5v,
-#endif
-#ifdef CONFIG_CRYPTO_S5P_DEV_ACE
- &s5p_device_ace,
-#endif
};
-static void __init smdkc110_button_init(void)
-{
- s3c_gpio_cfgpin(S5PV210_GPH3(7), (0xf << 28));
- s3c_gpio_setpull(S5PV210_GPH3(7), S3C_GPIO_PULL_NONE);
-
- s3c_gpio_cfgpin(S5PV210_GPH0(4), (0xf << 16));
- s3c_gpio_setpull(S5PV210_GPH0(4), S3C_GPIO_PULL_NONE);
-}
-
-static void __init smdkc110_dm9000_init(void)
-{
- unsigned int tmp;
-
- gpio_request(S5PV210_MP01(5), "nCS5");
- s3c_gpio_cfgpin(S5PV210_MP01(5), S3C_GPIO_SFN(2));
- gpio_free(S5PV210_MP01(5));
-
- tmp = (5 << S5P_SROM_BCX__TACC__SHIFT);
- __raw_writel(tmp, S5P_SROM_BC5);
-
- tmp = __raw_readl(S5P_SROM_BW);
- tmp &= (S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS5__SHIFT);
- tmp |= (1 << S5P_SROM_BW__NCS5__SHIFT);
- __raw_writel(tmp, S5P_SROM_BW);
-}
-
static struct i2c_board_info smdkc110_i2c_devs0[] __initdata = {
{ I2C_BOARD_INFO("24c08", 0x50), }, /* Samsung S524AD0XD1 */
{ I2C_BOARD_INFO("wm8580", 0x1b), },
@@ -616,51 +104,7 @@ static struct i2c_board_info smdkc110_i2c_devs1[] __initdata = {
};
static struct i2c_board_info smdkc110_i2c_devs2[] __initdata = {
-#if defined(CONFIG_REGULATOR_MAX8698)
- {
- I2C_BOARD_INFO("max8698", 0xCC >> 1),
- .platform_data = &smdkc110_max8698_pdata,
- },
-#endif
-};
-
-static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
- .delay = 10000,
- .presc = 49,
- .oversampling_shift = 2,
- .cal_x_max = 800,
- .cal_y_max = 480,
- .cal_param = {
- -13357, -85, 53858048, -95, -8493, 32809514, 65536
- },
-};
-
-static void smdkc110_sound_init(void)
-{
- u32 reg;
-
- reg = __raw_readl(S5P_CLK_OUT);
- reg &= ~S5P_CLKOUT_CLKSEL_MASK;
- reg &= ~S5P_CLKOUT_DIVVAL_MASK;
- reg |= S5P_CLKOUT_CLKSEL_XUSBXTI;
- reg |= 0x1 << S5P_CLKOUT_DIVVAL_SHIFT;
- __raw_writel(reg, S5P_CLK_OUT);
-
- reg = __raw_readl(S5P_OTHERS);
- reg &= ~S5P_OTHERS_CLKOUT_MASK;
- reg |= S5P_OTHERS_CLKOUT_SYSCON;
- __raw_writel(reg, S5P_OTHERS);
-}
-
-/* LCD Backlight data */
-static struct samsung_bl_gpio_info smdkc110_bl_gpio_info = {
- .no = S5PV210_GPD0(3),
- .func = S3C_GPIO_SFN(2),
-};
-
-static struct platform_pwm_backlight_data smdkc110_bl_data = {
- .pwm_id = 3,
- .pwm_period_ns = 1000,
+ /* To Be Updated */
};
static void __init smdkc110_map_io(void)
@@ -668,21 +112,13 @@ static void __init smdkc110_map_io(void)
s5p_init_io(NULL, 0, S5P_VA_CHIPID);
s3c24xx_init_clocks(24000000);
s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs));
- s5p_set_timer_source(S5P_PWM2, S5P_PWM4);
-
- s5p_reserve_mem(S5P_RANGE_MFC);
+ s5p_set_timer_source(S5P_PWM3, S5P_PWM4);
}
static void __init smdkc110_machine_init(void)
{
s3c_pm_init();
- smdkc110_button_init();
- smdkc110_dm9000_init();
-
- samsung_keypad_set_platdata(&smdkc110_keypad_data);
- s3c24xx_ts_set_platdata(&s3c_ts_platform);
-
s3c_i2c0_set_platdata(NULL);
s3c_i2c1_set_platdata(NULL);
s3c_i2c2_set_platdata(NULL);
@@ -695,17 +131,6 @@ static void __init smdkc110_machine_init(void)
s3c_ide_set_platdata(&smdkc110_ide_pdata);
- s3c_fb_set_platdata(&smdkc110_lcd0_pdata);
-
-#ifdef CONFIG_CPU_FREQ
- s5pv210_cpufreq_set_platdata(&smdkc110_cpufreq_plat);
-#endif
-
- /* SOUND */
- smdkc110_sound_init();
-
- samsung_bl_set(&smdkc110_bl_gpio_info, &smdkc110_bl_data);
-
platform_add_devices(smdkc110_devices, ARRAY_SIZE(smdkc110_devices));
}