diff options
Diffstat (limited to 'arch/arm/mach-omap1/board-nokia770.c')
-rw-r--r-- | arch/arm/mach-omap1/board-nokia770.c | 53 |
1 files changed, 44 insertions, 9 deletions
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 | |||
37 | static void __init omap_nokia770_init_irq(void) | 39 | static 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 | ||
93 | static struct platform_device *nokia770_devices[] __initdata = { | 95 | static struct platform_device *nokia770_devices[] __initdata = { |
94 | &nokia770_kp_device, | 96 | &nokia770_kp_device, |
95 | }; | 97 | }; |
96 | 98 | ||
97 | static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata = { | 99 | static 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 | ||
106 | static struct spi_board_info nokia770_spi_board_info[] __initdata = { | 108 | static 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 | ||
216 | void nokia770_audio_pwr_up_request(int stage) | 219 | static int |
220 | nokia770_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 | ||
226 | void nokia770_audio_pwr_down_request(int stage) | 231 | static int |
232 | nokia770_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 | |||
251 | static 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 | |||
258 | static __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 | ||
244 | static void __init omap_nokia770_init(void) | 281 | static 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 | ||
259 | static void __init omap_nokia770_map_io(void) | 294 | static void __init omap_nokia770_map_io(void) |