diff options
Diffstat (limited to 'arch/arm/mach-davinci/board-dm365-evm.c')
-rw-r--r-- | arch/arm/mach-davinci/board-dm365-evm.c | 57 |
1 files changed, 50 insertions, 7 deletions
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index 52dd8046b305..289fe1b7d25a 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c | |||
@@ -13,9 +13,8 @@ | |||
13 | * GNU General Public License for more details. | 13 | * GNU General Public License for more details. |
14 | */ | 14 | */ |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/module.h> | ||
17 | #include <linux/init.h> | 16 | #include <linux/init.h> |
18 | #include <linux/dma-mapping.h> | 17 | #include <linux/err.h> |
19 | #include <linux/i2c.h> | 18 | #include <linux/i2c.h> |
20 | #include <linux/io.h> | 19 | #include <linux/io.h> |
21 | #include <linux/clk.h> | 20 | #include <linux/clk.h> |
@@ -24,20 +23,19 @@ | |||
24 | #include <linux/mtd/mtd.h> | 23 | #include <linux/mtd/mtd.h> |
25 | #include <linux/mtd/partitions.h> | 24 | #include <linux/mtd/partitions.h> |
26 | #include <linux/mtd/nand.h> | 25 | #include <linux/mtd/nand.h> |
27 | #include <asm/setup.h> | 26 | #include <linux/input.h> |
27 | |||
28 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
29 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
30 | #include <asm/mach/map.h> | 30 | |
31 | #include <mach/mux.h> | 31 | #include <mach/mux.h> |
32 | #include <mach/hardware.h> | ||
33 | #include <mach/dm365.h> | 32 | #include <mach/dm365.h> |
34 | #include <mach/psc.h> | ||
35 | #include <mach/common.h> | 33 | #include <mach/common.h> |
36 | #include <mach/i2c.h> | 34 | #include <mach/i2c.h> |
37 | #include <mach/serial.h> | 35 | #include <mach/serial.h> |
38 | #include <mach/mmc.h> | 36 | #include <mach/mmc.h> |
39 | #include <mach/nand.h> | 37 | #include <mach/nand.h> |
40 | 38 | #include <mach/keyscan.h> | |
41 | 39 | ||
42 | static inline int have_imager(void) | 40 | static inline int have_imager(void) |
43 | { | 41 | { |
@@ -144,6 +142,7 @@ static struct davinci_nand_pdata davinci_nand_data = { | |||
144 | .nr_parts = ARRAY_SIZE(davinci_nand_partitions), | 142 | .nr_parts = ARRAY_SIZE(davinci_nand_partitions), |
145 | .ecc_mode = NAND_ECC_HW, | 143 | .ecc_mode = NAND_ECC_HW, |
146 | .options = NAND_USE_FLASH_BBT, | 144 | .options = NAND_USE_FLASH_BBT, |
145 | .ecc_bits = 4, | ||
147 | }; | 146 | }; |
148 | 147 | ||
149 | static struct resource davinci_nand_resources[] = { | 148 | static struct resource davinci_nand_resources[] = { |
@@ -176,11 +175,16 @@ static struct at24_platform_data eeprom_info = { | |||
176 | .context = (void *)0x7f00, | 175 | .context = (void *)0x7f00, |
177 | }; | 176 | }; |
178 | 177 | ||
178 | static struct snd_platform_data dm365_evm_snd_data; | ||
179 | |||
179 | static struct i2c_board_info i2c_info[] = { | 180 | static struct i2c_board_info i2c_info[] = { |
180 | { | 181 | { |
181 | I2C_BOARD_INFO("24c256", 0x50), | 182 | I2C_BOARD_INFO("24c256", 0x50), |
182 | .platform_data = &eeprom_info, | 183 | .platform_data = &eeprom_info, |
183 | }, | 184 | }, |
185 | { | ||
186 | I2C_BOARD_INFO("tlv320aic3x", 0x18), | ||
187 | }, | ||
184 | }; | 188 | }; |
185 | 189 | ||
186 | static struct davinci_i2c_platform_data i2c_pdata = { | 190 | static struct davinci_i2c_platform_data i2c_pdata = { |
@@ -188,6 +192,38 @@ static struct davinci_i2c_platform_data i2c_pdata = { | |||
188 | .bus_delay = 0 /* usec */, | 192 | .bus_delay = 0 /* usec */, |
189 | }; | 193 | }; |
190 | 194 | ||
195 | #ifdef CONFIG_KEYBOARD_DAVINCI | ||
196 | static unsigned short dm365evm_keymap[] = { | ||
197 | KEY_KP2, | ||
198 | KEY_LEFT, | ||
199 | KEY_EXIT, | ||
200 | KEY_DOWN, | ||
201 | KEY_ENTER, | ||
202 | KEY_UP, | ||
203 | KEY_KP1, | ||
204 | KEY_RIGHT, | ||
205 | KEY_MENU, | ||
206 | KEY_RECORD, | ||
207 | KEY_REWIND, | ||
208 | KEY_KPMINUS, | ||
209 | KEY_STOP, | ||
210 | KEY_FASTFORWARD, | ||
211 | KEY_KPPLUS, | ||
212 | KEY_PLAYPAUSE, | ||
213 | 0 | ||
214 | }; | ||
215 | |||
216 | static struct davinci_ks_platform_data dm365evm_ks_data = { | ||
217 | .keymap = dm365evm_keymap, | ||
218 | .keymapsize = ARRAY_SIZE(dm365evm_keymap), | ||
219 | .rep = 1, | ||
220 | /* Scan period = strobe + interval */ | ||
221 | .strobe = 0x5, | ||
222 | .interval = 0x2, | ||
223 | .matrix_type = DAVINCI_KEYSCAN_MATRIX_4X4, | ||
224 | }; | ||
225 | #endif | ||
226 | |||
191 | static int cpld_mmc_get_cd(int module) | 227 | static int cpld_mmc_get_cd(int module) |
192 | { | 228 | { |
193 | if (!cpld) | 229 | if (!cpld) |
@@ -472,6 +508,13 @@ static __init void dm365_evm_init(void) | |||
472 | 508 | ||
473 | /* maybe setup mmc1/etc ... _after_ mmc0 */ | 509 | /* maybe setup mmc1/etc ... _after_ mmc0 */ |
474 | evm_init_cpld(); | 510 | evm_init_cpld(); |
511 | |||
512 | dm365_init_asp(&dm365_evm_snd_data); | ||
513 | dm365_init_rtc(); | ||
514 | |||
515 | #ifdef CONFIG_KEYBOARD_DAVINCI | ||
516 | dm365_init_ks(&dm365evm_ks_data); | ||
517 | #endif | ||
475 | } | 518 | } |
476 | 519 | ||
477 | static __init void dm365_evm_irq_init(void) | 520 | static __init void dm365_evm_irq_init(void) |