On Sun, Jun 10, 2012 at 08:59:19PM -0700, Kuninori Morimoto wrote:
> This patch enable sound playback/capture on CN9/CN10.
This, or possibly a previous patch, seems to have the following
dependencies. I am using the next branch of Rafael's renesas tree
which is based on v3.4-rc6.
cd04461 ASoC: sh: fsi: select simple-card on Kconfig
f239088 ASoC: add generic simple-card support
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>
Tested-by: Simon Horman <horms@xxxxxxxxxxxx>
> ---
> arch/arm/mach-shmobile/Kconfig | 1 +
> arch/arm/mach-shmobile/board-kzm9g.c | 79 ++++++++++++++++++++++++++++++++++
> 2 files changed, 80 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
> index 1542e91..a2045dc 100644
> --- a/arch/arm/mach-shmobile/Kconfig
> +++ b/arch/arm/mach-shmobile/Kconfig
> @@ -123,6 +123,7 @@ config MACH_KZM9G
> depends on ARCH_SH73A0
> select ARCH_REQUIRE_GPIOLIB
> select USE_OF
> + select SND_SOC_AK4642 if SND_SIMPLE_CARD
>
> comment "SH-Mobile System Configuration"
>
> diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c
> index d8e33b6..7523e9e 100644
> --- a/arch/arm/mach-shmobile/board-kzm9g.c
> +++ b/arch/arm/mach-shmobile/board-kzm9g.c
> @@ -33,6 +33,8 @@
> #include <linux/smsc911x.h>
> #include <linux/usb/r8a66597.h>
> #include <linux/videodev2.h>
> +#include <sound/sh_fsi.h>
> +#include <sound/simple_card.h>
> #include <mach/irqs.h>
> #include <mach/sh73a0.h>
> #include <mach/common.h>
> @@ -54,6 +56,14 @@
> #define GPIO_PCF8575_PORT15 (GPIO_NR + 13)
> #define GPIO_PCF8575_PORT16 (GPIO_NR + 14)
>
> +/*
> + * FSI-AK4648
> + *
> + * this command is required when playback.
> + *
> + * # amixer set "LINEOUT Mixer DACL" on
> + */
> +
> /* SMSC 9221 */
> static struct resource smsc9221_resources[] = {
> [0] = {
> @@ -267,11 +277,70 @@ static struct platform_device gpio_keys_device = {
> },
> };
>
> +/* FSI-AK4648 */
> +static struct sh_fsi_platform_info fsi_info = {
> + .port_a = {
> + },
> +};
> +
> +static struct resource fsi_resources[] = {
> + [0] = {
> + .name = "FSI",
> + .start = 0xEC230000,
> + .end = 0xEC230400 - 1,
> + .flags = IORESOURCE_MEM,
> + },
> + [1] = {
> + .start = gic_spi(146),
> + .flags = IORESOURCE_IRQ,
> + },
> +};
> +
> +static struct platform_device fsi_device = {
> + .name = "sh_fsi2",
> + .id = -1,
> + .num_resources = ARRAY_SIZE(fsi_resources),
> + .resource = fsi_resources,
> + .dev = {
> + .platform_data = &fsi_info,
> + },
> +};
> +
> +static struct asoc_simple_dai_init_info fsi2_ak4648_init_info = {
> + .fmt = SND_SOC_DAIFMT_LEFT_J,
> + .codec_daifmt = SND_SOC_DAIFMT_CBM_CFM,
> + .cpu_daifmt = SND_SOC_DAIFMT_CBS_CFS,
> + .sysclk = 11289600,
> +};
> +
> +static struct asoc_simple_card_info fsi2_ak4648_info = {
> + .name = "AK4648",
> + .card = "FSI2A-AK4648",
> + .cpu_dai = "fsia-dai",
> + .codec = "ak4642-codec.0-0012",
> + .platform = "sh_fsi2",
> + .codec_dai = "ak4642-hifi",
> + .init = &fsi2_ak4648_init_info,
> +};
> +
> +static struct platform_device fsi_ak4648_device = {
> + .name = "asoc-simple-card",
> + .dev = {
> + .platform_data = &fsi2_ak4648_info,
> + },
> +};
> +
> /* I2C */
> static struct pcf857x_platform_data pcf8575_pdata = {
> .gpio_base = GPIO_PCF8575_BASE,
> };
>
> +static struct i2c_board_info i2c0_devices[] = {
> + {
> + I2C_BOARD_INFO("ak4648", 0x12),
> + }
> +};
> +
> static struct i2c_board_info i2c1_devices[] = {
> {
> I2C_BOARD_INFO("st1232-ts", 0x55),
> @@ -293,6 +362,8 @@ static struct platform_device *kzm_devices[] __initdata = {
> &mmc_device,
> &sdhi0_device,
> &gpio_keys_device,
> + &fsi_device,
> + &fsi_ak4648_device,
> };
>
> /*
> @@ -431,11 +502,19 @@ static void __init kzm_init(void)
> gpio_request(GPIO_FN_PORT27_I2C_SCL3, NULL);
> gpio_request(GPIO_FN_PORT28_I2C_SDA3, NULL);
>
> + /* enable FSI2 port A (ak4648) */
> + gpio_request(GPIO_FN_FSIACK, NULL);
> + gpio_request(GPIO_FN_FSIAILR, NULL);
> + gpio_request(GPIO_FN_FSIAIBT, NULL);
> + gpio_request(GPIO_FN_FSIAISLD, NULL);
> + gpio_request(GPIO_FN_FSIAOSLD, NULL);
> +
> #ifdef CONFIG_CACHE_L2X0
> /* Early BRESP enable, Shared attribute override enable, 64K*8way */
> l2x0_init(IOMEM(0xf0100000), 0x40460000, 0x82000fff);
> #endif
>
> + i2c_register_board_info(0, i2c0_devices, ARRAY_SIZE(i2c0_devices));
> i2c_register_board_info(1, i2c1_devices, ARRAY_SIZE(i2c1_devices));
> i2c_register_board_info(3, i2c3_devices, ARRAY_SIZE(i2c3_devices));
>
> --
> 1.7.5.4
>
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Linux OMAP]
[Linux USB Devel]
[Video for Linux]
[Linux Audio Users]
[Photo]
[Yosemite News]
[Yosemite Photos]
[Free Online Dating]
[Linux Kernel]
[Linux SCSI]
[XFree86]