[PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
From: Bo Shen <hidden>
Date: 2013-07-10 06:12:14
Also in:
alsa-devel, linux-devicetree, lkml
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