mirror of https://gitee.com/openkylin/linux.git
Merge remote-tracking branches 'asoc/topic/atmel-classd', 'asoc/topic/const' and 'asoc/topic/da7218' into asoc-next
This commit is contained in:
commit
38cfbc12c8
|
@ -16,6 +16,10 @@ Required properties:
|
||||||
Required elements: "pclk", "gclk" and "aclk".
|
Required elements: "pclk", "gclk" and "aclk".
|
||||||
- clocks
|
- clocks
|
||||||
Please refer to clock-bindings.txt.
|
Please refer to clock-bindings.txt.
|
||||||
|
- assigned-clocks
|
||||||
|
Should be <&classd_gclk>.
|
||||||
|
- assigned-clock-parents
|
||||||
|
Should be <&audio_pll_pmc>.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- pinctrl-names, pinctrl-0
|
- pinctrl-names, pinctrl-0
|
||||||
|
@ -43,6 +47,8 @@ classd: classd@fc048000 {
|
||||||
dma-names = "tx";
|
dma-names = "tx";
|
||||||
clocks = <&classd_clk>, <&classd_gclk>, <&audio_pll_pmc>;
|
clocks = <&classd_clk>, <&classd_gclk>, <&audio_pll_pmc>;
|
||||||
clock-names = "pclk", "gclk", "aclk";
|
clock-names = "pclk", "gclk", "aclk";
|
||||||
|
assigned-clocks = <&classd_gclk>;
|
||||||
|
assigned-clock-parents = <&audio_pll_pmc>;
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_classd_default>;
|
pinctrl-0 = <&pinctrl_classd_default>;
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
Dialog Semiconductor DA7218 Audio Codec bindings
|
||||||
|
|
||||||
|
DA7218 is an audio codec with HP detect feature.
|
||||||
|
|
||||||
|
======
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : Should be "dlg,da7217" or "dlg,da7218"
|
||||||
|
- reg: Specifies the I2C slave address
|
||||||
|
|
||||||
|
- VDD-supply: VDD power supply for the device
|
||||||
|
- VDDMIC-supply: VDDMIC power supply for the device
|
||||||
|
- VDDIO-supply: VDDIO power supply for the device
|
||||||
|
(See Documentation/devicetree/bindings/regulator/regulator.txt for further
|
||||||
|
information relating to regulators)
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- interrupt-parent: Specifies the phandle of the interrupt controller to which
|
||||||
|
the IRQs from DA7218 are delivered to.
|
||||||
|
- interrupts: IRQ line info for DA7218 chip.
|
||||||
|
(See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for
|
||||||
|
further information relating to interrupt properties)
|
||||||
|
- interrupt-names : Name associated with interrupt line. Should be "wakeup" if
|
||||||
|
interrupt is to be used to wake system, otherwise "irq" should be used.
|
||||||
|
- wakeup-source: Flag to indicate this device can wake system (suspend/resume).
|
||||||
|
|
||||||
|
- clocks : phandle and clock specifier for codec MCLK.
|
||||||
|
- clock-names : Clock name string for 'clocks' attribute, should be "mclk".
|
||||||
|
|
||||||
|
- dlg,micbias1-lvl-millivolt : Voltage (mV) for Mic Bias 1
|
||||||
|
[<1200>, <1600>, <1800>, <2000>, <2200>, <2400>, <2600>, <2800>, <3000>]
|
||||||
|
- dlg,micbias2-lvl-millivolt : Voltage (mV) for Mic Bias 2
|
||||||
|
[<1200>, <1600>, <1800>, <2000>, <2200>, <2400>, <2600>, <2800>, <3000>]
|
||||||
|
- dlg,mic1-amp-in-sel : Mic1 input source type
|
||||||
|
["diff", "se_p", "se_n"]
|
||||||
|
- dlg,mic2-amp-in-sel : Mic2 input source type
|
||||||
|
["diff", "se_p", "se_n"]
|
||||||
|
- dlg,dmic1-data-sel : DMIC1 channel select based on clock edge.
|
||||||
|
["lrise_rfall", "lfall_rrise"]
|
||||||
|
- dlg,dmic1-samplephase : When to sample audio from DMIC1.
|
||||||
|
["on_clkedge", "between_clkedge"]
|
||||||
|
- dlg,dmic1-clkrate-hz : DMic1 clock frequency (Hz).
|
||||||
|
[<1500000>, <3000000>]
|
||||||
|
- dlg,dmic2-data-sel : DMic2 channel select based on clock edge.
|
||||||
|
["lrise_rfall", "lfall_rrise"]
|
||||||
|
- dlg,dmic2-samplephase : When to sample audio from DMic2.
|
||||||
|
["on_clkedge", "between_clkedge"]
|
||||||
|
- dlg,dmic2-clkrate-hz : DMic2 clock frequency (Hz).
|
||||||
|
[<1500000>, <3000000>]
|
||||||
|
- dlg,hp-diff-single-supply : Boolean flag, use single supply for HP
|
||||||
|
(DA7217 only)
|
||||||
|
|
||||||
|
======
|
||||||
|
|
||||||
|
Optional Child node - 'da7218_hpldet' (DA7218 only):
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- dlg,jack-rate-us : Time between jack detect measurements (us)
|
||||||
|
[<5>, <10>, <20>, <40>, <80>, <160>, <320>, <640>]
|
||||||
|
- dlg,jack-debounce : Number of debounce measurements taken for jack detect
|
||||||
|
[<0>, <2>, <3>, <4>]
|
||||||
|
- dlg,jack-threshold-pct : Threshold level for jack detection (% of VDD)
|
||||||
|
[<84>, <88>, <92>, <96>]
|
||||||
|
- dlg,comp-inv : Boolean flag, invert comparator output
|
||||||
|
- dlg,hyst : Boolean flag, enable hysteresis
|
||||||
|
- dlg,discharge : Boolean flag, auto discharge of Mic Bias on jack removal
|
||||||
|
|
||||||
|
======
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
codec: da7218@1a {
|
||||||
|
compatible = "dlg,da7218";
|
||||||
|
reg = <0x1a>;
|
||||||
|
interrupt-parent = <&gpio6>;
|
||||||
|
interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
wakeup-source;
|
||||||
|
|
||||||
|
VDD-supply = <®_audio>;
|
||||||
|
VDDMIC-supply = <®_audio>;
|
||||||
|
VDDIO-supply = <®_audio>;
|
||||||
|
|
||||||
|
clocks = <&clks 201>;
|
||||||
|
clock-names = "mclk";
|
||||||
|
|
||||||
|
dlg,micbias1-lvl-millivolt = <2600>;
|
||||||
|
dlg,micbias2-lvl-millivolt = <2600>;
|
||||||
|
dlg,mic1-amp-in-sel = "diff";
|
||||||
|
dlg,mic2-amp-in-sel = "diff";
|
||||||
|
|
||||||
|
dlg,dmic1-data-sel = "lrise_rfall";
|
||||||
|
dlg,dmic1-samplephase = "on_clkedge";
|
||||||
|
dlg,dmic1-clkrate-hz = <3000000>;
|
||||||
|
dlg,dmic2-data-sel = "lrise_rfall";
|
||||||
|
dlg,dmic2-samplephase = "on_clkedge";
|
||||||
|
dlg,dmic2-clkrate-hz = <3000000>;
|
||||||
|
|
||||||
|
da7218_hpldet {
|
||||||
|
dlg,jack-rate-us = <40>;
|
||||||
|
dlg,jack-debounce = <2>;
|
||||||
|
dlg,jack-threshold-pct = <84>;
|
||||||
|
dlg,hyst;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,109 @@
|
||||||
|
/*
|
||||||
|
* da7218.h - DA7218 ASoC Codec Driver Platform Data
|
||||||
|
*
|
||||||
|
* Copyright (c) 2015 Dialog Semiconductor
|
||||||
|
*
|
||||||
|
* Author: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _DA7218_PDATA_H
|
||||||
|
#define _DA7218_PDATA_H
|
||||||
|
|
||||||
|
/* Mic Bias */
|
||||||
|
enum da7218_micbias_voltage {
|
||||||
|
DA7218_MICBIAS_1_2V = -1,
|
||||||
|
DA7218_MICBIAS_1_6V,
|
||||||
|
DA7218_MICBIAS_1_8V,
|
||||||
|
DA7218_MICBIAS_2_0V,
|
||||||
|
DA7218_MICBIAS_2_2V,
|
||||||
|
DA7218_MICBIAS_2_4V,
|
||||||
|
DA7218_MICBIAS_2_6V,
|
||||||
|
DA7218_MICBIAS_2_8V,
|
||||||
|
DA7218_MICBIAS_3_0V,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum da7218_mic_amp_in_sel {
|
||||||
|
DA7218_MIC_AMP_IN_SEL_DIFF = 0,
|
||||||
|
DA7218_MIC_AMP_IN_SEL_SE_P,
|
||||||
|
DA7218_MIC_AMP_IN_SEL_SE_N,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* DMIC */
|
||||||
|
enum da7218_dmic_data_sel {
|
||||||
|
DA7218_DMIC_DATA_LRISE_RFALL = 0,
|
||||||
|
DA7218_DMIC_DATA_LFALL_RRISE,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum da7218_dmic_samplephase {
|
||||||
|
DA7218_DMIC_SAMPLE_ON_CLKEDGE = 0,
|
||||||
|
DA7218_DMIC_SAMPLE_BETWEEN_CLKEDGE,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum da7218_dmic_clk_rate {
|
||||||
|
DA7218_DMIC_CLK_3_0MHZ = 0,
|
||||||
|
DA7218_DMIC_CLK_1_5MHZ,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Headphone Detect */
|
||||||
|
enum da7218_hpldet_jack_rate {
|
||||||
|
DA7218_HPLDET_JACK_RATE_5US = 0,
|
||||||
|
DA7218_HPLDET_JACK_RATE_10US,
|
||||||
|
DA7218_HPLDET_JACK_RATE_20US,
|
||||||
|
DA7218_HPLDET_JACK_RATE_40US,
|
||||||
|
DA7218_HPLDET_JACK_RATE_80US,
|
||||||
|
DA7218_HPLDET_JACK_RATE_160US,
|
||||||
|
DA7218_HPLDET_JACK_RATE_320US,
|
||||||
|
DA7218_HPLDET_JACK_RATE_640US,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum da7218_hpldet_jack_debounce {
|
||||||
|
DA7218_HPLDET_JACK_DEBOUNCE_OFF = 0,
|
||||||
|
DA7218_HPLDET_JACK_DEBOUNCE_2,
|
||||||
|
DA7218_HPLDET_JACK_DEBOUNCE_3,
|
||||||
|
DA7218_HPLDET_JACK_DEBOUNCE_4,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum da7218_hpldet_jack_thr {
|
||||||
|
DA7218_HPLDET_JACK_THR_84PCT = 0,
|
||||||
|
DA7218_HPLDET_JACK_THR_88PCT,
|
||||||
|
DA7218_HPLDET_JACK_THR_92PCT,
|
||||||
|
DA7218_HPLDET_JACK_THR_96PCT,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct da7218_hpldet_pdata {
|
||||||
|
enum da7218_hpldet_jack_rate jack_rate;
|
||||||
|
enum da7218_hpldet_jack_debounce jack_debounce;
|
||||||
|
enum da7218_hpldet_jack_thr jack_thr;
|
||||||
|
bool comp_inv;
|
||||||
|
bool hyst;
|
||||||
|
bool discharge;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct da7218_pdata {
|
||||||
|
/* Mic */
|
||||||
|
enum da7218_micbias_voltage micbias1_lvl;
|
||||||
|
enum da7218_micbias_voltage micbias2_lvl;
|
||||||
|
enum da7218_mic_amp_in_sel mic1_amp_in_sel;
|
||||||
|
enum da7218_mic_amp_in_sel mic2_amp_in_sel;
|
||||||
|
|
||||||
|
/* DMIC */
|
||||||
|
enum da7218_dmic_data_sel dmic1_data_sel;
|
||||||
|
enum da7218_dmic_data_sel dmic2_data_sel;
|
||||||
|
enum da7218_dmic_samplephase dmic1_samplephase;
|
||||||
|
enum da7218_dmic_samplephase dmic2_samplephase;
|
||||||
|
enum da7218_dmic_clk_rate dmic1_clk_rate;
|
||||||
|
enum da7218_dmic_clk_rate dmic2_clk_rate;
|
||||||
|
|
||||||
|
/* HP Diff Supply - DA7217 only */
|
||||||
|
bool hp_diff_single_supply;
|
||||||
|
|
||||||
|
/* HP Detect - DA7218 only */
|
||||||
|
struct da7218_hpldet_pdata *hpldet_pdata;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _DA7218_PDATA_H */
|
|
@ -106,7 +106,7 @@ static const struct snd_pcm_hardware atmel_classd_hw = {
|
||||||
.rates = ATMEL_CLASSD_RATES,
|
.rates = ATMEL_CLASSD_RATES,
|
||||||
.rate_min = 8000,
|
.rate_min = 8000,
|
||||||
.rate_max = 96000,
|
.rate_max = 96000,
|
||||||
.channels_min = 2,
|
.channels_min = 1,
|
||||||
.channels_max = 2,
|
.channels_max = 2,
|
||||||
.buffer_bytes_max = 64 * 1024,
|
.buffer_bytes_max = 64 * 1024,
|
||||||
.period_bytes_min = 256,
|
.period_bytes_min = 256,
|
||||||
|
@ -145,7 +145,7 @@ static const struct snd_soc_dai_ops atmel_classd_cpu_dai_ops = {
|
||||||
|
|
||||||
static struct snd_soc_dai_driver atmel_classd_cpu_dai = {
|
static struct snd_soc_dai_driver atmel_classd_cpu_dai = {
|
||||||
.playback = {
|
.playback = {
|
||||||
.channels_min = 2,
|
.channels_min = 1,
|
||||||
.channels_max = 2,
|
.channels_max = 2,
|
||||||
.rates = ATMEL_CLASSD_RATES,
|
.rates = ATMEL_CLASSD_RATES,
|
||||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,},
|
.formats = SNDRV_PCM_FMTBIT_S16_LE,},
|
||||||
|
@ -171,9 +171,13 @@ atmel_classd_platform_configure_dma(struct snd_pcm_substream *substream,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (params_channels(params) == 1)
|
||||||
|
slave_config->dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
|
||||||
|
else
|
||||||
|
slave_config->dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||||
|
|
||||||
slave_config->direction = DMA_MEM_TO_DEV;
|
slave_config->direction = DMA_MEM_TO_DEV;
|
||||||
slave_config->dst_addr = dd->phy_base + CLASSD_THR;
|
slave_config->dst_addr = dd->phy_base + CLASSD_THR;
|
||||||
slave_config->dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
|
||||||
slave_config->dst_maxburst = 1;
|
slave_config->dst_maxburst = 1;
|
||||||
slave_config->src_maxburst = 1;
|
slave_config->src_maxburst = 1;
|
||||||
slave_config->device_fc = false;
|
slave_config->device_fc = false;
|
||||||
|
@ -486,7 +490,7 @@ static struct snd_soc_dai_driver atmel_classd_codec_dai = {
|
||||||
.name = ATMEL_CLASSD_CODEC_DAI_NAME,
|
.name = ATMEL_CLASSD_CODEC_DAI_NAME,
|
||||||
.playback = {
|
.playback = {
|
||||||
.stream_name = "Playback",
|
.stream_name = "Playback",
|
||||||
.channels_min = 2,
|
.channels_min = 1,
|
||||||
.channels_max = 2,
|
.channels_max = 2,
|
||||||
.rates = ATMEL_CLASSD_RATES,
|
.rates = ATMEL_CLASSD_RATES,
|
||||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||||
|
|
|
@ -59,6 +59,7 @@ config SND_SOC_ALL_CODECS
|
||||||
select SND_SOC_CX20442 if TTY
|
select SND_SOC_CX20442 if TTY
|
||||||
select SND_SOC_DA7210 if SND_SOC_I2C_AND_SPI
|
select SND_SOC_DA7210 if SND_SOC_I2C_AND_SPI
|
||||||
select SND_SOC_DA7213 if I2C
|
select SND_SOC_DA7213 if I2C
|
||||||
|
select SND_SOC_DA7218 if I2C
|
||||||
select SND_SOC_DA7219 if I2C
|
select SND_SOC_DA7219 if I2C
|
||||||
select SND_SOC_DA732X if I2C
|
select SND_SOC_DA732X if I2C
|
||||||
select SND_SOC_DA9055 if I2C
|
select SND_SOC_DA9055 if I2C
|
||||||
|
@ -450,6 +451,9 @@ config SND_SOC_DA7210
|
||||||
config SND_SOC_DA7213
|
config SND_SOC_DA7213
|
||||||
tristate
|
tristate
|
||||||
|
|
||||||
|
config SND_SOC_DA7218
|
||||||
|
tristate
|
||||||
|
|
||||||
config SND_SOC_DA7219
|
config SND_SOC_DA7219
|
||||||
tristate
|
tristate
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ snd-soc-cs47l24-objs := cs47l24.o
|
||||||
snd-soc-cx20442-objs := cx20442.o
|
snd-soc-cx20442-objs := cx20442.o
|
||||||
snd-soc-da7210-objs := da7210.o
|
snd-soc-da7210-objs := da7210.o
|
||||||
snd-soc-da7213-objs := da7213.o
|
snd-soc-da7213-objs := da7213.o
|
||||||
|
snd-soc-da7218-objs := da7218.o
|
||||||
snd-soc-da7219-objs := da7219.o da7219-aad.o
|
snd-soc-da7219-objs := da7219.o da7219-aad.o
|
||||||
snd-soc-da732x-objs := da732x.o
|
snd-soc-da732x-objs := da732x.o
|
||||||
snd-soc-da9055-objs := da9055.o
|
snd-soc-da9055-objs := da9055.o
|
||||||
|
@ -250,6 +251,7 @@ obj-$(CONFIG_SND_SOC_CS47L24) += snd-soc-cs47l24.o
|
||||||
obj-$(CONFIG_SND_SOC_CX20442) += snd-soc-cx20442.o
|
obj-$(CONFIG_SND_SOC_CX20442) += snd-soc-cx20442.o
|
||||||
obj-$(CONFIG_SND_SOC_DA7210) += snd-soc-da7210.o
|
obj-$(CONFIG_SND_SOC_DA7210) += snd-soc-da7210.o
|
||||||
obj-$(CONFIG_SND_SOC_DA7213) += snd-soc-da7213.o
|
obj-$(CONFIG_SND_SOC_DA7213) += snd-soc-da7213.o
|
||||||
|
obj-$(CONFIG_SND_SOC_DA7218) += snd-soc-da7218.o
|
||||||
obj-$(CONFIG_SND_SOC_DA7219) += snd-soc-da7219.o
|
obj-$(CONFIG_SND_SOC_DA7219) += snd-soc-da7219.o
|
||||||
obj-$(CONFIG_SND_SOC_DA732X) += snd-soc-da732x.o
|
obj-$(CONFIG_SND_SOC_DA732X) += snd-soc-da732x.o
|
||||||
obj-$(CONFIG_SND_SOC_DA9055) += snd-soc-da9055.o
|
obj-$(CONFIG_SND_SOC_DA9055) += snd-soc-da9055.o
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -62,6 +62,8 @@ int imx_pcm_dma_init(struct platform_device *pdev, size_t size)
|
||||||
|
|
||||||
config = devm_kzalloc(&pdev->dev,
|
config = devm_kzalloc(&pdev->dev,
|
||||||
sizeof(struct snd_dmaengine_pcm_config), GFP_KERNEL);
|
sizeof(struct snd_dmaengine_pcm_config), GFP_KERNEL);
|
||||||
|
if (!config)
|
||||||
|
return -ENOMEM;
|
||||||
*config = imx_dmaengine_pcm_config;
|
*config = imx_dmaengine_pcm_config;
|
||||||
if (size)
|
if (size)
|
||||||
config->prealloc_buffer_size = size;
|
config->prealloc_buffer_size = size;
|
||||||
|
|
|
@ -377,6 +377,8 @@ static int sst_byt_pcm_probe(struct snd_soc_platform *platform)
|
||||||
|
|
||||||
priv_data = devm_kzalloc(platform->dev, sizeof(*priv_data),
|
priv_data = devm_kzalloc(platform->dev, sizeof(*priv_data),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
|
if (!priv_data)
|
||||||
|
return -ENOMEM;
|
||||||
priv_data->byt = plat_data->dsp;
|
priv_data->byt = plat_data->dsp;
|
||||||
snd_soc_platform_set_drvdata(platform, priv_data);
|
snd_soc_platform_set_drvdata(platform, priv_data);
|
||||||
|
|
||||||
|
|
|
@ -368,6 +368,8 @@ static int omap_hdmi_audio_probe(struct platform_device *pdev)
|
||||||
card->owner = THIS_MODULE;
|
card->owner = THIS_MODULE;
|
||||||
card->dai_link =
|
card->dai_link =
|
||||||
devm_kzalloc(dev, sizeof(*(card->dai_link)), GFP_KERNEL);
|
devm_kzalloc(dev, sizeof(*(card->dai_link)), GFP_KERNEL);
|
||||||
|
if (!card->dai_link)
|
||||||
|
return -ENOMEM;
|
||||||
card->dai_link->name = card->name;
|
card->dai_link->name = card->name;
|
||||||
card->dai_link->stream_name = card->name;
|
card->dai_link->stream_name = card->name;
|
||||||
card->dai_link->cpu_dai_name = dev_name(ad->dssdev);
|
card->dai_link->cpu_dai_name = dev_name(ad->dssdev);
|
||||||
|
|
Loading…
Reference in New Issue