[alsa-devel] [PATCH 1/1] Added patch file and Makefile entry for CA0132 HDA codec

Takashi Iwai tiwai at suse.de
Fri Jun 3 18:20:13 CEST 2011


At Thu, 2 Jun 2011 13:14:25 -0700,
Ian Minett wrote:
> 
> Attached is a patch that adds support for the CA0132 HDA codec,
> creating patch_ca0132.c in pci/hda.

Thanks for the patch!

>  It also adds an entry to the pci/hda makefile that builds the codec
>  when SND_HDA_CODEC_CA0132 is defined. However, we are not sure
>  where to add the KConfig entry for SND_HDA_CODEC_CA0132, which is
>  below, or if we should even create such an entry for this
>  submission.

Yes, at best, please include Kconfig change into the same patch.

But I see now you are patching alsa-driver code instead of kernel tree,
so it's not too trivial indeed.  I recommend you to patch your driver
in the kernel tree first, check it works, then submit the patch, instead
of modifying alsa-driver tree.  We can change alsa-driver tree later for
the new stuff.

About the code, see some quick reviews below.

> +/*
> + * CA0132 chip access stuffs
> + */
> +static int chipio_acquire_mutex(struct hda_codec *codec)
> +{
> +	struct ca0132_spec *spec = codec->spec;
> +
> +	mutex_lock(&spec->chipio_mutex);
> +	return 0;
> +}
> +
> +static int chipio_release_mutex(struct hda_codec *codec)
> +{
> +	struct ca0132_spec *spec = codec->spec;
> +
> +	mutex_unlock(&spec->chipio_mutex);
> +	return 0;
> +}

Avoid to introduce such wrappers.  It's more readable to get spec in
the function and call mutex_lock/unlock appropriately, in general.


> +/*
> + * Write chip address through the vendor widget -- NOT protected by the Mutex!
> + */
> +static int chipio_write_address(struct hda_codec *codec,
> +				unsigned int chip_addx)
> +{
> +	unsigned int res = 0;
> +	int retry = 100;
> +
> +	/* send low 16 bits of the address */
> +	do {
> +		res = snd_hda_codec_read(codec, WIDGET_CHIP_CTRL, 0,
> +				HDA_SHORT_CMD_VENDOR_CHIP_IO_ADDRESS_LOW,
> +				chip_addx & 0xffff);
> +		retry--;
> +	} while (res != HDA_STATUS_VENDOR_CHIP_IO_OK && retry);

100 retries look fairly much.  Do we really need so long access?


thanks,

Takashi


More information about the Alsa-devel mailing list