[alsa-devel] [PATCH 2/3] ASoC: mid-x86 machine driver - add jack detect support

Mark Brown broonie at opensource.wolfsonmicro.com
Thu Feb 3 16:20:48 CET 2011


On Thu, Feb 03, 2011 at 04:56:01PM +0530, Harsha Priya wrote:

> +#define IRQ_BASE 0xFFFF7FCD
> +#define IRQ_SIZE 1

This looks like it should be coming in via a platform device or
something?

> +static struct snd_soc_jack_pin mfld_jack_pins[] = {
> +	{
> +		.pin = "Headphones",
> +		.mask = SND_JACK_HEADPHONE,
> +	},
> +	{
> +		.pin = "AMIC1",
> +		.mask = SND_JACK_MICROPHONE,
> +	},
> +};
> +/* jack detection voltage zones */

Blank line between these - in general it'd be worth checking into this.

> +	/* retrive the irq number */
> +	irq = platform_get_irq(pdev, 0);
> +	/*	audio interrupt base of SRAM location where
> +	*	interrupts are stored by System FW */
> +	mc_drv_ctx.int_base = ioremap_nocache(IRQ_BASE, IRQ_SIZE);
> +	if (!mc_drv_ctx.int_base) {
> +		pr_err("Mapping of cache failed\n");
> +		ret_val = -ENOMEM;
> +		goto unalloc;
> +	}
> +	/* create botoom half handler for interrupt */
> +	mc_drv_ctx.mfld_jack_wq = create_workqueue("mfld_jack_wq");
> +	if (!mc_drv_ctx.mfld_jack_wq) {
> +		pr_err("cannot create jack workqueue\n");
> +		ret_val = -ENOMEM;
> +		goto unalloc;
> +	}
> +	/* register for interrupt */
> +	ret_val = request_irq(irq, snd_mfld_jack_intr_handler,
> +				IRQF_SHARED, pdev->dev.driver->name,
> +				&mc_drv_ctx);

I suspect you can just use request_threaded_irq() here which would ave
open coding the workqueue.


More information about the Alsa-devel mailing list