[PATCH 1/5] mfd: add codec resource into 88pm860x driver

Mark Brown broonie at opensource.wolfsonmicro.com
Fri Aug 13 09:58:58 EDT 2010


On Fri, Aug 13, 2010 at 09:55:19PM +0800, Haojian Zhuang wrote:
> From 7f48ab298f0017ff8b86dbc11f8de21505965ce7 Mon Sep 17 00:00:00 2001
> From: Haojian Zhuang <haojian.zhuang at marvell.com>
> Date: Thu, 12 Aug 2010 11:59:33 +0800
> Subject: [PATCH 1/5] mfd: add codec resource into 88pm860x driver
> 
> Add codec IRQ resources that are used in 88pm860x codec driver.

CCing in Samuel since this ought to have his ack.  It may as well be
merged via the MFD tree since there's no build time dependency, I guess.
I do have one comment...

> Signed-off-by: Haojian Zhuang <haojian.zhuang at marvell.com>
> ---
>  drivers/mfd/88pm860x-core.c |   44 +++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 44 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/mfd/88pm860x-core.c b/drivers/mfd/88pm860x-core.c
> index 1580f1f..fba00b4 100644
> --- a/drivers/mfd/88pm860x-core.c
> +++ b/drivers/mfd/88pm860x-core.c
> @@ -158,6 +158,43 @@ static struct mfd_cell onkey_devs[] = {
>  	},
>  };
> 
> +static struct resource codec_resources[] = {
> +	{
> +		/* Headset microphone insertion or removal */
> +		.name		= "micin",
> +		.start		= PM8607_IRQ_MICIN,
> +		.end		= PM8607_IRQ_MICIN,
> +		.flags		= IORESOURCE_IRQ,
> +	}, {
> +		/* Hook-switch press or release */
> +		.name		= "hook",
> +		.start		= PM8607_IRQ_HOOK,
> +		.end		= PM8607_IRQ_HOOK,
> +		.flags		= IORESOURCE_IRQ,
> +	}, {
> +		/* Headset insertion or removal */
> +		.name		= "headset",
> +		.start		= PM8607_IRQ_HEADSET,
> +		.end		= PM8607_IRQ_HEADSET,
> +		.flags		= IORESOURCE_IRQ,
> +	}, {
> +		/* Audio short */
> +		.name		= "audio-short",
> +		.start		= PM8607_IRQ_AUDIO_SHORT,
> +		.end		= PM8607_IRQ_AUDIO_SHORT,
> +		.flags		= IORESOURCE_IRQ,
> +	},
> +};
> +
> +static struct mfd_cell codec_devs[] = {
> +	{
> +		.name		= "88pm860x-codec",
> +		.num_resources	= 4,

It'd be better to use ARRAY_SIZE() here.

> +		.resources	= &codec_resources[0],
> +		.id		= -1,
> +	},
> +};
> +
>  static struct resource regulator_resources[] = {
>  	PM8607_REG_RESOURCE(BUCK1, BUCK1),
>  	PM8607_REG_RESOURCE(BUCK2, BUCK2),
> @@ -695,6 +732,13 @@ static void __devinit device_8607_init(struct
> pm860x_chip *chip,
>  		goto out_dev;
>  	}
> 
> +	ret = mfd_add_devices(chip->dev, 0, &codec_devs[0],
> +			      ARRAY_SIZE(codec_devs),
> +			      &codec_resources[0], 0);
> +	if (ret < 0) {
> +		dev_err(chip->dev, "Failed to add codec subdev\n");
> +		goto out_dev;
> +	}
>  	return;
>  out_dev:
>  	mfd_remove_devices(chip->dev);
> -- 
> 1.5.6.5



More information about the linux-arm-kernel mailing list