diff options
Diffstat (limited to 'sound/soc/sh')
-rw-r--r-- | sound/soc/sh/dma-sh7760.c | 12 | ||||
-rw-r--r-- | sound/soc/sh/fsi-ak4642.c | 128 | ||||
-rw-r--r-- | sound/soc/sh/fsi-da7210.c | 1 | ||||
-rw-r--r-- | sound/soc/sh/fsi-hdmi.c | 14 | ||||
-rw-r--r-- | sound/soc/sh/fsi.c | 40 | ||||
-rw-r--r-- | sound/soc/sh/hac.c | 14 | ||||
-rw-r--r-- | sound/soc/sh/migor.c | 1 | ||||
-rw-r--r-- | sound/soc/sh/sh7760-ac97.c | 5 | ||||
-rw-r--r-- | sound/soc/sh/siu_dai.c | 21 | ||||
-rw-r--r-- | sound/soc/sh/ssi.c | 14 |
10 files changed, 45 insertions, 205 deletions
diff --git a/sound/soc/sh/dma-sh7760.c b/sound/soc/sh/dma-sh7760.c index db74005..7da2018 100644 --- a/sound/soc/sh/dma-sh7760.c +++ b/sound/soc/sh/dma-sh7760.c @@ -369,17 +369,7 @@ static struct platform_driver sh7760_pcm_driver = { .remove = __devexit_p(sh7760_soc_platform_remove), }; -static int __init snd_sh7760_pcm_init(void) -{ - return platform_driver_register(&sh7760_pcm_driver); -} -module_init(snd_sh7760_pcm_init); - -static void __exit snd_sh7760_pcm_exit(void) -{ - platform_driver_unregister(&sh7760_pcm_driver); -} -module_exit(snd_sh7760_pcm_exit); +module_platform_driver(sh7760_pcm_driver); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SH7760 Audio DMA (DMABRG) driver"); diff --git a/sound/soc/sh/fsi-ak4642.c b/sound/soc/sh/fsi-ak4642.c index dff64b9..97f540a 100644 --- a/sound/soc/sh/fsi-ak4642.c +++ b/sound/soc/sh/fsi-ak4642.c @@ -49,6 +49,7 @@ static struct snd_soc_dai_link fsi_dai_link = { }; static struct snd_soc_card fsi_soc_card = { + .owner = THIS_MODULE, .dai_link = &fsi_dai_link, .num_links = 1, }; @@ -58,27 +59,23 @@ static struct platform_device *fsi_snd_device; static int fsi_ak4642_probe(struct platform_device *pdev) { int ret = -ENOMEM; - const struct platform_device_id *id_entry; - struct fsi_ak4642_data *pdata; + struct fsi_ak4642_info *pinfo = pdev->dev.platform_data; - id_entry = pdev->id_entry; - if (!id_entry) { - dev_err(&pdev->dev, "unknown fsi ak4642\n"); - return -ENODEV; + if (!pinfo) { + dev_err(&pdev->dev, "no info for fsi ak4642\n"); + goto out; } - pdata = (struct fsi_ak4642_data *)id_entry->driver_data; - - fsi_snd_device = platform_device_alloc("soc-audio", pdata->id); + fsi_snd_device = platform_device_alloc("soc-audio", pinfo->id); if (!fsi_snd_device) goto out; - fsi_dai_link.name = pdata->name; - fsi_dai_link.stream_name = pdata->name; - fsi_dai_link.cpu_dai_name = pdata->cpu_dai; - fsi_dai_link.platform_name = pdata->platform; - fsi_dai_link.codec_name = pdata->codec; - fsi_soc_card.name = pdata->card; + fsi_dai_link.name = pinfo->name; + fsi_dai_link.stream_name = pinfo->name; + fsi_dai_link.cpu_dai_name = pinfo->cpu_dai; + fsi_dai_link.platform_name = pinfo->platform; + fsi_dai_link.codec_name = pinfo->codec; + fsi_soc_card.name = pinfo->card; platform_set_drvdata(fsi_snd_device, &fsi_soc_card); ret = platform_device_add(fsi_snd_device); @@ -96,114 +93,15 @@ static int fsi_ak4642_remove(struct platform_device *pdev) return 0; } -static struct fsi_ak4642_data fsi_a_ak4642 = { - .name = "AK4642", - .card = "FSIA-AK4642", - .cpu_dai = "fsia-dai", - .codec = "ak4642-codec.0-0012", - .platform = "sh_fsi.0", - .id = FSI_PORT_A, -}; - -static struct fsi_ak4642_data fsi_b_ak4642 = { - .name = "AK4642", - .card = "FSIB-AK4642", - .cpu_dai = "fsib-dai", - .codec = "ak4642-codec.0-0012", - .platform = "sh_fsi.0", - .id = FSI_PORT_B, -}; - -static struct fsi_ak4642_data fsi_a_ak4643 = { - .name = "AK4643", - .card = "FSIA-AK4643", - .cpu_dai = "fsia-dai", - .codec = "ak4642-codec.0-0013", - .platform = "sh_fsi.0", - .id = FSI_PORT_A, -}; - -static struct fsi_ak4642_data fsi_b_ak4643 = { - .name = "AK4643", - .card = "FSIB-AK4643", - .cpu_dai = "fsib-dai", - .codec = "ak4642-codec.0-0013", - .platform = "sh_fsi.0", - .id = FSI_PORT_B, -}; - -static struct fsi_ak4642_data fsi2_a_ak4642 = { - .name = "AK4642", - .card = "FSI2A-AK4642", - .cpu_dai = "fsia-dai", - .codec = "ak4642-codec.0-0012", - .platform = "sh_fsi2", - .id = FSI_PORT_A, -}; - -static struct fsi_ak4642_data fsi2_b_ak4642 = { - .name = "AK4642", - .card = "FSI2B-AK4642", - .cpu_dai = "fsib-dai", - .codec = "ak4642-codec.0-0012", - .platform = "sh_fsi2", - .id = FSI_PORT_B, -}; - -static struct fsi_ak4642_data fsi2_a_ak4643 = { - .name = "AK4643", - .card = "FSI2A-AK4643", - .cpu_dai = "fsia-dai", - .codec = "ak4642-codec.0-0013", - .platform = "sh_fsi2", - .id = FSI_PORT_A, -}; - -static struct fsi_ak4642_data fsi2_b_ak4643 = { - .name = "AK4643", - .card = "FSI2B-AK4643", - .cpu_dai = "fsib-dai", - .codec = "ak4642-codec.0-0013", - .platform = "sh_fsi2", - .id = FSI_PORT_B, -}; - -static struct platform_device_id fsi_id_table[] = { - /* FSI */ - { "sh_fsi_a_ak4642", (kernel_ulong_t)&fsi_a_ak4642 }, - { "sh_fsi_b_ak4642", (kernel_ulong_t)&fsi_b_ak4642 }, - { "sh_fsi_a_ak4643", (kernel_ulong_t)&fsi_a_ak4643 }, - { "sh_fsi_b_ak4643", (kernel_ulong_t)&fsi_b_ak4643 }, - - /* FSI 2 */ - { "sh_fsi2_a_ak4642", (kernel_ulong_t)&fsi2_a_ak4642 }, - { "sh_fsi2_b_ak4642", (kernel_ulong_t)&fsi2_b_ak4642 }, - { "sh_fsi2_a_ak4643", (kernel_ulong_t)&fsi2_a_ak4643 }, - { "sh_fsi2_b_ak4643", (kernel_ulong_t)&fsi2_b_ak4643 }, - {}, -}; - static struct platform_driver fsi_ak4642 = { .driver = { .name = "fsi-ak4642-audio", }, .probe = fsi_ak4642_probe, .remove = fsi_ak4642_remove, - .id_table = fsi_id_table, }; -static int __init fsi_ak4642_init(void) -{ - return platform_driver_register(&fsi_ak4642); -} - -static void __exit fsi_ak4642_exit(void) -{ - platform_driver_unregister(&fsi_ak4642); -} - -module_init(fsi_ak4642_init); -module_exit(fsi_ak4642_exit); +module_platform_driver(fsi_ak4642); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Generic SH4 FSI-AK4642 sound card"); diff --git a/sound/soc/sh/fsi-da7210.c b/sound/soc/sh/fsi-da7210.c index f5586b5b..1dd3354 100644 --- a/sound/soc/sh/fsi-da7210.c +++ b/sound/soc/sh/fsi-da7210.c @@ -44,6 +44,7 @@ static struct snd_soc_dai_link fsi_da7210_dai = { static struct snd_soc_card fsi_soc_card = { .name = "FSI-DA7210", + .owner = THIS_MODULE, .dai_link = &fsi_da7210_dai, .num_links = 1, }; diff --git a/sound/soc/sh/fsi-hdmi.c b/sound/soc/sh/fsi-hdmi.c index 3ebebe7..6e41908 100644 --- a/sound/soc/sh/fsi-hdmi.c +++ b/sound/soc/sh/fsi-hdmi.c @@ -39,6 +39,7 @@ static struct snd_soc_dai_link fsi_dai_link = { }; static struct snd_soc_card fsi_soc_card = { + .owner = THIS_MODULE, .dai_link = &fsi_dai_link, .num_links = 1, }; @@ -110,18 +111,7 @@ static struct platform_driver fsi_hdmi = { .id_table = fsi_id_table, }; -static int __init fsi_hdmi_init(void) -{ - return platform_driver_register(&fsi_hdmi); -} - -static void __exit fsi_hdmi_exit(void) -{ - platform_driver_unregister(&fsi_hdmi); -} - -module_init(fsi_hdmi_init); -module_exit(fsi_hdmi_exit); +module_platform_driver(fsi_hdmi); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Generic SH4 FSI-HDMI sound card"); diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c index 3d7016e..db6c89a 100644 --- a/sound/soc/sh/fsi.c +++ b/sound/soc/sh/fsi.c @@ -32,7 +32,9 @@ #define REG_DIDT 0x0020 #define REG_DODT 0x0024 #define REG_MUTE_ST 0x0028 +#define REG_OUT_DMAC 0x002C #define REG_OUT_SEL 0x0030 +#define REG_IN_DMAC 0x0038 /* master register */ #define MST_CLK_RST 0x0210 @@ -235,13 +237,13 @@ static void __fsi_reg_mask_set(u32 __iomem *reg, u32 mask, u32 data) } #define fsi_reg_write(p, r, d)\ - __fsi_reg_write((u32)(p->base + REG_##r), d) + __fsi_reg_write((p->base + REG_##r), d) #define fsi_reg_read(p, r)\ - __fsi_reg_read((u32)(p->base + REG_##r)) + __fsi_reg_read((p->base + REG_##r)) #define fsi_reg_mask_set(p, r, m, d)\ - __fsi_reg_mask_set((u32)(p->base + REG_##r), m, d) + __fsi_reg_mask_set((p->base + REG_##r), m, d) #define fsi_master_read(p, r) _fsi_master_read(p, MST_##r) #define fsi_core_read(p, r) _fsi_master_read(p, p->core->r) @@ -886,11 +888,11 @@ static int fsi_hw_startup(struct fsi_priv *fsi, int is_play, struct device *dev) { + struct fsi_master *master = fsi_get_master(fsi); + int fsi_ver = master->core->ver; u32 flags = fsi_get_info_flags(fsi); u32 data = 0; - pm_runtime_get_sync(dev); - /* clock setting */ if (fsi_is_clk_master(fsi)) data = DIMD | DOMD; @@ -920,6 +922,17 @@ static int fsi_hw_startup(struct fsi_priv *fsi, fsi_reg_mask_set(fsi, OUT_SEL, DMMD, DMMD); } + /* + * FIXME + * + * FSI driver assumed that data package is in-back. + * FSI2 chip can select it. + */ + if (fsi_ver >= 2) { + fsi_reg_write(fsi, OUT_DMAC, (1 << 4)); + fsi_reg_write(fsi, IN_DMAC, (1 << 4)); + } + /* irq clear */ fsi_irq_disable(fsi, is_play); fsi_irq_clear_status(fsi); @@ -936,8 +949,6 @@ static void fsi_hw_shutdown(struct fsi_priv *fsi, { if (fsi_is_clk_master(fsi)) fsi_set_master_clk(dev, fsi, fsi->rate, 0); - - pm_runtime_put_sync(dev); } static int fsi_dai_startup(struct snd_pcm_substream *substream, @@ -1081,7 +1092,7 @@ static int fsi_dai_hw_params(struct snd_pcm_substream *substream, return ret; } -static struct snd_soc_dai_ops fsi_dai_ops = { +static const struct snd_soc_dai_ops fsi_dai_ops = { .startup = fsi_dai_startup, .shutdown = fsi_dai_shutdown, .trigger = fsi_dai_trigger, @@ -1453,18 +1464,7 @@ static struct platform_driver fsi_driver = { .id_table = fsi_id_table, }; -static int __init fsi_mobile_init(void) -{ - return platform_driver_register(&fsi_driver); -} - -static void __exit fsi_mobile_exit(void) -{ - platform_driver_unregister(&fsi_driver); -} - -module_init(fsi_mobile_init); -module_exit(fsi_mobile_exit); +module_platform_driver(fsi_driver); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SuperH onchip FSI audio driver"); diff --git a/sound/soc/sh/hac.c b/sound/soc/sh/hac.c index c87e3ff..3474d7b 100644 --- a/sound/soc/sh/hac.c +++ b/sound/soc/sh/hac.c @@ -266,7 +266,7 @@ static int hac_hw_params(struct snd_pcm_substream *substream, #define AC97_FMTS \ SNDRV_PCM_FMTBIT_S16_LE -static struct snd_soc_dai_ops hac_dai_ops = { +static const struct snd_soc_dai_ops hac_dai_ops = { .hw_params = hac_hw_params, }; @@ -332,17 +332,7 @@ static struct platform_driver hac_pcm_driver = { .remove = __devexit_p(hac_soc_platform_remove), }; -static int __init sh4_hac_pcm_init(void) -{ - return platform_driver_register(&hac_pcm_driver); -} -module_init(sh4_hac_pcm_init); - -static void __exit sh4_hac_pcm_exit(void) -{ - platform_driver_unregister(&hac_pcm_driver); -} -module_exit(sh4_hac_pcm_exit); +module_platform_driver(hac_pcm_driver); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SuperH onchip HAC (AC97) audio driver"); diff --git a/sound/soc/sh/migor.c b/sound/soc/sh/migor.c index 6088a6a..9d9ad8d 100644 --- a/sound/soc/sh/migor.c +++ b/sound/soc/sh/migor.c @@ -164,6 +164,7 @@ static struct snd_soc_dai_link migor_dai = { /* migor audio machine driver */ static struct snd_soc_card snd_soc_migor = { .name = "Migo-R", + .owner = THIS_MODULE, .dai_link = &migor_dai, .num_links = 1, }; diff --git a/sound/soc/sh/sh7760-ac97.c b/sound/soc/sh/sh7760-ac97.c index c62ae68..4a3568a 100644 --- a/sound/soc/sh/sh7760-ac97.c +++ b/sound/soc/sh/sh7760-ac97.c @@ -16,10 +16,6 @@ #define IPSEL 0xFE400034 -/* platform specific structs can be declared here */ -extern struct snd_soc_dai_driver sh4_hac_dai[2]; -extern struct snd_soc_platform_driver sh7760_soc_platform; - static struct snd_soc_dai_link sh7760_ac97_dai = { .name = "AC97", .stream_name = "AC97 HiFi", @@ -32,6 +28,7 @@ static struct snd_soc_dai_link sh7760_ac97_dai = { static struct snd_soc_card sh7760_ac97_soc_machine = { .name = "SH7760 AC97", + .owner = THIS_MODULE, .dai_link = &sh7760_ac97_dai, .num_links = 1, }; diff --git a/sound/soc/sh/siu_dai.c b/sound/soc/sh/siu_dai.c index edacfeb..52d4c17 100644 --- a/sound/soc/sh/siu_dai.c +++ b/sound/soc/sh/siu_dai.c @@ -112,9 +112,6 @@ static void siu_dai_start(struct siu_port *port_info) dev_dbg(port_info->pcm->card->dev, "%s\n", __func__); - /* Turn on SIU clock */ - pm_runtime_get_sync(info->dev); - /* Issue software reset to siu */ siu_write32(base + SIU_SRCTL, 0); @@ -158,9 +155,6 @@ static void siu_dai_stop(struct siu_port *port_info) /* SIU software reset */ siu_write32(base + SIU_SRCTL, 0); - - /* Turn off SIU clock */ - pm_runtime_put_sync(info->dev); } static void siu_dai_spbAselect(struct siu_port *port_info) @@ -707,7 +701,7 @@ epclkget: return ret; } -static struct snd_soc_dai_ops siu_dai_ops = { +static const struct snd_soc_dai_ops siu_dai_ops = { .startup = siu_dai_startup, .shutdown = siu_dai_shutdown, .prepare = siu_dai_prepare, @@ -852,18 +846,7 @@ static struct platform_driver siu_driver = { .remove = __devexit_p(siu_remove), }; -static int __init siu_init(void) -{ - return platform_driver_register(&siu_driver); -} - -static void __exit siu_exit(void) -{ - platform_driver_unregister(&siu_driver); -} - -module_init(siu_init) -module_exit(siu_exit) +module_platform_driver(siu_driver); MODULE_AUTHOR("Carlos Munoz <carlos@kenati.com>"); MODULE_DESCRIPTION("ALSA SoC SH7722 SIU driver"); diff --git a/sound/soc/sh/ssi.c b/sound/soc/sh/ssi.c index e0c621c..ff82b56 100644 --- a/sound/soc/sh/ssi.c +++ b/sound/soc/sh/ssi.c @@ -332,7 +332,7 @@ static int ssi_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_U24_3LE | \ SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_U32_LE) -static struct snd_soc_dai_ops ssi_dai_ops = { +static const struct snd_soc_dai_ops ssi_dai_ops = { .startup = ssi_startup, .shutdown = ssi_shutdown, .trigger = ssi_trigger, @@ -401,17 +401,7 @@ static struct platform_driver sh4_ssi_driver = { .remove = __devexit_p(sh4_soc_dai_remove), }; -static int __init snd_sh4_ssi_init(void) -{ - return platform_driver_register(&sh4_ssi_driver); -} -module_init(snd_sh4_ssi_init); - -static void __exit snd_sh4_ssi_exit(void) -{ - platform_driver_unregister(&sh4_ssi_driver); -} -module_exit(snd_sh4_ssi_exit); +module_platform_driver(sh4_ssi_driver); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SuperH onchip SSI (I2S) audio driver"); |