Lines Matching full:i2s
3 // Common functions for loongson I2S controller driver
34 struct loongson_i2s *i2s = snd_soc_dai_get_drvdata(dai); in loongson_i2s_trigger() local
44 regmap_update_bits(i2s->regmap, LS_I2S_CTRL, mask, mask); in loongson_i2s_trigger()
51 regmap_update_bits(i2s->regmap, LS_I2S_CTRL, mask, 0); in loongson_i2s_trigger()
64 struct loongson_i2s *i2s = snd_soc_dai_get_drvdata(dai); in loongson_i2s_hw_params() local
65 u32 clk_rate = i2s->clk_rate; in loongson_i2s_hw_params()
66 u32 sysclk = i2s->sysclk; in loongson_i2s_hw_params()
74 switch (i2s->rev_id) { in loongson_i2s_hw_params()
85 regmap_write(i2s->regmap, LS_I2S_CFG, val); in loongson_i2s_hw_params()
95 regmap_read(i2s->regmap, LS_I2S_CFG, &val); in loongson_i2s_hw_params()
102 regmap_write(i2s->regmap, LS_I2S_CFG, val); in loongson_i2s_hw_params()
105 regmap_write(i2s->regmap, LS_I2S_CFG1, val); in loongson_i2s_hw_params()
109 dev_err(i2s->dev, "I2S revision invalid\n"); in loongson_i2s_hw_params()
119 struct loongson_i2s *i2s = snd_soc_dai_get_drvdata(dai); in loongson_i2s_set_dai_sysclk() local
121 i2s->sysclk = freq; in loongson_i2s_set_dai_sysclk()
126 static int loongson_i2s_enable_mclk(struct loongson_i2s *i2s) in loongson_i2s_enable_mclk() argument
130 if (i2s->rev_id == 0) in loongson_i2s_enable_mclk()
133 regmap_update_bits(i2s->regmap, LS_I2S_CTRL, in loongson_i2s_enable_mclk()
136 return regmap_read_poll_timeout_atomic(i2s->regmap, in loongson_i2s_enable_mclk()
143 static int loongson_i2s_enable_bclk(struct loongson_i2s *i2s) in loongson_i2s_enable_bclk() argument
147 if (i2s->rev_id == 0) in loongson_i2s_enable_bclk()
150 return regmap_read_poll_timeout_atomic(i2s->regmap, in loongson_i2s_enable_bclk()
159 struct loongson_i2s *i2s = snd_soc_dai_get_drvdata(dai); in loongson_i2s_set_fmt() local
166 regmap_update_bits(i2s->regmap, LS_I2S_CTRL, I2S_CTRL_MSB, in loongson_i2s_set_fmt()
179 regmap_update_bits(i2s->regmap, LS_I2S_CTRL, I2S_CTRL_MASTER, in loongson_i2s_set_fmt()
181 ret = loongson_i2s_enable_bclk(i2s); in loongson_i2s_set_fmt()
187 ret = loongson_i2s_enable_mclk(i2s); in loongson_i2s_set_fmt()
193 ret = loongson_i2s_enable_mclk(i2s); in loongson_i2s_set_fmt()
198 regmap_update_bits(i2s->regmap, LS_I2S_CTRL, I2S_CTRL_MASTER, in loongson_i2s_set_fmt()
201 ret = loongson_i2s_enable_bclk(i2s); in loongson_i2s_set_fmt()
214 struct loongson_i2s *i2s = dev_get_drvdata(cpu_dai->dev); in loongson_i2s_dai_probe() local
216 snd_soc_dai_init_dma_data(cpu_dai, &i2s->playback_dma_data, in loongson_i2s_dai_probe()
217 &i2s->capture_dma_data); in loongson_i2s_dai_probe()
218 snd_soc_dai_set_drvdata(cpu_dai, i2s); in loongson_i2s_dai_probe()
232 .name = "loongson-i2s",
254 struct loongson_i2s *i2s = dev_get_drvdata(dev); in i2s_suspend() local
256 regcache_cache_only(i2s->regmap, true); in i2s_suspend()
263 struct loongson_i2s *i2s = dev_get_drvdata(dev); in i2s_resume() local
265 regcache_cache_only(i2s->regmap, false); in i2s_resume()
266 regcache_mark_dirty(i2s->regmap); in i2s_resume()
267 return regcache_sync(i2s->regmap); in i2s_resume()
276 MODULE_DESCRIPTION("Common functions for loongson I2S controller driver");