Re: [PATCH 26/27] ARM: shmobile: kzm9g: enable FSI-AK4648

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


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]

Add to Google Powered by Linux