aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2006-12-07 16:58:17 -0500
committerTony Lindgren <tony@atomide.com>2007-09-20 21:34:50 -0400
commita524626b113e36fc70cb456449444018e3045d5f (patch)
tree90307a026ae10a96d214d8822d363e2452df7d72 /arch
parentc79ed1940ca9a4af5e9c182ac51f28dadd32956d (diff)
ARM: OMAP: Sync board specific files with linux-omap
This patch syncs omap board specific files with linux-omap tree. Patch consists mostly of driver updates done in linux-omap tree for drivers not yet in mainline kernel. Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c59
-rw-r--r--arch/arm/mach-omap1/board-h2.c79
-rw-r--r--arch/arm/mach-omap1/board-h3.c41
-rw-r--r--arch/arm/mach-omap1/board-nokia770.c53
-rw-r--r--arch/arm/mach-omap1/board-osk.c1
-rw-r--r--arch/arm/mach-omap1/board-palmte.c123
-rw-r--r--arch/arm/mach-omap1/board-palmtt.c4
-rw-r--r--arch/arm/mach-omap1/board-voiceblue.c2
8 files changed, 203 insertions, 159 deletions
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index fa2da7490dbe..c73ca61e585e 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -34,20 +34,20 @@ static u8 ams_delta_latch1_reg;
34static u16 ams_delta_latch2_reg; 34static u16 ams_delta_latch2_reg;
35 35
36static int ams_delta_keymap[] = { 36static int ams_delta_keymap[] = {
37 KEY(0, 0, KEY_F1), /* Advert */ 37 KEY(0, 0, KEY_F1), /* Advert */
38 38
39 KEY(3, 0, KEY_COFFEE), /* Games */ 39 KEY(3, 0, KEY_COFFEE), /* Games */
40 KEY(2, 0, KEY_QUESTION), /* Directory */ 40 KEY(2, 0, KEY_QUESTION), /* Directory */
41 KEY(3, 2, KEY_CONNECT), /* Internet */ 41 KEY(3, 2, KEY_CONNECT), /* Internet */
42 KEY(2, 1, KEY_SHOP), /* Services */ 42 KEY(2, 1, KEY_SHOP), /* Services */
43 KEY(1, 1, KEY_PHONE), /* VoiceMail */ 43 KEY(1, 1, KEY_PHONE), /* VoiceMail */
44 44
45 KEY(1, 0, KEY_DELETE), /* Delete */ 45 KEY(1, 0, KEY_DELETE), /* Delete */
46 KEY(2, 2, KEY_PLAY), /* Play */ 46 KEY(2, 2, KEY_PLAY), /* Play */
47 KEY(0, 1, KEY_PAGEUP), /* Up */ 47 KEY(0, 1, KEY_PAGEUP), /* Up */
48 KEY(3, 1, KEY_PAGEDOWN), /* Down */ 48 KEY(3, 1, KEY_PAGEDOWN), /* Down */
49 KEY(0, 2, KEY_EMAIL), /* ReadEmail */ 49 KEY(0, 2, KEY_EMAIL), /* ReadEmail */
50 KEY(1, 2, KEY_STOP), /* Stop */ 50 KEY(1, 2, KEY_STOP), /* Stop */
51 51
52 /* Numeric keypad portion */ 52 /* Numeric keypad portion */
53 KEY(7, 0, KEY_KP1), 53 KEY(7, 0, KEY_KP1),
@@ -61,20 +61,20 @@ static int ams_delta_keymap[] = {
61 KEY(5, 2, KEY_KP9), 61 KEY(5, 2, KEY_KP9),
62 KEY(6, 3, KEY_KP0), 62 KEY(6, 3, KEY_KP0),
63 KEY(7, 3, KEY_KPASTERISK), 63 KEY(7, 3, KEY_KPASTERISK),
64 KEY(5, 3, KEY_KPDOT), /* # key */ 64 KEY(5, 3, KEY_KPDOT), /* # key */
65 KEY(2, 7, KEY_NUMLOCK), /* Mute */ 65 KEY(2, 7, KEY_NUMLOCK), /* Mute */
66 KEY(1, 7, KEY_KPMINUS), /* Recall */ 66 KEY(1, 7, KEY_KPMINUS), /* Recall */
67 KEY(1, 6, KEY_KPPLUS), /* Redial */ 67 KEY(1, 6, KEY_KPPLUS), /* Redial */
68 KEY(6, 7, KEY_KPSLASH), /* Handsfree */ 68 KEY(6, 7, KEY_KPSLASH), /* Handsfree */
69 KEY(0, 6, KEY_ENTER), /* Video */ 69 KEY(0, 6, KEY_ENTER), /* Video */
70 70
71 KEY(4, 7, KEY_CAMERA), /* Photo */ 71 KEY(4, 7, KEY_CAMERA), /* Photo */
72 72
73 KEY(4, 0, KEY_F2), /* Home */ 73 KEY(4, 0, KEY_F2), /* Home */
74 KEY(4, 1, KEY_F3), /* Office */ 74 KEY(4, 1, KEY_F3), /* Office */
75 KEY(4, 2, KEY_F4), /* Mobile */ 75 KEY(4, 2, KEY_F4), /* Mobile */
76 KEY(7, 7, KEY_F5), /* SMS */ 76 KEY(7, 7, KEY_F5), /* SMS */
77 KEY(5, 7, KEY_F6), /* Email */ 77 KEY(5, 7, KEY_F6), /* Email */
78 78
79 /* QWERTY portion of keypad */ 79 /* QWERTY portion of keypad */
80 KEY(4, 3, KEY_Q), 80 KEY(4, 3, KEY_Q),
@@ -107,7 +107,7 @@ static int ams_delta_keymap[] = {
107 KEY(3, 6, KEY_M), 107 KEY(3, 6, KEY_M),
108 KEY(2, 6, KEY_SPACE), 108 KEY(2, 6, KEY_SPACE),
109 109
110 KEY(0, 7, KEY_LEFTSHIFT), /* Vol up */ 110 KEY(0, 7, KEY_LEFTSHIFT), /* Vol up */
111 KEY(3, 7, KEY_LEFTCTRL), /* Vol down */ 111 KEY(3, 7, KEY_LEFTCTRL), /* Vol down */
112 112
113 0 113 0
@@ -158,6 +158,10 @@ static struct map_desc ams_delta_io_desc[] __initdata = {
158 } 158 }
159}; 159};
160 160
161static struct omap_lcd_config ams_delta_lcd_config __initdata = {
162 .ctrl_name = "internal",
163};
164
161static struct omap_uart_config ams_delta_uart_config __initdata = { 165static struct omap_uart_config ams_delta_uart_config __initdata = {
162 .enabled_uarts = 1, 166 .enabled_uarts = 1,
163}; 167};
@@ -169,6 +173,7 @@ static struct omap_usb_config ams_delta_usb_config __initdata = {
169}; 173};
170 174
171static struct omap_board_config_kernel ams_delta_config[] = { 175static struct omap_board_config_kernel ams_delta_config[] = {
176 { OMAP_TAG_LCD, &ams_delta_lcd_config },
172 { OMAP_TAG_UART, &ams_delta_uart_config }, 177 { OMAP_TAG_UART, &ams_delta_uart_config },
173 { OMAP_TAG_USB, &ams_delta_usb_config }, 178 { OMAP_TAG_USB, &ams_delta_usb_config },
174}; 179};
@@ -199,6 +204,11 @@ static struct platform_device ams_delta_kp_device = {
199 .resource = ams_delta_kp_resources, 204 .resource = ams_delta_kp_resources,
200}; 205};
201 206
207static struct platform_device ams_delta_lcd_device = {
208 .name = "lcd_ams_delta",
209 .id = -1,
210};
211
202static struct platform_device ams_delta_led_device = { 212static struct platform_device ams_delta_led_device = {
203 .name = "ams-delta-led", 213 .name = "ams-delta-led",
204 .id = -1 214 .id = -1
@@ -206,6 +216,7 @@ static struct platform_device ams_delta_led_device = {
206 216
207static struct platform_device *ams_delta_devices[] __initdata = { 217static struct platform_device *ams_delta_devices[] __initdata = {
208 &ams_delta_kp_device, 218 &ams_delta_kp_device,
219 &ams_delta_lcd_device,
209 &ams_delta_led_device, 220 &ams_delta_led_device,
210}; 221};
211 222
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index 48c8c9195dc3..d901dcbe8066 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -139,6 +139,66 @@ static struct platform_device h2_nor_device = {
139 .resource = &h2_nor_resource, 139 .resource = &h2_nor_resource,
140}; 140};
141 141
142#if 0 /* REVISIT: Enable when nand_platform_data is applied */
143
144static struct mtd_partition h2_nand_partitions[] = {
145#if 0
146 /* REVISIT: enable these partitions if you make NAND BOOT
147 * work on your H2 (rev C or newer); published versions of
148 * x-load only support P2 and H3.
149 */
150 {
151 .name = "xloader",
152 .offset = 0,
153 .size = 64 * 1024,
154 .mask_flags = MTD_WRITEABLE, /* force read-only */
155 },
156 {
157 .name = "bootloader",
158 .offset = MTDPART_OFS_APPEND,
159 .size = 256 * 1024,
160 .mask_flags = MTD_WRITEABLE, /* force read-only */
161 },
162 {
163 .name = "params",
164 .offset = MTDPART_OFS_APPEND,
165 .size = 192 * 1024,
166 },
167 {
168 .name = "kernel",
169 .offset = MTDPART_OFS_APPEND,
170 .size = 2 * SZ_1M,
171 },
172#endif
173 {
174 .name = "filesystem",
175 .size = MTDPART_SIZ_FULL,
176 .offset = MTDPART_OFS_APPEND,
177 },
178};
179
180/* dip switches control NAND chip access: 8 bit, 16 bit, or neither */
181static struct nand_platform_data h2_nand_data = {
182 .options = NAND_SAMSUNG_LP_OPTIONS,
183 .parts = h2_nand_partitions,
184 .nr_parts = ARRAY_SIZE(h2_nand_partitions),
185};
186
187static struct resource h2_nand_resource = {
188 .flags = IORESOURCE_MEM,
189};
190
191static struct platform_device h2_nand_device = {
192 .name = "omapnand",
193 .id = 0,
194 .dev = {
195 .platform_data = &h2_nand_data,
196 },
197 .num_resources = 1,
198 .resource = &h2_nand_resource,
199};
200#endif
201
142static struct resource h2_smc91x_resources[] = { 202static struct resource h2_smc91x_resources[] = {
143 [0] = { 203 [0] = {
144 .start = OMAP1610_ETHR_START, /* Physical */ 204 .start = OMAP1610_ETHR_START, /* Physical */
@@ -218,11 +278,15 @@ static struct resource h2_irda_resources[] = {
218 .flags = IORESOURCE_IRQ, 278 .flags = IORESOURCE_IRQ,
219 }, 279 },
220}; 280};
281
282static u64 irda_dmamask = 0xffffffff;
283
221static struct platform_device h2_irda_device = { 284static struct platform_device h2_irda_device = {
222 .name = "omapirda", 285 .name = "omapirda",
223 .id = 0, 286 .id = 0,
224 .dev = { 287 .dev = {
225 .platform_data = &h2_irda_data, 288 .platform_data = &h2_irda_data,
289 .dma_mask = &irda_dmamask,
226 }, 290 },
227 .num_resources = ARRAY_SIZE(h2_irda_resources), 291 .num_resources = ARRAY_SIZE(h2_irda_resources),
228 .resource = h2_irda_resources, 292 .resource = h2_irda_resources,
@@ -270,6 +334,7 @@ static struct platform_device h2_mcbsp1_device = {
270 334
271static struct platform_device *h2_devices[] __initdata = { 335static struct platform_device *h2_devices[] __initdata = {
272 &h2_nor_device, 336 &h2_nor_device,
337 //&h2_nand_device,
273 &h2_smc91x_device, 338 &h2_smc91x_device,
274 &h2_irda_device, 339 &h2_irda_device,
275 &h2_kp_device, 340 &h2_kp_device,
@@ -333,6 +398,13 @@ static struct omap_board_config_kernel h2_config[] __initdata = {
333 { OMAP_TAG_LCD, &h2_lcd_config }, 398 { OMAP_TAG_LCD, &h2_lcd_config },
334}; 399};
335 400
401#define H2_NAND_RB_GPIO_PIN 62
402
403static int h2_nand_dev_ready(struct nand_platform_data *data)
404{
405 return omap_get_gpio_datain(H2_NAND_RB_GPIO_PIN);
406}
407
336static void __init h2_init(void) 408static void __init h2_init(void)
337{ 409{
338 /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped 410 /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped
@@ -347,6 +419,13 @@ static void __init h2_init(void)
347 h2_nor_resource.end = h2_nor_resource.start = omap_cs3_phys(); 419 h2_nor_resource.end = h2_nor_resource.start = omap_cs3_phys();
348 h2_nor_resource.end += SZ_32M - 1; 420 h2_nor_resource.end += SZ_32M - 1;
349 421
422#if 0 /* REVISIT: Enable when nand_platform_data is applied */
423 h2_nand_resource.end = h2_nand_resource.start = OMAP_CS2B_PHYS;
424 h2_nand_resource.end += SZ_4K - 1;
425 if (!(omap_request_gpio(H2_NAND_RB_GPIO_PIN)))
426 h2_nand_data.dev_ready = h2_nand_dev_ready;
427#endif
428
350 omap_cfg_reg(L3_1610_FLASH_CS2B_OE); 429 omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
351 omap_cfg_reg(M8_1610_FLASH_CS2B_WE); 430 omap_cfg_reg(M8_1610_FLASH_CS2B_WE);
352 431
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c
index 79d4ef4c54d4..4167f3480974 100644
--- a/arch/arm/mach-omap1/board-h3.c
+++ b/arch/arm/mach-omap1/board-h3.c
@@ -44,6 +44,8 @@
44#include <asm/arch/keypad.h> 44#include <asm/arch/keypad.h>
45#include <asm/arch/dma.h> 45#include <asm/arch/dma.h>
46#include <asm/arch/common.h> 46#include <asm/arch/common.h>
47#include <asm/arch/mcbsp.h>
48#include <asm/arch/omap-alsa.h>
47 49
48extern int omap_gpio_init(void); 50extern int omap_gpio_init(void);
49 51
@@ -351,11 +353,14 @@ static struct resource h3_irda_resources[] = {
351 }, 353 },
352}; 354};
353 355
356static u64 irda_dmamask = 0xffffffff;
357
354static struct platform_device h3_irda_device = { 358static struct platform_device h3_irda_device = {
355 .name = "omapirda", 359 .name = "omapirda",
356 .id = 0, 360 .id = 0,
357 .dev = { 361 .dev = {
358 .platform_data = &h3_irda_data, 362 .platform_data = &h3_irda_data,
363 .dma_mask = &irda_dmamask,
359 }, 364 },
360 .num_resources = ARRAY_SIZE(h3_irda_resources), 365 .num_resources = ARRAY_SIZE(h3_irda_resources),
361 .resource = h3_irda_resources, 366 .resource = h3_irda_resources,
@@ -366,6 +371,41 @@ static struct platform_device h3_lcd_device = {
366 .id = -1, 371 .id = -1,
367}; 372};
368 373
374static struct omap_mcbsp_reg_cfg mcbsp_regs = {
375 .spcr2 = FREE | FRST | GRST | XRST | XINTM(3),
376 .spcr1 = RINTM(3) | RRST,
377 .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) |
378 RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1),
379 .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16),
380 .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) |
381 XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG,
382 .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16),
383 .srgr1 = FWID(15),
384 .srgr2 = GSYNC | CLKSP | FSGM | FPER(31),
385
386 .pcr0 = CLKRM | SCLKME | FSXP | FSRP | CLKXP | CLKRP,
387 //.pcr0 = CLKXP | CLKRP, /* mcbsp: slave */
388};
389
390static struct omap_alsa_codec_config alsa_config = {
391 .name = "H3 TSC2101",
392 .mcbsp_regs_alsa = &mcbsp_regs,
393 .codec_configure_dev = NULL, // tsc2101_configure,
394 .codec_set_samplerate = NULL, // tsc2101_set_samplerate,
395 .codec_clock_setup = NULL, // tsc2101_clock_setup,
396 .codec_clock_on = NULL, // tsc2101_clock_on,
397 .codec_clock_off = NULL, // tsc2101_clock_off,
398 .get_default_samplerate = NULL, // tsc2101_get_default_samplerate,
399};
400
401static struct platform_device h3_mcbsp1_device = {
402 .name = "omap_alsa_mcbsp",
403 .id = 1,
404 .dev = {
405 .platform_data = &alsa_config,
406 },
407};
408
369static struct platform_device *devices[] __initdata = { 409static struct platform_device *devices[] __initdata = {
370 &nor_device, 410 &nor_device,
371 &nand_device, 411 &nand_device,
@@ -374,6 +414,7 @@ static struct platform_device *devices[] __initdata = {
374 &h3_irda_device, 414 &h3_irda_device,
375 &h3_kp_device, 415 &h3_kp_device,
376 &h3_lcd_device, 416 &h3_lcd_device,
417 &h3_mcbsp1_device,
377}; 418};
378 419
379static struct omap_usb_config h3_usb_config __initdata = { 420static struct omap_usb_config h3_usb_config __initdata = {
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c
index 70014f751bc4..8ea0cef8bdb1 100644
--- a/arch/arm/mach-omap1/board-nokia770.c
+++ b/arch/arm/mach-omap1/board-nokia770.c
@@ -34,6 +34,8 @@
34#include <asm/arch/aic23.h> 34#include <asm/arch/aic23.h>
35#include <asm/arch/gpio.h> 35#include <asm/arch/gpio.h>
36 36
37#include "../plat-omap/dsp/dsp_common.h"
38
37static void __init omap_nokia770_init_irq(void) 39static void __init omap_nokia770_init_irq(void)
38{ 40{
39 /* On Nokia 770, the SleepX signal is masked with an 41 /* On Nokia 770, the SleepX signal is masked with an
@@ -91,7 +93,7 @@ static struct platform_device nokia770_kp_device = {
91}; 93};
92 94
93static struct platform_device *nokia770_devices[] __initdata = { 95static struct platform_device *nokia770_devices[] __initdata = {
94 &nokia770_kp_device, 96 &nokia770_kp_device,
95}; 97};
96 98
97static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata = { 99static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata = {
@@ -105,7 +107,7 @@ static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata =
105 107
106static struct spi_board_info nokia770_spi_board_info[] __initdata = { 108static struct spi_board_info nokia770_spi_board_info[] __initdata = {
107 [0] = { 109 [0] = {
108 .modalias = "lcd_mipid", 110 .modalias = "lcd_mipid",
109 .bus_num = 2, 111 .bus_num = 2,
110 .chip_select = 3, 112 .chip_select = 3,
111 .max_speed_hz = 12000000, 113 .max_speed_hz = 12000000,
@@ -153,6 +155,7 @@ static struct omap_board_config_kernel nokia770_config[] = {
153 { OMAP_TAG_MMC, &nokia770_mmc_config }, 155 { OMAP_TAG_MMC, &nokia770_mmc_config },
154}; 156};
155 157
158#if defined(CONFIG_OMAP_DSP)
156/* 159/*
157 * audio power control 160 * audio power control
158 */ 161 */
@@ -183,7 +186,7 @@ static void nokia770_audio_pwr_up(void)
183 clk_enable(dspxor_ck); 186 clk_enable(dspxor_ck);
184 187
185 /* Turn on codec */ 188 /* Turn on codec */
186 tlv320aic23_power_up(); 189 aic23_power_up();
187 190
188 if (omap_get_gpio_datain(HEADPHONE_GPIO)) 191 if (omap_get_gpio_datain(HEADPHONE_GPIO))
189 /* HP not connected, turn on amplifier */ 192 /* HP not connected, turn on amplifier */
@@ -197,7 +200,7 @@ static void codec_delayed_power_down(struct work_struct *work)
197{ 200{
198 down(&audio_pwr_sem); 201 down(&audio_pwr_sem);
199 if (audio_pwr_state == -1) 202 if (audio_pwr_state == -1)
200 tlv320aic23_power_down(); 203 aic23_power_down();
201 clk_disable(dspxor_ck); 204 clk_disable(dspxor_ck);
202 up(&audio_pwr_sem); 205 up(&audio_pwr_sem);
203} 206}
@@ -213,7 +216,8 @@ static void nokia770_audio_pwr_down(void)
213 schedule_delayed_work(&codec_power_down_work, HZ / 20); /* 50ms */ 216 schedule_delayed_work(&codec_power_down_work, HZ / 20); /* 50ms */
214} 217}
215 218
216void nokia770_audio_pwr_up_request(int stage) 219static int
220nokia770_audio_pwr_up_request(struct dsp_kfunc_device *kdev, int stage)
217{ 221{
218 down(&audio_pwr_sem); 222 down(&audio_pwr_sem);
219 if (audio_pwr_state == -1) 223 if (audio_pwr_state == -1)
@@ -221,9 +225,11 @@ void nokia770_audio_pwr_up_request(int stage)
221 /* force audio_pwr_state = 0, even if it was 1. */ 225 /* force audio_pwr_state = 0, even if it was 1. */
222 audio_pwr_state = 0; 226 audio_pwr_state = 0;
223 up(&audio_pwr_sem); 227 up(&audio_pwr_sem);
228 return 0;
224} 229}
225 230
226void nokia770_audio_pwr_down_request(int stage) 231static int
232nokia770_audio_pwr_down_request(struct dsp_kfunc_device *kdev, int stage)
227{ 233{
228 down(&audio_pwr_sem); 234 down(&audio_pwr_sem);
229 switch (stage) { 235 switch (stage) {
@@ -239,7 +245,38 @@ void nokia770_audio_pwr_down_request(int stage)
239 break; 245 break;
240 } 246 }
241 up(&audio_pwr_sem); 247 up(&audio_pwr_sem);
248 return 0;
249}
250
251static struct dsp_kfunc_device nokia770_audio_device = {
252 .name = "audio",
253 .type = DSP_KFUNC_DEV_TYPE_AUDIO,
254 .enable = nokia770_audio_pwr_up_request,
255 .disable = nokia770_audio_pwr_down_request,
256};
257
258static __init int omap_dsp_init(void)
259{
260 int ret;
261
262 dspxor_ck = clk_get(0, "dspxor_ck");
263 if (IS_ERR(dspxor_ck)) {
264 printk(KERN_ERR "couldn't acquire dspxor_ck\n");
265 return PTR_ERR(dspxor_ck);
266 }
267
268 ret = dsp_kfunc_device_register(&nokia770_audio_device);
269 if (ret) {
270 printk(KERN_ERR
271 "KFUNC device registration faild: %s\n",
272 nokia770_audio_device.name);
273 goto out;
274 }
275 return 0;
276 out:
277 return ret;
242} 278}
279#endif /* CONFIG_OMAP_DSP */
243 280
244static void __init omap_nokia770_init(void) 281static void __init omap_nokia770_init(void)
245{ 282{
@@ -251,9 +288,7 @@ static void __init omap_nokia770_init(void)
251 omap_board_config = nokia770_config; 288 omap_board_config = nokia770_config;
252 omap_board_config_size = ARRAY_SIZE(nokia770_config); 289 omap_board_config_size = ARRAY_SIZE(nokia770_config);
253 omap_serial_init(); 290 omap_serial_init();
254 omap_dsp_audio_pwr_up_request = nokia770_audio_pwr_up_request; 291 omap_dsp_init();
255 omap_dsp_audio_pwr_down_request = nokia770_audio_pwr_down_request;
256 dspxor_ck = clk_get(0, "dspxor_ck");
257} 292}
258 293
259static void __init omap_nokia770_map_io(void) 294static void __init omap_nokia770_map_io(void)
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index 2bfa08870664..83f6e09bf079 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -29,6 +29,7 @@
29#include <linux/kernel.h> 29#include <linux/kernel.h>
30#include <linux/init.h> 30#include <linux/init.h>
31#include <linux/platform_device.h> 31#include <linux/platform_device.h>
32#include <linux/interrupt.h>
32#include <linux/irq.h> 33#include <linux/irq.h>
33#include <linux/interrupt.h> 34#include <linux/interrupt.h>
34 35
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c
index 9af031ad63b8..2f9d00a00135 100644
--- a/arch/arm/mach-omap1/board-palmte.c
+++ b/arch/arm/mach-omap1/board-palmte.c
@@ -321,116 +321,6 @@ static struct tsc2102_config palmte_tsc2102_config = {
321 .alsa_config = &palmte_alsa_config, 321 .alsa_config = &palmte_alsa_config,
322}; 322};
323 323
324static struct omap_mcbsp_reg_cfg palmte_mcbsp1_regs = {
325 .spcr2 = FRST | GRST | XRST | XINTM(3),
326 .xcr2 = XDATDLY(1) | XFIG,
327 .xcr1 = XWDLEN1(OMAP_MCBSP_WORD_32),
328 .pcr0 = SCLKME | FSXP | CLKXP,
329};
330
331static struct omap_alsa_codec_config palmte_alsa_config = {
332 .name = "TSC2102 audio",
333 .mcbsp_regs_alsa = &palmte_mcbsp1_regs,
334 .codec_configure_dev = NULL, /* tsc2102_configure, */
335 .codec_set_samplerate = NULL, /* tsc2102_set_samplerate, */
336 .codec_clock_setup = NULL, /* tsc2102_clock_setup, */
337 .codec_clock_on = NULL, /* tsc2102_clock_on, */
338 .codec_clock_off = NULL, /* tsc2102_clock_off, */
339 .get_default_samplerate = NULL, /* tsc2102_get_default_samplerate, */
340};
341
342#ifdef CONFIG_APM
343/*
344 * Values measured in 10 minute intervals averaged over 10 samples.
345 * May differ slightly from device to device but should be accurate
346 * enough to give basic idea of battery life left and trigger
347 * potential alerts.
348 */
349static const int palmte_battery_sample[] = {
350 2194, 2157, 2138, 2120,
351 2104, 2089, 2075, 2061,
352 2048, 2038, 2026, 2016,
353 2008, 1998, 1989, 1980,
354 1970, 1958, 1945, 1928,
355 1910, 1888, 1860, 1827,
356 1791, 1751, 1709, 1656,
357};
358
359#define INTERVAL 10
360#define BATTERY_HIGH_TRESHOLD 66
361#define BATTERY_LOW_TRESHOLD 33
362
363static void palmte_get_power_status(struct apm_power_info *info, int *battery)
364{
365 int charging, batt, hi, lo, mid;
366
367 charging = !omap_get_gpio_datain(PALMTE_DC_GPIO);
368 batt = battery[0];
369 if (charging)
370 batt -= 60;
371
372 hi = ARRAY_SIZE(palmte_battery_sample);
373 lo = 0;
374
375 info->battery_flag = 0;
376 info->units = APM_UNITS_MINS;
377
378 if (batt > palmte_battery_sample[lo]) {
379 info->battery_life = 100;
380 info->time = INTERVAL * ARRAY_SIZE(palmte_battery_sample);
381 } else if (batt <= palmte_battery_sample[hi - 1]) {
382 info->battery_life = 0;
383 info->time = 0;
384 } else {
385 while (hi > lo + 1) {
386 mid = (hi + lo) >> 2;
387 if (batt <= palmte_battery_sample[mid])
388 lo = mid;
389 else
390 hi = mid;
391 }
392
393 mid = palmte_battery_sample[lo] - palmte_battery_sample[hi];
394 hi = palmte_battery_sample[lo] - batt;
395 info->battery_life = 100 - (100 * lo + 100 * hi / mid) /
396 ARRAY_SIZE(palmte_battery_sample);
397 info->time = INTERVAL * (ARRAY_SIZE(palmte_battery_sample) -
398 lo) - INTERVAL * hi / mid;
399 }
400
401 if (charging) {
402 info->ac_line_status = APM_AC_ONLINE;
403 info->battery_status = APM_BATTERY_STATUS_CHARGING;
404 info->battery_flag |= APM_BATTERY_FLAG_CHARGING;
405 } else {
406 info->ac_line_status = APM_AC_OFFLINE;
407 if (info->battery_life > BATTERY_HIGH_TRESHOLD)
408 info->battery_status = APM_BATTERY_STATUS_HIGH;
409 else if (info->battery_life > BATTERY_LOW_TRESHOLD)
410 info->battery_status = APM_BATTERY_STATUS_LOW;
411 else
412 info->battery_status = APM_BATTERY_STATUS_CRITICAL;
413 }
414
415 if (info->battery_life > BATTERY_HIGH_TRESHOLD)
416 info->battery_flag |= APM_BATTERY_FLAG_HIGH;
417 else if (info->battery_life > BATTERY_LOW_TRESHOLD)
418 info->battery_flag |= APM_BATTERY_FLAG_LOW;
419 else
420 info->battery_flag |= APM_BATTERY_FLAG_CRITICAL;
421}
422#else
423#define palmte_get_power_status NULL
424#endif
425
426static struct tsc2102_config palmte_tsc2102_config = {
427 .use_internal = 0,
428 .monitor = TSC_BAT1 | TSC_AUX | TSC_TEMP,
429 .temp_at25c = { 2200, 2615 },
430 .apm_report = palmte_get_power_status,
431 .alsa_config = &palmte_alsa_config,
432};
433
434static struct omap_board_config_kernel palmte_config[] = { 324static struct omap_board_config_kernel palmte_config[] = {
435 { OMAP_TAG_USB, &palmte_usb_config }, 325 { OMAP_TAG_USB, &palmte_usb_config },
436 { OMAP_TAG_MMC, &palmte_mmc_config }, 326 { OMAP_TAG_MMC, &palmte_mmc_config },
@@ -449,17 +339,6 @@ static struct spi_board_info palmte_spi_info[] __initdata = {
449 }, 339 },
450}; 340};
451 341
452static struct spi_board_info palmte_spi_info[] __initdata = {
453 {
454 .modalias = "tsc2102",
455 .bus_num = 2, /* uWire (officially) */
456 .chip_select = 0, /* As opposed to 3 */
457 .irq = OMAP_GPIO_IRQ(PALMTE_PINTDAV_GPIO),
458 .platform_data = &palmte_tsc2102_config,
459 .max_speed_hz = 8000000,
460 },
461};
462
463/* Periodically check for changes on important input pins */ 342/* Periodically check for changes on important input pins */
464struct timer_list palmte_pin_timer; 343struct timer_list palmte_pin_timer;
465int prev_power, prev_headphones; 344int prev_power, prev_headphones;
@@ -539,8 +418,6 @@ static void __init omap_palmte_init(void)
539 418
540 spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info)); 419 spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info));
541 420
542 spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info));
543
544 omap_serial_init(); 421 omap_serial_init();
545 palmte_gpio_setup(); 422 palmte_gpio_setup();
546} 423}
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c
index 3c9a41a3d820..e47010fec275 100644
--- a/arch/arm/mach-omap1/board-palmtt.c
+++ b/arch/arm/mach-omap1/board-palmtt.c
@@ -314,8 +314,8 @@ static struct omap_uart_config palmtt_uart_config __initdata = {
314}; 314};
315 315
316static struct omap_board_config_kernel palmtt_config[] = { 316static struct omap_board_config_kernel palmtt_config[] = {
317 { OMAP_TAG_USB, &palmtt_usb_config }, 317 { OMAP_TAG_USB, &palmtt_usb_config },
318 { OMAP_TAG_LCD, &palmtt_lcd_config }, 318 { OMAP_TAG_LCD, &palmtt_lcd_config },
319 { OMAP_TAG_UART, &palmtt_uart_config }, 319 { OMAP_TAG_UART, &palmtt_uart_config },
320}; 320};
321 321
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c
index 447a586eb334..214dd19889ac 100644
--- a/arch/arm/mach-omap1/board-voiceblue.c
+++ b/arch/arm/mach-omap1/board-voiceblue.c
@@ -235,7 +235,7 @@ static struct notifier_block panic_block = {
235static int __init voiceblue_setup(void) 235static int __init voiceblue_setup(void)
236{ 236{
237 /* Setup panic notifier */ 237 /* Setup panic notifier */
238 notifier_chain_register(&panic_notifier_list, &panic_block); 238 atomic_notifier_chain_register(&panic_notifier_list, &panic_block);
239 239
240 return 0; 240 return 0;
241} 241}