]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
ARM: OMAP: DSPGW: Peripheral (kfunc) control, Nokia770-specific
authorHiroshi DOYU <Hiroshi.DOYU@nokia.com>
Thu, 21 Sep 2006 14:41:47 +0000 (17:41 +0300)
committerJuha Yrjola <juha.yrjola@solidboot.com>
Thu, 21 Sep 2006 15:46:02 +0000 (18:46 +0300)
Nokia770-specific part

Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com>
arch/arm/mach-omap1/board-nokia770.c

index ffbeca7f4a76bbce260d546fd57ff09ecb0baef3..6f42827ccdd96215fe3a47b43917343f67da3bc6 100644 (file)
@@ -32,6 +32,8 @@
 #include <asm/arch/aic23.h>
 #include <asm/arch/gpio.h>
 
+#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)