[alsa-devel] [PATCH] ARM DaVinci: Add PCM3008 ALSA SoC driver for the Lyrtech SFFSDR board

Kevin Hilman khilman at deeprootsystems.com
Fri Nov 21 00:44:20 CET 2008


Mark Brown <broonie at sirena.org.uk> writes:

> On Mon, Nov 17, 2008 at 07:27:59PM -0500, Hugo Villeneuve wrote:
>> The PCM3008 is used on the Lyrtech SFFSDR board, in conjunction with an
>> FPGA that generates the bit clock and the master clock
>
> Looks fairly good overall.
>
>> Signed-off-by: Hugo Villeneuve <hugo.villeneuve at lyrtech.com>
>
> Normally codec drivers and machine drivers should be submitted as
> separate patches, though it's not critical.

I agree.  In addition, I believe the board-specific init
(sound/soc/davinci/davinci-sffsdr.c) should not be under sound/*, but
rather belongs in the board init code in arch/arm/mach-davinci/board*.

Kevin

>> index 5df7402..dc58ce2 100644
>> --- a/sound/soc/codecs/Kconfig
>> +++ b/sound/soc/codecs/Kconfig
>> @@ -80,6 +80,10 @@ config SND_SOC_TWL4030
>>  	tristate
>>  	depends on TWL4030_CORE
>>  
>> +config SND_SOC_PCM3008
>> +	tristate
>> +	depends on SFFSDR_FPGA
>
> The codec driver shouldn't depend on the FPGA driver.  Once that
> dependency has been removed the codec should be added to
> SND_SOC_ALL_CODECS.
>
>> +static int pcm3008_hw_params(struct snd_pcm_substream *substream,
>> +			     struct snd_pcm_hw_params *params)
>> +{
>> +	int fs;
>> +
>> +	/* Fsref can be 32000, 44100 or 48000. */
>> +	fs = params_rate(params);
>> +
>> +	printk(KERN_INFO "pcm3008_hw_params: rate = %d Hz\n", fs);
>> +
>> +	return sffsdr_fpga_set_codec_fs(fs);
>> +}
>
> This should be being done by the machine driver rather than by the codec
> driver - this will allow the codec driver to be used on another machine
> that has some other method for generating the clocks.  As far as I can
> see that's the only dependency on the sffsdr?
>
>> +	/* DEM1  DEM0  DE-EMPHASIS_MODE
>> +	 * Low   Low   De-emphasis 44.1 kHz ON
>> +	 * Low   High  De-emphasis OFF
>> +	 * High  Low   De-emphasis 48 kHz ON
>> +	 * High  High  De-emphasis 32 kHz ON
>> +	 */
>
> Looks like this should be exported as a control?  It's not important for
> merging but it'd be nice.
>
>> +static int pcm3008_soc_suspend(struct platform_device *pdev, pm_message_t msg)
>> +{
>> +	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
>> +	struct pcm3008_setup_data *setup = socdev->codec_data;
>> +
>> +	printk(KERN_INFO "pcm3008_soc_suspend(): TODO\n");
>
> This should be a comment, though it looks like you may actually have
> implemented this already?
>
>> +struct pcm3008_setup_data {
>> +	u8 dem0_pin;
>> +	u8 dem1_pin;
>> +	u8 pdad_pin;
>> +	u8 pdda_pin;
>> +};
>
> GPIO numbers should be unsigned to match the gpiolib API (some systems
> do support an awful lot of GPIOs).
>
> Also, ideally pdad and pdad would be used to implement DAPM controls so
> that they can be powered down when not in use but again that's not
> essential for merging - so long as they're passed in someone could do
> that later.
>
>> +config SND_DAVINCI_SOC_SFFSDR
>> +	tristate "SoC Audio support for SFFSDR"
>> +	depends on SND_DAVINCI_SOC && MACH_DAVINCI_SFFSDR
>> +	select SND_DAVINCI_SOC_I2S
>> +	select SND_SOC_PCM3008
>> +	help
>> +	  Say Y if you want to add support for SoC audio on
>> +	  Lyrtech SFFSDR board.
>
> This should also select SSFDR_FPGA - select ignores dependencies so the
> select from the codec driver won't be picked up (though the codec driver
> ought not to be selecting it in the first place).
>
>> --- /dev/null
>> +++ b/sound/soc/davinci/davinci-sffsdr.c
>> @@ -0,0 +1,145 @@
>> +/*
>> + * ASoC driver for Lyrtech SFFSDR board.
>> + *
>> + * Author:      Vladimir Barinov, <vbarinov at ru.mvista.com>
>> + * Copyright:   (C) 2007 MontaVista Software, Inc., <source at mvista.com>
>
> Are you sure?  Looks like cut'n'paste - MODULE_AUTHOR() claims you wrote
> this driver.
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel


More information about the Alsa-devel mailing list