Lines Matching refs:omap_ssi
54 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_debug_show() local
55 void __iomem *sys = omap_ssi->sys; in ssi_debug_show()
69 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_debug_gdd_show() local
70 void __iomem *gdd = omap_ssi->gdd; in ssi_debug_gdd_show()
71 void __iomem *sys = omap_ssi->sys; in ssi_debug_gdd_show()
146 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_debug_add_ctrl() local
150 omap_ssi->dir = debugfs_create_dir(dev_name(&ssi->device), NULL); in ssi_debug_add_ctrl()
151 if (!omap_ssi->dir) in ssi_debug_add_ctrl()
154 debugfs_create_file("regs", S_IRUGO, omap_ssi->dir, ssi, in ssi_debug_add_ctrl()
157 dir = debugfs_create_dir("gdd", omap_ssi->dir); in ssi_debug_add_ctrl()
164 debugfs_remove_recursive(omap_ssi->dir); in ssi_debug_add_ctrl()
171 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_debug_remove_ctrl() local
173 debugfs_remove_recursive(omap_ssi->dir); in ssi_debug_remove_ctrl()
186 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_waketest() local
192 omap_ssi->sys + SSI_SET_WAKE_REG(port->num)); in ssi_waketest()
195 omap_ssi->sys + SSI_CLEAR_WAKE_REG(port->num)); in ssi_waketest()
203 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_gdd_complete() local
204 struct hsi_msg *msg = omap_ssi->gdd_trn[lch].msg; in ssi_gdd_complete()
211 spin_lock(&omap_ssi->lock); in ssi_gdd_complete()
213 val = readl(omap_ssi->sys + SSI_GDD_MPU_IRQ_ENABLE_REG); in ssi_gdd_complete()
215 writel_relaxed(val, omap_ssi->sys + SSI_GDD_MPU_IRQ_ENABLE_REG); in ssi_gdd_complete()
227 csr = readw(omap_ssi->gdd + SSI_GDD_CSR_REG(lch)); in ssi_gdd_complete()
228 omap_ssi->gdd_trn[lch].msg = NULL; /* release GDD lch */ in ssi_gdd_complete()
231 spin_unlock(&omap_ssi->lock); in ssi_gdd_complete()
242 val |= readl(omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_gdd_complete()
243 writel_relaxed(val, omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_gdd_complete()
253 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_gdd_tasklet() local
254 void __iomem *sys = omap_ssi->sys; in ssi_gdd_tasklet()
271 tasklet_hi_schedule(&omap_ssi->gdd_tasklet); in ssi_gdd_tasklet()
273 enable_irq(omap_ssi->gdd_irq); in ssi_gdd_tasklet()
279 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_gdd_isr() local
281 tasklet_hi_schedule(&omap_ssi->gdd_tasklet); in ssi_gdd_isr()
289 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_get_clk_rate() local
290 unsigned long rate = clk_get_rate(omap_ssi->fck); in ssi_get_clk_rate()
330 struct omap_ssi_controller *omap_ssi; in ssi_add_controller() local
333 omap_ssi = devm_kzalloc(&ssi->device, sizeof(*omap_ssi), GFP_KERNEL); in ssi_add_controller()
334 if (!omap_ssi) { in ssi_add_controller()
348 hsi_controller_set_drvdata(ssi, omap_ssi); in ssi_add_controller()
349 omap_ssi->dev = &ssi->device; in ssi_add_controller()
350 err = ssi_get_iomem(pd, "sys", &omap_ssi->sys, NULL); in ssi_add_controller()
353 err = ssi_get_iomem(pd, "gdd", &omap_ssi->gdd, NULL); in ssi_add_controller()
361 omap_ssi->gdd_irq = err; in ssi_add_controller()
362 tasklet_init(&omap_ssi->gdd_tasklet, ssi_gdd_tasklet, in ssi_add_controller()
364 err = devm_request_irq(&ssi->device, omap_ssi->gdd_irq, ssi_gdd_isr, in ssi_add_controller()
368 omap_ssi->gdd_irq, err); in ssi_add_controller()
372 omap_ssi->port = devm_kzalloc(&ssi->device, in ssi_add_controller()
374 if (!omap_ssi->port) { in ssi_add_controller()
379 omap_ssi->fck = devm_clk_get(&ssi->device, "ssi_ssr_fck"); in ssi_add_controller()
380 if (IS_ERR(omap_ssi->fck)) { in ssi_add_controller()
382 PTR_ERR(omap_ssi->fck)); in ssi_add_controller()
388 omap_ssi->get_loss = NULL; in ssi_add_controller()
390 omap_ssi->max_speed = UINT_MAX; in ssi_add_controller()
391 spin_lock_init(&omap_ssi->lock); in ssi_add_controller()
406 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_hw_init() local
417 writel_relaxed(SSI_SOFTRESET, omap_ssi->sys + SSI_SYSCONFIG_REG); in ssi_hw_init()
418 val = readl(omap_ssi->sys + SSI_SYSSTATUS_REG); in ssi_hw_init()
421 val = readl(omap_ssi->sys + SSI_SYSSTATUS_REG); in ssi_hw_init()
429 writel_relaxed(SSI_SWRESET, omap_ssi->gdd + SSI_GDD_GRST_REG); in ssi_hw_init()
431 omap_ssi->fck_rate = DIV_ROUND_CLOSEST(ssi_get_clk_rate(ssi), 1000); in ssi_hw_init()
432 dev_dbg(&ssi->device, "SSI fck rate %lu KHz\n", omap_ssi->fck_rate); in ssi_hw_init()
435 writel_relaxed(val, omap_ssi->sys + SSI_SYSCONFIG_REG); in ssi_hw_init()
436 omap_ssi->sysconfig = val; in ssi_hw_init()
437 writel_relaxed(SSI_CLK_AUTOGATING_ON, omap_ssi->sys + SSI_GDD_GCR_REG); in ssi_hw_init()
438 omap_ssi->gdd_gcr = SSI_CLK_AUTOGATING_ON; in ssi_hw_init()
446 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_remove_controller() local
448 tasklet_kill(&omap_ssi->gdd_tasklet); in ssi_remove_controller()
562 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in omap_ssi_runtime_suspend() local
566 if (omap_ssi->get_loss) in omap_ssi_runtime_suspend()
567 omap_ssi->loss_count = in omap_ssi_runtime_suspend()
568 omap_ssi->get_loss(ssi->device.parent); in omap_ssi_runtime_suspend()
576 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in omap_ssi_runtime_resume() local
580 if ((omap_ssi->get_loss) && (omap_ssi->loss_count == in omap_ssi_runtime_resume()
581 omap_ssi->get_loss(ssi->device.parent))) in omap_ssi_runtime_resume()
584 writel_relaxed(omap_ssi->gdd_gcr, omap_ssi->gdd + SSI_GDD_GCR_REG); in omap_ssi_runtime_resume()