Lines Matching +full:comp +full:- +full:int
1 // SPDX-License-Identifier: GPL-2.0
16 static int pcm3060_set_sysclk(struct snd_soc_dai *dai, int clk_id, in pcm3060_set_sysclk()
17 unsigned int freq, int dir) in pcm3060_set_sysclk()
19 struct snd_soc_component *comp = dai->component; in pcm3060_set_sysclk() local
20 struct pcm3060_priv *priv = snd_soc_component_get_drvdata(comp); in pcm3060_set_sysclk()
21 unsigned int reg; in pcm3060_set_sysclk()
22 unsigned int val; in pcm3060_set_sysclk()
25 dev_err(comp->dev, "unsupported sysclock dir: %d\n", dir); in pcm3060_set_sysclk()
26 return -EINVAL; in pcm3060_set_sysclk()
35 val = (dai->id == PCM3060_DAI_ID_DAC ? PCM3060_REG_CSEL : 0); in pcm3060_set_sysclk()
39 val = (dai->id == PCM3060_DAI_ID_DAC ? 0 : PCM3060_REG_CSEL); in pcm3060_set_sysclk()
43 dev_err(comp->dev, "unsupported sysclock id: %d\n", clk_id); in pcm3060_set_sysclk()
44 return -EINVAL; in pcm3060_set_sysclk()
47 if (dai->id == PCM3060_DAI_ID_DAC) in pcm3060_set_sysclk()
52 regmap_update_bits(priv->regmap, reg, PCM3060_REG_CSEL, val); in pcm3060_set_sysclk()
54 priv->dai[dai->id].sclk_freq = freq; in pcm3060_set_sysclk()
59 static int pcm3060_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) in pcm3060_set_fmt()
61 struct snd_soc_component *comp = dai->component; in pcm3060_set_fmt() local
62 struct pcm3060_priv *priv = snd_soc_component_get_drvdata(comp); in pcm3060_set_fmt()
63 unsigned int reg; in pcm3060_set_fmt()
64 unsigned int val; in pcm3060_set_fmt()
67 dev_err(comp->dev, "unsupported DAI polarity: 0x%x\n", fmt); in pcm3060_set_fmt()
68 return -EINVAL; in pcm3060_set_fmt()
73 priv->dai[dai->id].is_provider = true; in pcm3060_set_fmt()
76 priv->dai[dai->id].is_provider = false; in pcm3060_set_fmt()
79 dev_err(comp->dev, "unsupported DAI mode: 0x%x\n", fmt); in pcm3060_set_fmt()
80 return -EINVAL; in pcm3060_set_fmt()
94 dev_err(comp->dev, "unsupported DAI format: 0x%x\n", fmt); in pcm3060_set_fmt()
95 return -EINVAL; in pcm3060_set_fmt()
98 if (dai->id == PCM3060_DAI_ID_DAC) in pcm3060_set_fmt()
103 regmap_update_bits(priv->regmap, reg, PCM3060_REG_MASK_FMT, val); in pcm3060_set_fmt()
108 static int pcm3060_hw_params(struct snd_pcm_substream *substream, in pcm3060_hw_params()
112 struct snd_soc_component *comp = dai->component; in pcm3060_hw_params() local
113 struct pcm3060_priv *priv = snd_soc_component_get_drvdata(comp); in pcm3060_hw_params()
114 unsigned int rate; in pcm3060_hw_params()
115 unsigned int ratio; in pcm3060_hw_params()
116 unsigned int reg; in pcm3060_hw_params()
117 unsigned int val; in pcm3060_hw_params()
119 if (!priv->dai[dai->id].is_provider) { in pcm3060_hw_params()
126 dev_err(comp->dev, "rate is not configured\n"); in pcm3060_hw_params()
127 return -EINVAL; in pcm3060_hw_params()
130 ratio = priv->dai[dai->id].sclk_freq / rate; in pcm3060_hw_params()
152 dev_err(comp->dev, "unsupported ratio: %d\n", ratio); in pcm3060_hw_params()
153 return -EINVAL; in pcm3060_hw_params()
157 if (dai->id == PCM3060_DAI_ID_DAC) in pcm3060_hw_params()
162 regmap_update_bits(priv->regmap, reg, PCM3060_REG_MASK_MS, val); in pcm3060_hw_params()
182 .name = "pcm3060-dac",
194 .name = "pcm3060-adc",
209 static DECLARE_TLV_DB_SCALE(pcm3060_dapm_tlv, -10050, 50, 1);
263 static bool pcm3060_reg_writeable(struct device *dev, unsigned int reg) in pcm3060_reg_writeable()
268 static bool pcm3060_reg_readable(struct device *dev, unsigned int reg) in pcm3060_reg_readable()
273 static bool pcm3060_reg_volatile(struct device *dev, unsigned int reg) in pcm3060_reg_volatile()
310 priv->out_se = of_property_read_bool(np, "ti,out-single-ended"); in pcm3060_parse_dt()
313 int pcm3060_probe(struct device *dev) in pcm3060_probe()
315 int rc; in pcm3060_probe()
319 rc = regmap_update_bits(priv->regmap, PCM3060_REG64, in pcm3060_probe()
326 if (dev->of_node) in pcm3060_probe()
327 pcm3060_parse_dt(dev->of_node, priv); in pcm3060_probe()
329 if (priv->out_se) in pcm3060_probe()
330 regmap_update_bits(priv->regmap, PCM3060_REG64, in pcm3060_probe()