diff options
Diffstat (limited to 'arch/arm/mach-s5pv210')
-rw-r--r-- | arch/arm/mach-s5pv210/clock.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/cpu.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/dev-audio.c | 56 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/include/mach/irqs.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/include/mach/map.h | 6 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/include/mach/regs-clock.h | 5 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/mach-smdkc110.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/mach-smdkv210.c | 58 |
8 files changed, 121 insertions, 29 deletions
diff --git a/arch/arm/mach-s5pv210/clock.c b/arch/arm/mach-s5pv210/clock.c index 019c3a69b0e4..dab6ef3b6ca9 100644 --- a/arch/arm/mach-s5pv210/clock.c +++ b/arch/arm/mach-s5pv210/clock.c | |||
@@ -467,20 +467,20 @@ static struct clk init_clocks_disable[] = { | |||
467 | .enable = s5pv210_clk_ip3_ctrl, | 467 | .enable = s5pv210_clk_ip3_ctrl, |
468 | .ctrlbit = (1<<21), | 468 | .ctrlbit = (1<<21), |
469 | }, { | 469 | }, { |
470 | .name = "i2s_v50", | 470 | .name = "iis", |
471 | .id = 0, | 471 | .id = 0, |
472 | .parent = &clk_p, | 472 | .parent = &clk_p, |
473 | .enable = s5pv210_clk_ip3_ctrl, | 473 | .enable = s5pv210_clk_ip3_ctrl, |
474 | .ctrlbit = (1<<4), | 474 | .ctrlbit = (1<<4), |
475 | }, { | 475 | }, { |
476 | .name = "i2s_v32", | 476 | .name = "iis", |
477 | .id = 0, | 477 | .id = 1, |
478 | .parent = &clk_p, | 478 | .parent = &clk_p, |
479 | .enable = s5pv210_clk_ip3_ctrl, | 479 | .enable = s5pv210_clk_ip3_ctrl, |
480 | .ctrlbit = (1 << 5), | 480 | .ctrlbit = (1 << 5), |
481 | }, { | 481 | }, { |
482 | .name = "i2s_v32", | 482 | .name = "iis", |
483 | .id = 1, | 483 | .id = 2, |
484 | .parent = &clk_p, | 484 | .parent = &clk_p, |
485 | .enable = s5pv210_clk_ip3_ctrl, | 485 | .enable = s5pv210_clk_ip3_ctrl, |
486 | .ctrlbit = (1 << 6), | 486 | .ctrlbit = (1 << 6), |
@@ -525,6 +525,12 @@ static struct clk init_clocks[] = { | |||
525 | .parent = &clk_pclk_psys.clk, | 525 | .parent = &clk_pclk_psys.clk, |
526 | .enable = s5pv210_clk_ip3_ctrl, | 526 | .enable = s5pv210_clk_ip3_ctrl, |
527 | .ctrlbit = (1 << 20), | 527 | .ctrlbit = (1 << 20), |
528 | }, { | ||
529 | .name = "sromc", | ||
530 | .id = -1, | ||
531 | .parent = &clk_hclk_psys.clk, | ||
532 | .enable = s5pv210_clk_ip1_ctrl, | ||
533 | .ctrlbit = (1 << 26), | ||
528 | }, | 534 | }, |
529 | }; | 535 | }; |
530 | 536 | ||
diff --git a/arch/arm/mach-s5pv210/cpu.c b/arch/arm/mach-s5pv210/cpu.c index 8eb480e201b0..61e6c24b90ac 100644 --- a/arch/arm/mach-s5pv210/cpu.c +++ b/arch/arm/mach-s5pv210/cpu.c | |||
@@ -81,11 +81,6 @@ static struct map_desc s5pv210_iodesc[] __initdata = { | |||
81 | .length = SZ_512K, | 81 | .length = SZ_512K, |
82 | .type = MT_DEVICE, | 82 | .type = MT_DEVICE, |
83 | }, { | 83 | }, { |
84 | .virtual = (unsigned long)S5P_VA_SROMC, | ||
85 | .pfn = __phys_to_pfn(S5PV210_PA_SROMC), | ||
86 | .length = SZ_4K, | ||
87 | .type = MT_DEVICE, | ||
88 | }, { | ||
89 | .virtual = (unsigned long)S5P_VA_DMC0, | 84 | .virtual = (unsigned long)S5P_VA_DMC0, |
90 | .pfn = __phys_to_pfn(S5PV210_PA_DMC0), | 85 | .pfn = __phys_to_pfn(S5PV210_PA_DMC0), |
91 | .length = SZ_4K, | 86 | .length = SZ_4K, |
diff --git a/arch/arm/mach-s5pv210/dev-audio.c b/arch/arm/mach-s5pv210/dev-audio.c index 1303fcb12b51..ddd2704b3467 100644 --- a/arch/arm/mach-s5pv210/dev-audio.c +++ b/arch/arm/mach-s5pv210/dev-audio.c | |||
@@ -19,22 +19,24 @@ | |||
19 | #include <mach/dma.h> | 19 | #include <mach/dma.h> |
20 | #include <mach/irqs.h> | 20 | #include <mach/irqs.h> |
21 | 21 | ||
22 | static const char *rclksrc[] = { | ||
23 | [0] = "busclk", | ||
24 | [1] = "i2sclk", | ||
25 | }; | ||
26 | |||
22 | static int s5pv210_cfg_i2s(struct platform_device *pdev) | 27 | static int s5pv210_cfg_i2s(struct platform_device *pdev) |
23 | { | 28 | { |
24 | /* configure GPIO for i2s port */ | 29 | /* configure GPIO for i2s port */ |
25 | switch (pdev->id) { | 30 | switch (pdev->id) { |
31 | case 0: | ||
32 | s3c_gpio_cfgpin_range(S5PV210_GPI(0), 7, S3C_GPIO_SFN(2)); | ||
33 | break; | ||
26 | case 1: | 34 | case 1: |
27 | s3c_gpio_cfgpin_range(S5PV210_GPC0(0), 5, S3C_GPIO_SFN(2)); | 35 | s3c_gpio_cfgpin_range(S5PV210_GPC0(0), 5, S3C_GPIO_SFN(2)); |
28 | break; | 36 | break; |
29 | |||
30 | case 2: | 37 | case 2: |
31 | s3c_gpio_cfgpin_range(S5PV210_GPC1(0), 5, S3C_GPIO_SFN(4)); | 38 | s3c_gpio_cfgpin_range(S5PV210_GPC1(0), 5, S3C_GPIO_SFN(4)); |
32 | break; | 39 | break; |
33 | |||
34 | case -1: | ||
35 | s3c_gpio_cfgpin_range(S5PV210_GPI(0), 7, S3C_GPIO_SFN(2)); | ||
36 | break; | ||
37 | |||
38 | default: | 40 | default: |
39 | printk(KERN_ERR "Invalid Device %d\n", pdev->id); | 41 | printk(KERN_ERR "Invalid Device %d\n", pdev->id); |
40 | return -EINVAL; | 42 | return -EINVAL; |
@@ -43,8 +45,15 @@ static int s5pv210_cfg_i2s(struct platform_device *pdev) | |||
43 | return 0; | 45 | return 0; |
44 | } | 46 | } |
45 | 47 | ||
46 | static struct s3c_audio_pdata s3c_i2s_pdata = { | 48 | static struct s3c_audio_pdata i2sv5_pdata = { |
47 | .cfg_gpio = s5pv210_cfg_i2s, | 49 | .cfg_gpio = s5pv210_cfg_i2s, |
50 | .type = { | ||
51 | .i2s = { | ||
52 | .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI | ||
53 | | QUIRK_NEED_RSTCLR, | ||
54 | .src_clk = rclksrc, | ||
55 | }, | ||
56 | }, | ||
48 | }; | 57 | }; |
49 | 58 | ||
50 | static struct resource s5pv210_iis0_resource[] = { | 59 | static struct resource s5pv210_iis0_resource[] = { |
@@ -63,15 +72,34 @@ static struct resource s5pv210_iis0_resource[] = { | |||
63 | .end = DMACH_I2S0_RX, | 72 | .end = DMACH_I2S0_RX, |
64 | .flags = IORESOURCE_DMA, | 73 | .flags = IORESOURCE_DMA, |
65 | }, | 74 | }, |
75 | [3] = { | ||
76 | .start = DMACH_I2S0S_TX, | ||
77 | .end = DMACH_I2S0S_TX, | ||
78 | .flags = IORESOURCE_DMA, | ||
79 | }, | ||
66 | }; | 80 | }; |
67 | 81 | ||
68 | struct platform_device s5pv210_device_iis0 = { | 82 | struct platform_device s5pv210_device_iis0 = { |
69 | .name = "s3c64xx-iis-v4", | 83 | .name = "samsung-i2s", |
70 | .id = -1, | 84 | .id = 0, |
71 | .num_resources = ARRAY_SIZE(s5pv210_iis0_resource), | 85 | .num_resources = ARRAY_SIZE(s5pv210_iis0_resource), |
72 | .resource = s5pv210_iis0_resource, | 86 | .resource = s5pv210_iis0_resource, |
73 | .dev = { | 87 | .dev = { |
74 | .platform_data = &s3c_i2s_pdata, | 88 | .platform_data = &i2sv5_pdata, |
89 | }, | ||
90 | }; | ||
91 | |||
92 | static const char *rclksrc_v3[] = { | ||
93 | [0] = "iis", | ||
94 | [1] = "audio-bus", | ||
95 | }; | ||
96 | |||
97 | static struct s3c_audio_pdata i2sv3_pdata = { | ||
98 | .cfg_gpio = s5pv210_cfg_i2s, | ||
99 | .type = { | ||
100 | .i2s = { | ||
101 | .src_clk = rclksrc_v3, | ||
102 | }, | ||
75 | }, | 103 | }, |
76 | }; | 104 | }; |
77 | 105 | ||
@@ -94,12 +122,12 @@ static struct resource s5pv210_iis1_resource[] = { | |||
94 | }; | 122 | }; |
95 | 123 | ||
96 | struct platform_device s5pv210_device_iis1 = { | 124 | struct platform_device s5pv210_device_iis1 = { |
97 | .name = "s3c64xx-iis", | 125 | .name = "samsung-i2s", |
98 | .id = 1, | 126 | .id = 1, |
99 | .num_resources = ARRAY_SIZE(s5pv210_iis1_resource), | 127 | .num_resources = ARRAY_SIZE(s5pv210_iis1_resource), |
100 | .resource = s5pv210_iis1_resource, | 128 | .resource = s5pv210_iis1_resource, |
101 | .dev = { | 129 | .dev = { |
102 | .platform_data = &s3c_i2s_pdata, | 130 | .platform_data = &i2sv3_pdata, |
103 | }, | 131 | }, |
104 | }; | 132 | }; |
105 | 133 | ||
@@ -122,12 +150,12 @@ static struct resource s5pv210_iis2_resource[] = { | |||
122 | }; | 150 | }; |
123 | 151 | ||
124 | struct platform_device s5pv210_device_iis2 = { | 152 | struct platform_device s5pv210_device_iis2 = { |
125 | .name = "s3c64xx-iis", | 153 | .name = "samsung-i2s", |
126 | .id = 2, | 154 | .id = 2, |
127 | .num_resources = ARRAY_SIZE(s5pv210_iis2_resource), | 155 | .num_resources = ARRAY_SIZE(s5pv210_iis2_resource), |
128 | .resource = s5pv210_iis2_resource, | 156 | .resource = s5pv210_iis2_resource, |
129 | .dev = { | 157 | .dev = { |
130 | .platform_data = &s3c_i2s_pdata, | 158 | .platform_data = &i2sv3_pdata, |
131 | }, | 159 | }, |
132 | }; | 160 | }; |
133 | 161 | ||
diff --git a/arch/arm/mach-s5pv210/include/mach/irqs.h b/arch/arm/mach-s5pv210/include/mach/irqs.h index 119b95fdc3ce..26710b35ef87 100644 --- a/arch/arm/mach-s5pv210/include/mach/irqs.h +++ b/arch/arm/mach-s5pv210/include/mach/irqs.h | |||
@@ -65,7 +65,7 @@ | |||
65 | #define IRQ_HSMMC0 S5P_IRQ_VIC1(26) | 65 | #define IRQ_HSMMC0 S5P_IRQ_VIC1(26) |
66 | #define IRQ_HSMMC1 S5P_IRQ_VIC1(27) | 66 | #define IRQ_HSMMC1 S5P_IRQ_VIC1(27) |
67 | #define IRQ_HSMMC2 S5P_IRQ_VIC1(28) | 67 | #define IRQ_HSMMC2 S5P_IRQ_VIC1(28) |
68 | #define IRQ_MIPICSI S5P_IRQ_VIC1(29) | 68 | #define IRQ_MIPI_CSIS S5P_IRQ_VIC1(29) |
69 | #define IRQ_MIPIDSI S5P_IRQ_VIC1(30) | 69 | #define IRQ_MIPIDSI S5P_IRQ_VIC1(30) |
70 | #define IRQ_ONENAND_AUDI S5P_IRQ_VIC1(31) | 70 | #define IRQ_ONENAND_AUDI S5P_IRQ_VIC1(31) |
71 | 71 | ||
@@ -132,5 +132,6 @@ | |||
132 | #define IRQ_LCD_FIFO IRQ_LCD0 | 132 | #define IRQ_LCD_FIFO IRQ_LCD0 |
133 | #define IRQ_LCD_VSYNC IRQ_LCD1 | 133 | #define IRQ_LCD_VSYNC IRQ_LCD1 |
134 | #define IRQ_LCD_SYSTEM IRQ_LCD2 | 134 | #define IRQ_LCD_SYSTEM IRQ_LCD2 |
135 | #define IRQ_MIPI_CSIS0 IRQ_MIPI_CSIS | ||
135 | 136 | ||
136 | #endif /* ASM_ARCH_IRQS_H */ | 137 | #endif /* ASM_ARCH_IRQS_H */ |
diff --git a/arch/arm/mach-s5pv210/include/mach/map.h b/arch/arm/mach-s5pv210/include/mach/map.h index 861d7fe11fc9..3611492ad681 100644 --- a/arch/arm/mach-s5pv210/include/mach/map.h +++ b/arch/arm/mach-s5pv210/include/mach/map.h | |||
@@ -16,6 +16,8 @@ | |||
16 | #include <plat/map-base.h> | 16 | #include <plat/map-base.h> |
17 | #include <plat/map-s5p.h> | 17 | #include <plat/map-s5p.h> |
18 | 18 | ||
19 | #define S5PV210_PA_SROM_BANK5 (0xA8000000) | ||
20 | |||
19 | #define S5PC110_PA_ONENAND (0xB0000000) | 21 | #define S5PC110_PA_ONENAND (0xB0000000) |
20 | #define S5P_PA_ONENAND S5PC110_PA_ONENAND | 22 | #define S5P_PA_ONENAND S5PC110_PA_ONENAND |
21 | 23 | ||
@@ -60,6 +62,7 @@ | |||
60 | #define S3C_VA_UARTx(x) (S3C_VA_UART + ((x) * S3C_UART_OFFSET)) | 62 | #define S3C_VA_UARTx(x) (S3C_VA_UART + ((x) * S3C_UART_OFFSET)) |
61 | 63 | ||
62 | #define S5PV210_PA_SROMC (0xE8000000) | 64 | #define S5PV210_PA_SROMC (0xE8000000) |
65 | #define S5P_PA_SROMC S5PV210_PA_SROMC | ||
63 | 66 | ||
64 | #define S5PV210_PA_CFCON (0xE8200000) | 67 | #define S5PV210_PA_CFCON (0xE8200000) |
65 | 68 | ||
@@ -107,6 +110,8 @@ | |||
107 | #define S5PV210_PA_DMC0 (0xF0000000) | 110 | #define S5PV210_PA_DMC0 (0xF0000000) |
108 | #define S5PV210_PA_DMC1 (0xF1400000) | 111 | #define S5PV210_PA_DMC1 (0xF1400000) |
109 | 112 | ||
113 | #define S5PV210_PA_MIPI_CSIS 0xFA600000 | ||
114 | |||
110 | /* compatibiltiy defines. */ | 115 | /* compatibiltiy defines. */ |
111 | #define S3C_PA_UART S5PV210_PA_UART | 116 | #define S3C_PA_UART S5PV210_PA_UART |
112 | #define S3C_PA_HSMMC0 S5PV210_PA_HSMMC(0) | 117 | #define S3C_PA_HSMMC0 S5PV210_PA_HSMMC(0) |
@@ -123,6 +128,7 @@ | |||
123 | #define S5P_PA_FIMC0 S5PV210_PA_FIMC0 | 128 | #define S5P_PA_FIMC0 S5PV210_PA_FIMC0 |
124 | #define S5P_PA_FIMC1 S5PV210_PA_FIMC1 | 129 | #define S5P_PA_FIMC1 S5PV210_PA_FIMC1 |
125 | #define S5P_PA_FIMC2 S5PV210_PA_FIMC2 | 130 | #define S5P_PA_FIMC2 S5PV210_PA_FIMC2 |
131 | #define S5P_PA_MIPI_CSIS0 S5PV210_PA_MIPI_CSIS | ||
126 | 132 | ||
127 | #define SAMSUNG_PA_ADC S5PV210_PA_ADC | 133 | #define SAMSUNG_PA_ADC S5PV210_PA_ADC |
128 | #define SAMSUNG_PA_CFCON S5PV210_PA_CFCON | 134 | #define SAMSUNG_PA_CFCON S5PV210_PA_CFCON |
diff --git a/arch/arm/mach-s5pv210/include/mach/regs-clock.h b/arch/arm/mach-s5pv210/include/mach/regs-clock.h index ebaabe021af9..4c45b74def5f 100644 --- a/arch/arm/mach-s5pv210/include/mach/regs-clock.h +++ b/arch/arm/mach-s5pv210/include/mach/regs-clock.h | |||
@@ -161,7 +161,7 @@ | |||
161 | #define S5P_MDNIE_SEL S5P_CLKREG(0x7008) | 161 | #define S5P_MDNIE_SEL S5P_CLKREG(0x7008) |
162 | #define S5P_MIPI_PHY_CON0 S5P_CLKREG(0x7200) | 162 | #define S5P_MIPI_PHY_CON0 S5P_CLKREG(0x7200) |
163 | #define S5P_MIPI_PHY_CON1 S5P_CLKREG(0x7204) | 163 | #define S5P_MIPI_PHY_CON1 S5P_CLKREG(0x7204) |
164 | #define S5P_MIPI_CONTROL S5P_CLKREG(0xE814) | 164 | #define S5P_MIPI_DPHY_CONTROL S5P_CLKREG(0xE814) |
165 | 165 | ||
166 | #define S5P_IDLE_CFG_TL_MASK (3 << 30) | 166 | #define S5P_IDLE_CFG_TL_MASK (3 << 30) |
167 | #define S5P_IDLE_CFG_TM_MASK (3 << 28) | 167 | #define S5P_IDLE_CFG_TM_MASK (3 << 28) |
@@ -195,9 +195,6 @@ | |||
195 | #define S5P_OTHERS_RET_UART (1 << 28) | 195 | #define S5P_OTHERS_RET_UART (1 << 28) |
196 | #define S5P_OTHERS_USB_SIG_MASK (1 << 16) | 196 | #define S5P_OTHERS_USB_SIG_MASK (1 << 16) |
197 | 197 | ||
198 | /* MIPI */ | ||
199 | #define S5P_MIPI_DPHY_EN (3) | ||
200 | |||
201 | /* S5P_DAC_CONTROL */ | 198 | /* S5P_DAC_CONTROL */ |
202 | #define S5P_DAC_ENABLE (1) | 199 | #define S5P_DAC_ENABLE (1) |
203 | #define S5P_DAC_DISABLE (0) | 200 | #define S5P_DAC_DISABLE (0) |
diff --git a/arch/arm/mach-s5pv210/mach-smdkc110.c b/arch/arm/mach-s5pv210/mach-smdkc110.c index 5dd1681c069e..bb20a14da100 100644 --- a/arch/arm/mach-s5pv210/mach-smdkc110.c +++ b/arch/arm/mach-s5pv210/mach-smdkc110.c | |||
@@ -94,6 +94,7 @@ static struct platform_device *smdkc110_devices[] __initdata = { | |||
94 | 94 | ||
95 | static struct i2c_board_info smdkc110_i2c_devs0[] __initdata = { | 95 | static struct i2c_board_info smdkc110_i2c_devs0[] __initdata = { |
96 | { I2C_BOARD_INFO("24c08", 0x50), }, /* Samsung S524AD0XD1 */ | 96 | { I2C_BOARD_INFO("24c08", 0x50), }, /* Samsung S524AD0XD1 */ |
97 | { I2C_BOARD_INFO("wm8580", 0x1b), }, | ||
97 | }; | 98 | }; |
98 | 99 | ||
99 | static struct i2c_board_info smdkc110_i2c_devs1[] __initdata = { | 100 | static struct i2c_board_info smdkc110_i2c_devs1[] __initdata = { |
diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c index 1fbc45b2a432..3a59068e983a 100644 --- a/arch/arm/mach-s5pv210/mach-smdkv210.c +++ b/arch/arm/mach-s5pv210/mach-smdkv210.c | |||
@@ -14,6 +14,8 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/serial_core.h> | 15 | #include <linux/serial_core.h> |
16 | #include <linux/sysdev.h> | 16 | #include <linux/sysdev.h> |
17 | #include <linux/dm9000.h> | ||
18 | #include <linux/gpio.h> | ||
17 | 19 | ||
18 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
19 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
@@ -24,6 +26,8 @@ | |||
24 | #include <mach/regs-clock.h> | 26 | #include <mach/regs-clock.h> |
25 | 27 | ||
26 | #include <plat/regs-serial.h> | 28 | #include <plat/regs-serial.h> |
29 | #include <plat/regs-srom.h> | ||
30 | #include <plat/gpio-cfg.h> | ||
27 | #include <plat/s5pv210.h> | 31 | #include <plat/s5pv210.h> |
28 | #include <plat/devs.h> | 32 | #include <plat/devs.h> |
29 | #include <plat/cpu.h> | 33 | #include <plat/cpu.h> |
@@ -102,6 +106,39 @@ static struct samsung_keypad_platdata smdkv210_keypad_data __initdata = { | |||
102 | .cols = 8, | 106 | .cols = 8, |
103 | }; | 107 | }; |
104 | 108 | ||
109 | static struct resource smdkv210_dm9000_resources[] = { | ||
110 | [0] = { | ||
111 | .start = S5PV210_PA_SROM_BANK5, | ||
112 | .end = S5PV210_PA_SROM_BANK5, | ||
113 | .flags = IORESOURCE_MEM, | ||
114 | }, | ||
115 | [1] = { | ||
116 | .start = S5PV210_PA_SROM_BANK5 + 2, | ||
117 | .end = S5PV210_PA_SROM_BANK5 + 2, | ||
118 | .flags = IORESOURCE_MEM, | ||
119 | }, | ||
120 | [2] = { | ||
121 | .start = IRQ_EINT(9), | ||
122 | .end = IRQ_EINT(9), | ||
123 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
124 | }, | ||
125 | }; | ||
126 | |||
127 | static struct dm9000_plat_data smdkv210_dm9000_platdata = { | ||
128 | .flags = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM, | ||
129 | .dev_addr = { 0x00, 0x09, 0xc0, 0xff, 0xec, 0x48 }, | ||
130 | }; | ||
131 | |||
132 | struct platform_device smdkv210_dm9000 = { | ||
133 | .name = "dm9000", | ||
134 | .id = -1, | ||
135 | .num_resources = ARRAY_SIZE(smdkv210_dm9000_resources), | ||
136 | .resource = smdkv210_dm9000_resources, | ||
137 | .dev = { | ||
138 | .platform_data = &smdkv210_dm9000_platdata, | ||
139 | }, | ||
140 | }; | ||
141 | |||
105 | static struct platform_device *smdkv210_devices[] __initdata = { | 142 | static struct platform_device *smdkv210_devices[] __initdata = { |
106 | &s5pv210_device_iis0, | 143 | &s5pv210_device_iis0, |
107 | &s5pv210_device_ac97, | 144 | &s5pv210_device_ac97, |
@@ -119,10 +156,29 @@ static struct platform_device *smdkv210_devices[] __initdata = { | |||
119 | &s3c_device_rtc, | 156 | &s3c_device_rtc, |
120 | &s3c_device_ts, | 157 | &s3c_device_ts, |
121 | &s3c_device_wdt, | 158 | &s3c_device_wdt, |
159 | &smdkv210_dm9000, | ||
122 | }; | 160 | }; |
123 | 161 | ||
162 | static void __init smdkv210_dm9000_init(void) | ||
163 | { | ||
164 | unsigned int tmp; | ||
165 | |||
166 | gpio_request(S5PV210_MP01(5), "nCS5"); | ||
167 | s3c_gpio_cfgpin(S5PV210_MP01(5), S3C_GPIO_SFN(2)); | ||
168 | gpio_free(S5PV210_MP01(5)); | ||
169 | |||
170 | tmp = (5 << S5P_SROM_BCX__TACC__SHIFT); | ||
171 | __raw_writel(tmp, S5P_SROM_BC5); | ||
172 | |||
173 | tmp = __raw_readl(S5P_SROM_BW); | ||
174 | tmp &= (S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS5__SHIFT); | ||
175 | tmp |= (1 << S5P_SROM_BW__NCS5__SHIFT); | ||
176 | __raw_writel(tmp, S5P_SROM_BW); | ||
177 | } | ||
178 | |||
124 | static struct i2c_board_info smdkv210_i2c_devs0[] __initdata = { | 179 | static struct i2c_board_info smdkv210_i2c_devs0[] __initdata = { |
125 | { I2C_BOARD_INFO("24c08", 0x50), }, /* Samsung S524AD0XD1 */ | 180 | { I2C_BOARD_INFO("24c08", 0x50), }, /* Samsung S524AD0XD1 */ |
181 | { I2C_BOARD_INFO("wm8580", 0x1b), }, | ||
126 | }; | 182 | }; |
127 | 183 | ||
128 | static struct i2c_board_info smdkv210_i2c_devs1[] __initdata = { | 184 | static struct i2c_board_info smdkv210_i2c_devs1[] __initdata = { |
@@ -150,6 +206,8 @@ static void __init smdkv210_machine_init(void) | |||
150 | { | 206 | { |
151 | s3c_pm_init(); | 207 | s3c_pm_init(); |
152 | 208 | ||
209 | smdkv210_dm9000_init(); | ||
210 | |||
153 | samsung_keypad_set_platdata(&smdkv210_keypad_data); | 211 | samsung_keypad_set_platdata(&smdkv210_keypad_data); |
154 | s3c24xx_ts_set_platdata(&s3c_ts_platform); | 212 | s3c24xx_ts_set_platdata(&s3c_ts_platform); |
155 | 213 | ||