Lines Matching refs:info
120 static inline unsigned ep93xx_ac97_read_reg(struct ep93xx_ac97_info *info, in ep93xx_ac97_read_reg() argument
123 return __raw_readl(info->regs + reg); in ep93xx_ac97_read_reg()
126 static inline void ep93xx_ac97_write_reg(struct ep93xx_ac97_info *info, in ep93xx_ac97_write_reg() argument
129 __raw_writel(val, info->regs + reg); in ep93xx_ac97_write_reg()
135 struct ep93xx_ac97_info *info = ep93xx_ac97_info; in ep93xx_ac97_read() local
138 mutex_lock(&info->lock); in ep93xx_ac97_read()
140 ep93xx_ac97_write_reg(info, AC97S1DATA, reg); in ep93xx_ac97_read()
141 ep93xx_ac97_write_reg(info, AC97IM, AC97_SLOT2RXVALID); in ep93xx_ac97_read()
142 if (!wait_for_completion_timeout(&info->done, AC97_TIMEOUT)) { in ep93xx_ac97_read()
143 dev_warn(info->dev, "timeout reading register %x\n", reg); in ep93xx_ac97_read()
144 mutex_unlock(&info->lock); in ep93xx_ac97_read()
147 val = (unsigned short)ep93xx_ac97_read_reg(info, AC97S2DATA); in ep93xx_ac97_read()
149 mutex_unlock(&info->lock); in ep93xx_ac97_read()
157 struct ep93xx_ac97_info *info = ep93xx_ac97_info; in ep93xx_ac97_write() local
159 mutex_lock(&info->lock); in ep93xx_ac97_write()
165 ep93xx_ac97_write_reg(info, AC97S2DATA, val); in ep93xx_ac97_write()
166 ep93xx_ac97_write_reg(info, AC97S1DATA, reg); in ep93xx_ac97_write()
168 ep93xx_ac97_write_reg(info, AC97IM, AC97_SLOT2TXCOMPLETE); in ep93xx_ac97_write()
169 if (!wait_for_completion_timeout(&info->done, AC97_TIMEOUT)) in ep93xx_ac97_write()
170 dev_warn(info->dev, "timeout writing register %x\n", reg); in ep93xx_ac97_write()
172 mutex_unlock(&info->lock); in ep93xx_ac97_write()
177 struct ep93xx_ac97_info *info = ep93xx_ac97_info; in ep93xx_ac97_warm_reset() local
179 mutex_lock(&info->lock); in ep93xx_ac97_warm_reset()
187 ep93xx_ac97_write_reg(info, AC97SYNC, AC97SYNC_TIMEDSYNC); in ep93xx_ac97_warm_reset()
188 ep93xx_ac97_write_reg(info, AC97IM, AC97_CODECREADY); in ep93xx_ac97_warm_reset()
189 if (!wait_for_completion_timeout(&info->done, AC97_TIMEOUT)) in ep93xx_ac97_warm_reset()
190 dev_warn(info->dev, "codec warm reset timeout\n"); in ep93xx_ac97_warm_reset()
192 mutex_unlock(&info->lock); in ep93xx_ac97_warm_reset()
197 struct ep93xx_ac97_info *info = ep93xx_ac97_info; in ep93xx_ac97_cold_reset() local
199 mutex_lock(&info->lock); in ep93xx_ac97_cold_reset()
205 ep93xx_ac97_write_reg(info, AC97GCR, 0); in ep93xx_ac97_cold_reset()
206 ep93xx_ac97_write_reg(info, AC97EOI, AC97EOI_CODECREADY | AC97EOI_WINT); in ep93xx_ac97_cold_reset()
207 ep93xx_ac97_write_reg(info, AC97GCR, AC97GCR_AC97IFE); in ep93xx_ac97_cold_reset()
212 ep93xx_ac97_write_reg(info, AC97RESET, AC97RESET_TIMEDRESET); in ep93xx_ac97_cold_reset()
213 ep93xx_ac97_write_reg(info, AC97IM, AC97_CODECREADY); in ep93xx_ac97_cold_reset()
214 if (!wait_for_completion_timeout(&info->done, AC97_TIMEOUT)) in ep93xx_ac97_cold_reset()
215 dev_warn(info->dev, "codec cold reset timeout\n"); in ep93xx_ac97_cold_reset()
223 mutex_unlock(&info->lock); in ep93xx_ac97_cold_reset()
228 struct ep93xx_ac97_info *info = dev_id; in ep93xx_ac97_interrupt() local
236 status = ep93xx_ac97_read_reg(info, AC97GIS); in ep93xx_ac97_interrupt()
237 mask = ep93xx_ac97_read_reg(info, AC97IM); in ep93xx_ac97_interrupt()
239 ep93xx_ac97_write_reg(info, AC97IM, mask); in ep93xx_ac97_interrupt()
241 complete(&info->done); in ep93xx_ac97_interrupt()
255 struct ep93xx_ac97_info *info = snd_soc_dai_get_drvdata(dai); in ep93xx_ac97_trigger() local
270 ep93xx_ac97_write_reg(info, AC97TXCR(1), v); in ep93xx_ac97_trigger()
279 ep93xx_ac97_write_reg(info, AC97RXCR(1), v); in ep93xx_ac97_trigger()
298 v = ep93xx_ac97_read_reg(info, AC97SR(1)); in ep93xx_ac97_trigger()
300 dev_warn(info->dev, "TX timeout\n"); in ep93xx_ac97_trigger()
306 ep93xx_ac97_write_reg(info, AC97TXCR(1), 0); in ep93xx_ac97_trigger()
309 ep93xx_ac97_write_reg(info, AC97RXCR(1), 0); in ep93xx_ac97_trigger()
314 dev_warn(info->dev, "unknown command %d\n", cmd); in ep93xx_ac97_trigger()
323 struct ep93xx_ac97_info *info = snd_soc_dai_get_drvdata(dai); in ep93xx_ac97_dai_probe() local
325 info->dma_params_tx.filter_data = &ep93xx_ac97_pcm_out; in ep93xx_ac97_dai_probe()
326 info->dma_params_rx.filter_data = &ep93xx_ac97_pcm_in; in ep93xx_ac97_dai_probe()
328 dai->playback_dma_data = &info->dma_params_tx; in ep93xx_ac97_dai_probe()
329 dai->capture_dma_data = &info->dma_params_rx; in ep93xx_ac97_dai_probe()
366 struct ep93xx_ac97_info *info; in ep93xx_ac97_probe() local
371 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); in ep93xx_ac97_probe()
372 if (!info) in ep93xx_ac97_probe()
376 info->regs = devm_ioremap_resource(&pdev->dev, res); in ep93xx_ac97_probe()
377 if (IS_ERR(info->regs)) in ep93xx_ac97_probe()
378 return PTR_ERR(info->regs); in ep93xx_ac97_probe()
385 IRQF_TRIGGER_HIGH, pdev->name, info); in ep93xx_ac97_probe()
389 dev_set_drvdata(&pdev->dev, info); in ep93xx_ac97_probe()
391 mutex_init(&info->lock); in ep93xx_ac97_probe()
392 init_completion(&info->done); in ep93xx_ac97_probe()
393 info->dev = &pdev->dev; in ep93xx_ac97_probe()
395 ep93xx_ac97_info = info; in ep93xx_ac97_probe()
396 platform_set_drvdata(pdev, info); in ep93xx_ac97_probe()
423 struct ep93xx_ac97_info *info = platform_get_drvdata(pdev); in ep93xx_ac97_remove() local
428 ep93xx_ac97_write_reg(info, AC97GCR, 0); in ep93xx_ac97_remove()