* [PATCH 2/2] ASoC: Add FSI-DA7210 sound support for SuperH
@ 2009-12-09 2:53 Kuninori Morimoto
2009-12-09 11:32 ` Mark Brown
0 siblings, 1 reply; 4+ messages in thread
From: Kuninori Morimoto @ 2009-12-09 2:53 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA, Magnus
Signed-off-by: Kuninori Morimoto <morimoto.kuninori@renesas.com>
---
sound/soc/sh/Kconfig | 8 +++
sound/soc/sh/Makefile | 2 +
sound/soc/sh/fsi-da7210.c | 117 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 127 insertions(+), 0 deletions(-)
create mode 100644 sound/soc/sh/fsi-da7210.c
diff --git a/sound/soc/sh/Kconfig b/sound/soc/sh/Kconfig
index 9e69765..8072a6d 100644
--- a/sound/soc/sh/Kconfig
+++ b/sound/soc/sh/Kconfig
@@ -47,4 +47,12 @@ config SND_FSI_AK4642
This option enables generic sound support for the
FSI - AK4642 unit
+config SND_FSI_DA7210
+ bool "FSI-DA7210 sound support"
+ depends on SND_SOC_SH4_FSI
+ select SND_SOC_DA7210
+ help
+ This option enables generic sound support for the
+ FSI - DA7210 unit
+
endmenu
diff --git a/sound/soc/sh/Makefile b/sound/soc/sh/Makefile
index a699787..1d0ec0a 100644
--- a/sound/soc/sh/Makefile
+++ b/sound/soc/sh/Makefile
@@ -13,6 +13,8 @@ obj-$(CONFIG_SND_SOC_SH4_FSI) += snd-soc-fsi.o
## boards
snd-soc-sh7760-ac97-objs := sh7760-ac97.o
snd-soc-fsi-ak4642-objs := fsi-ak4642.o
+snd-soc-fsi-da7210-objs := fsi-da7210.o
obj-$(CONFIG_SND_SH7760_AC97) += snd-soc-sh7760-ac97.o
obj-$(CONFIG_SND_FSI_AK4642) += snd-soc-fsi-ak4642.o
+obj-$(CONFIG_SND_FSI_DA7210) += snd-soc-fsi-da7210.o
diff --git a/sound/soc/sh/fsi-da7210.c b/sound/soc/sh/fsi-da7210.c
new file mode 100644
index 0000000..e25e964
--- /dev/null
+++ b/sound/soc/sh/fsi-da7210.c
@@ -0,0 +1,117 @@
+/*
+ * fsi-da7210.c
+ *
+ * Copyright (C) 2009 Renesas Solutions Corp.
+ * Kuninori Morimoto <morimoto.kuninori@renesas.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/io.h>
+#include <linux/i2c.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+
+#include <sound/sh_fsi.h>
+#include "../codecs/da7210.h"
+
+static int fsi_da7210_init(struct snd_soc_codec *codec)
+{
+ return snd_soc_dai_set_fmt(&da7210_dai,
+ SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
+ SND_SOC_DAIFMT_CBM_CFM);
+
+ /* Use this function to add machine dapm controls */
+ return 0;
+}
+
+static struct snd_soc_dai_link fsi_da7210_dai = {
+ .name = "DA7210",
+ .stream_name = "DA7210",
+ .cpu_dai = &fsi_soc_dai[1], /* FSI B */
+ .codec_dai = &da7210_dai,
+ .init = fsi_da7210_init,
+};
+
+static struct snd_soc_card fsi_soc_card = {
+ .name = "FSI",
+ .platform = &fsi_soc_platform,
+ .dai_link = &fsi_da7210_dai,
+ .num_links = 1,
+};
+
+static struct snd_soc_device fsi_da7210_snd_devdata = {
+ .card = &fsi_soc_card,
+ .codec_dev = &soc_codec_dev_da7210,
+};
+
+#define DA7210_BUS 0
+#define DA7210_ADR (0x34 >> 1)
+static int da7210_add_i2c_device(void)
+{
+ struct i2c_board_info info;
+ struct i2c_adapter *adapter;
+ struct i2c_client *client;
+
+ memset(&info, 0, sizeof(struct i2c_board_info));
+ info.addr = DA7210_ADR;
+ strlcpy(info.type, "da7210", I2C_NAME_SIZE);
+
+ adapter = i2c_get_adapter(DA7210_BUS);
+ if (!adapter) {
+ printk(KERN_ERR "can't get i2c adapter\n");
+ return -ENODEV;
+ }
+
+ client = i2c_new_device(adapter, &info);
+ i2c_put_adapter(adapter);
+ if (!client) {
+ printk(KERN_ERR "can't add i2c device\n");
+ return -ENODEV;
+ }
+
+ return 0;
+}
+
+static struct platform_device *fsi_da7210_snd_device;
+
+static int __init fsi_da7210_sound_init(void)
+{
+
+ int ret;
+
+ da7210_add_i2c_device();
+
+ fsi_da7210_snd_device = platform_device_alloc("soc-audio", -1);
+ if (!fsi_da7210_snd_device)
+ return -ENOMEM;
+
+ platform_set_drvdata(fsi_da7210_snd_device, &fsi_da7210_snd_devdata);
+ fsi_da7210_snd_devdata.dev = &fsi_da7210_snd_device->dev;
+ ret = platform_device_add(fsi_da7210_snd_device);
+ if (ret)
+ platform_device_put(fsi_da7210_snd_device);
+
+ return ret;
+}
+
+static void __exit fsi_da7210_sound_exit(void)
+{
+ platform_device_unregister(fsi_da7210_snd_device);
+}
+
+module_init(fsi_da7210_sound_init);
+module_exit(fsi_da7210_sound_exit);
+
+/* Module information */
+MODULE_DESCRIPTION("ALSA SoC FSI DA2710");
+MODULE_AUTHOR("Kuninori Morimoto <morimoto.kuninori@renesas.com>");
+MODULE_LICENSE("GPL");
--
1.6.3.3
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH 2/2] ASoC: Add FSI-DA7210 sound support for SuperH
2009-12-09 2:53 [PATCH 2/2] ASoC: Add FSI-DA7210 sound support for SuperH Kuninori Morimoto
@ 2009-12-09 11:32 ` Mark Brown
2009-12-10 2:17 ` Kuninori Morimoto
0 siblings, 1 reply; 4+ messages in thread
From: Mark Brown @ 2009-12-09 11:32 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Magnus
On Wed, Dec 09, 2009 at 11:53:37AM +0900, Kuninori Morimoto wrote:
> +static int fsi_da7210_init(struct snd_soc_codec *codec)
> +{
> + return snd_soc_dai_set_fmt(&da7210_dai,
> + SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
> + SND_SOC_DAIFMT_CBM_CFM);
> +
> + /* Use this function to add machine dapm controls */
> + return 0;
> +}
The second return statement can be removed - I suspect some compiler
versions will warn about unreachable code there.
> +#define DA7210_BUS 0
> +#define DA7210_ADR (0x34 >> 1)
> +static int da7210_add_i2c_device(void)
> +{
This should be being done by the arch code rather than here, and there's
no code to remove the device on shutdown. This idiom has been used by
some drivers as part of a transition from the old style ASoC stuff where
the I2C device was registered in the CODEC to reduce cross tree issues
but it's best to avoid it for new code.
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 2/2] ASoC: Add FSI-DA7210 sound support for SuperH
2009-12-09 11:32 ` Mark Brown
@ 2009-12-10 2:17 ` Kuninori Morimoto
2009-12-10 9:44 ` Mark Brown
0 siblings, 1 reply; 4+ messages in thread
From: Kuninori Morimoto @ 2009-12-10 2:17 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
Dear Mark
> > +#define DA7210_BUS 0
> > +#define DA7210_ADR (0x34 >> 1)
> > +static int da7210_add_i2c_device(void)
> > +{
>
> This should be being done by the arch code rather than here, and there's
> no code to remove the device on shutdown. This idiom has been used by
> some drivers as part of a transition from the old style ASoC stuff where
> the I2C device was registered in the CODEC to reduce cross tree issues
> but it's best to avoid it for new code.
Wow...
I should modify ak4642 / fsi-ak4642 too
Best regards
--
Kuninori Morimoto
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 2/2] ASoC: Add FSI-DA7210 sound support for SuperH
2009-12-10 2:17 ` Kuninori Morimoto
@ 2009-12-10 9:44 ` Mark Brown
0 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2009-12-10 9:44 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA
On 10 Dec 2009, at 02:17, Kuninori Morimoto <morimoto.kuninori@renesas.com
> wrote:
>
> Dear Mark
>
>>> +#define DA7210_BUS 0
>>> +#define DA7210_ADR (0x34 >> 1)
>>> +static int da7210_add_i2c_device(void)
>>> +{
>>
>> This should be being done by the arch code rather than here, and
>> there's
>> no code to remove the device on shutdown. This idiom has been used
>> by
>> some drivers as part of a transition from the old style ASoC stuff
>> where
>> the I2C device was registered in the CODEC to reduce cross tree
>> issues
>> but it's best to avoid it for new code.
>
> Wow...
> I should modify ak4642 / fsi-ak4642 too
Yes, please. It's not super urgent but it'd be a nice cleanup.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-12-10 9:44 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-09 2:53 [PATCH 2/2] ASoC: Add FSI-DA7210 sound support for SuperH Kuninori Morimoto
2009-12-09 11:32 ` Mark Brown
2009-12-10 2:17 ` Kuninori Morimoto
2009-12-10 9:44 ` Mark Brown
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.