[PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
Bo Shen
voice.shen at atmel.com
Wed Jul 10 16:11:48 EST 2013
Hi Richard,
On 7/9/2013 22:25, Richard Genoud wrote:
[snip]
> +#include <linux/module.h>
> +#include <linux/moduleparam.h>
> +#include <linux/kernel.h>
> +#include <linux/clk.h>
> +#include <linux/timer.h>
> +#include <linux/interrupt.h>
> +#include <linux/platform_device.h>
> +#include <linux/i2c.h>
> +
> +#include <linux/atmel-ssc.h>
> +
> +#include <sound/core.h>
> +#include <sound/pcm.h>
> +#include <sound/pcm_params.h>
> +#include <sound/soc.h>
> +
> +#include <asm/mach-types.h>
> +#include <mach/hardware.h>
> +#include <mach/gpio.h>
> +
> +#include "../codecs/wm8731.h"
> +#include "atmel-pcm.h"
> +#include "atmel_ssc_dai.h"
I think some of the header file include is not needed. I keep them as
simple as following:
---8>---
#include <linux/clk.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/pinctrl/consumer.h>
#include <sound/soc.h>
#include "../codecs/wm8731.h"
#include "atmel_ssc_dai.h"
---<8---
> +#define MCLK_RATE 12288000
> +
> +#define DRV_NAME "sam9x5-snd-wm8731"
> +
> +/*
> + * Authorized rates are:
> + * Rate = MCLK_RATE / (n * 2)
> + * Where n is in [1..4095]
> + * (cf register SSC_CMR)
> + */
> +static unsigned int rates[] = {
> + 8000,
> + 16000,
> + 32000,
> + 48000,
> + 64000,
> + 96000,
> +};
This is decided by the codec, while not ssc when ssc in slave mode.
> +static struct snd_pcm_hw_constraint_list hw_rates = {
> + .count = ARRAY_SIZE(rates),
> + .list = rates,
> +};
> +
[snip]
> +
> + at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
We can put this into at91sam9x5ek_dai directly, not need to parse it
then. example as following:
---8>---
.dai_fmt = SND_SOC_DAIFMT_I2S
| SND_SOC_DAIFMT_NB_NF
| SND_SOC_DAIFMT_CBM_CFM,
---<8---
Best Regards,
Bo Shen
More information about the devicetree-discuss
mailing list