From: Hiroshi DOYU Date: Thu, 21 Sep 2006 14:41:47 +0000 (+0300) Subject: ARM: OMAP: DSPGW: Peripheral (kfunc) control, Nokia770-specific X-Git-Tag: v2.6.18-omap1~43 X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=19bd1268ad8649005e4eed421bcdf4f11c8c02ff;p=linux-2.6-omap-h63xx.git ARM: OMAP: DSPGW: Peripheral (kfunc) control, Nokia770-specific Nokia770-specific part Signed-off-by: Hiroshi DOYU Signed-off-by: Juha Yrjola --- diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index ffbeca7f4a7..6f42827ccdd 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c @@ -32,6 +32,8 @@ #include #include +#include "../plat-omap/dsp/dsp_common.h" + static void __init omap_nokia770_init_irq(void) { /* On Nokia 770, the SleepX signal is masked with an @@ -87,7 +89,7 @@ static struct platform_device nokia770_kp_device = { }; static struct platform_device *nokia770_devices[] __initdata = { - &nokia770_kp_device, + &nokia770_kp_device, }; static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata = { @@ -149,6 +151,7 @@ static struct omap_board_config_kernel nokia770_config[] = { { OMAP_TAG_MMC, &nokia770_mmc_config }, }; +#if defined(CONFIG_OMAP_DSP) /* * audio power control */ @@ -209,7 +212,8 @@ static void nokia770_audio_pwr_down(void) schedule_delayed_work(&codec_power_down_work, HZ / 20); /* 50ms */ } -void nokia770_audio_pwr_up_request(int stage) +static void +nokia770_audio_pwr_up_request(struct dsp_kfunc_device *kdev, int stage) { down(&audio_pwr_sem); if (audio_pwr_state == -1) @@ -219,7 +223,8 @@ void nokia770_audio_pwr_up_request(int stage) up(&audio_pwr_sem); } -void nokia770_audio_pwr_down_request(int stage) +static void +nokia770_audio_pwr_down_request(struct dsp_kfunc_device *kdev, int stage) { down(&audio_pwr_sem); switch (stage) { @@ -237,6 +242,36 @@ void nokia770_audio_pwr_down_request(int stage) up(&audio_pwr_sem); } +static struct dsp_kfunc_device nokia770_audio_device = { + .name = "audio", + .type = DSP_KFUNC_DEV_TYPE_AUDIO, + .enable = nokia770_audio_pwr_up_request, + .disable = nokia770_audio_pwr_down_request, +}; + +static __init int omap_dsp_init(void) +{ + int ret; + + dspxor_ck = clk_get(0, "dspxor_ck"); + if (IS_ERR(dspxor_ck)) { + printk(KERN_ERR "couldn't acquire dspxor_ck\n"); + return PTR_ERR(dspxor_ck); + } + + ret = dsp_kfunc_device_register(&nokia770_audio_device); + if (ret) { + printk(KERN_ERR + "KFUNC device registration faild: %s\n", + dsp_audio_device.name); + goto out; + } + return 0; + out: + return ret; +} +#endif /* CONFIG_OMAP_DSP */ + static void __init omap_nokia770_init(void) { nokia770_config[0].data = &nokia770_usb_config; @@ -247,9 +282,7 @@ static void __init omap_nokia770_init(void) omap_board_config = nokia770_config; omap_board_config_size = ARRAY_SIZE(nokia770_config); omap_serial_init(); - omap_dsp_audio_pwr_up_request = nokia770_audio_pwr_up_request; - omap_dsp_audio_pwr_down_request = nokia770_audio_pwr_down_request; - dspxor_ck = clk_get(0, "dspxor_ck"); + omap_dsp_init(); } static void __init omap_nokia770_map_io(void)