• Home
  • Raw
  • Download

Lines Matching refs:i2s

116 static inline uint32_t jz4740_i2s_read(const struct jz4740_i2s *i2s,  in jz4740_i2s_read()  argument
119 return readl(i2s->base + reg); in jz4740_i2s_read()
122 static inline void jz4740_i2s_write(const struct jz4740_i2s *i2s, in jz4740_i2s_write() argument
125 writel(value, i2s->base + reg); in jz4740_i2s_write()
128 static inline void jz4740_i2s_set_bits(const struct jz4740_i2s *i2s, in jz4740_i2s_set_bits() argument
131 uint32_t value = jz4740_i2s_read(i2s, reg); in jz4740_i2s_set_bits()
133 jz4740_i2s_write(i2s, reg, value); in jz4740_i2s_set_bits()
139 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_startup() local
148 if (!i2s->soc_info->shared_fifo_flush) { in jz4740_i2s_startup()
150 jz4740_i2s_set_bits(i2s, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_TFLUSH); in jz4740_i2s_startup()
152 jz4740_i2s_set_bits(i2s, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_RFLUSH); in jz4740_i2s_startup()
164 if (i2s->soc_info->shared_fifo_flush) in jz4740_i2s_startup()
165 jz4740_i2s_set_bits(i2s, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_TFLUSH); in jz4740_i2s_startup()
167 ret = clk_prepare_enable(i2s->clk_i2s); in jz4740_i2s_startup()
171 conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF); in jz4740_i2s_startup()
173 jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf); in jz4740_i2s_startup()
181 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_shutdown() local
187 conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF); in jz4740_i2s_shutdown()
189 jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf); in jz4740_i2s_shutdown()
191 clk_disable_unprepare(i2s->clk_i2s); in jz4740_i2s_shutdown()
197 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_trigger() local
207 ctrl = jz4740_i2s_read(i2s, JZ_REG_AIC_CTRL); in jz4740_i2s_trigger()
224 jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl); in jz4740_i2s_trigger()
231 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_set_fmt() local
236 conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF); in jz4740_i2s_set_fmt()
274 jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf); in jz4740_i2s_set_fmt()
275 jz4740_i2s_write(i2s, JZ_REG_AIC_I2S_FMT, format); in jz4740_i2s_set_fmt()
283 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_hw_params() local
288 ctrl = jz4740_i2s_read(i2s, JZ_REG_AIC_CTRL); in jz4740_i2s_hw_params()
290 div_reg = jz4740_i2s_read(i2s, JZ_REG_AIC_CLK_DIV); in jz4740_i2s_hw_params()
291 div = clk_get_rate(i2s->clk_i2s) / (64 * params_rate(params)); in jz4740_i2s_hw_params()
318 if (i2s->soc_info->version >= JZ_I2S_JZ4770) { in jz4740_i2s_hw_params()
327 jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl); in jz4740_i2s_hw_params()
328 jz4740_i2s_write(i2s, JZ_REG_AIC_CLK_DIV, div_reg); in jz4740_i2s_hw_params()
336 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_set_sysclk() local
345 clk_set_parent(i2s->clk_i2s, parent); in jz4740_i2s_set_sysclk()
351 clk_set_parent(i2s->clk_i2s, parent); in jz4740_i2s_set_sysclk()
352 ret = clk_set_rate(i2s->clk_i2s, freq); in jz4740_i2s_set_sysclk()
364 struct jz4740_i2s *i2s = snd_soc_component_get_drvdata(component); in jz4740_i2s_suspend() local
368 conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF); in jz4740_i2s_suspend()
370 jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf); in jz4740_i2s_suspend()
372 clk_disable_unprepare(i2s->clk_i2s); in jz4740_i2s_suspend()
375 clk_disable_unprepare(i2s->clk_aic); in jz4740_i2s_suspend()
382 struct jz4740_i2s *i2s = snd_soc_component_get_drvdata(component); in jz4740_i2s_resume() local
386 ret = clk_prepare_enable(i2s->clk_aic); in jz4740_i2s_resume()
391 ret = clk_prepare_enable(i2s->clk_i2s); in jz4740_i2s_resume()
393 clk_disable_unprepare(i2s->clk_aic); in jz4740_i2s_resume()
397 conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF); in jz4740_i2s_resume()
399 jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf); in jz4740_i2s_resume()
405 static void jz4740_i2c_init_pcm_config(struct jz4740_i2s *i2s) in jz4740_i2c_init_pcm_config() argument
410 dma_data = &i2s->playback_dma_data; in jz4740_i2c_init_pcm_config()
413 dma_data->addr = i2s->phys_base + JZ_REG_AIC_FIFO; in jz4740_i2c_init_pcm_config()
416 dma_data = &i2s->capture_dma_data; in jz4740_i2c_init_pcm_config()
419 dma_data->addr = i2s->phys_base + JZ_REG_AIC_FIFO; in jz4740_i2c_init_pcm_config()
424 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_dai_probe() local
428 ret = clk_prepare_enable(i2s->clk_aic); in jz4740_i2s_dai_probe()
432 jz4740_i2c_init_pcm_config(i2s); in jz4740_i2s_dai_probe()
433 snd_soc_dai_init_dma_data(dai, &i2s->playback_dma_data, in jz4740_i2s_dai_probe()
434 &i2s->capture_dma_data); in jz4740_i2s_dai_probe()
436 if (i2s->soc_info->version >= JZ_I2S_JZ4760) { in jz4740_i2s_dai_probe()
450 jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, JZ_AIC_CONF_RESET); in jz4740_i2s_dai_probe()
451 jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf); in jz4740_i2s_dai_probe()
458 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_dai_remove() local
460 clk_disable_unprepare(i2s->clk_aic); in jz4740_i2s_dai_remove()
552 struct jz4740_i2s *i2s; in jz4740_i2s_dev_probe() local
556 i2s = devm_kzalloc(dev, sizeof(*i2s), GFP_KERNEL); in jz4740_i2s_dev_probe()
557 if (!i2s) in jz4740_i2s_dev_probe()
560 i2s->soc_info = device_get_match_data(dev); in jz4740_i2s_dev_probe()
563 i2s->base = devm_ioremap_resource(dev, mem); in jz4740_i2s_dev_probe()
564 if (IS_ERR(i2s->base)) in jz4740_i2s_dev_probe()
565 return PTR_ERR(i2s->base); in jz4740_i2s_dev_probe()
567 i2s->phys_base = mem->start; in jz4740_i2s_dev_probe()
569 i2s->clk_aic = devm_clk_get(dev, "aic"); in jz4740_i2s_dev_probe()
570 if (IS_ERR(i2s->clk_aic)) in jz4740_i2s_dev_probe()
571 return PTR_ERR(i2s->clk_aic); in jz4740_i2s_dev_probe()
573 i2s->clk_i2s = devm_clk_get(dev, "i2s"); in jz4740_i2s_dev_probe()
574 if (IS_ERR(i2s->clk_i2s)) in jz4740_i2s_dev_probe()
575 return PTR_ERR(i2s->clk_i2s); in jz4740_i2s_dev_probe()
577 platform_set_drvdata(pdev, i2s); in jz4740_i2s_dev_probe()
580 i2s->soc_info->dai, 1); in jz4740_i2s_dev_probe()