Lines Matching refs:ssi
53 struct hsi_controller *ssi = m->private; in ssi_debug_show() local
54 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_debug_show()
57 pm_runtime_get_sync(ssi->device.parent); in ssi_debug_show()
61 pm_runtime_put_sync(ssi->device.parent); in ssi_debug_show()
68 struct hsi_controller *ssi = m->private; in ssi_debug_gdd_show() local
69 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_debug_gdd_show()
74 pm_runtime_get_sync(ssi->device.parent); in ssi_debug_gdd_show()
115 pm_runtime_put_sync(ssi->device.parent); in ssi_debug_gdd_show()
144 static int __init ssi_debug_add_ctrl(struct hsi_controller *ssi) in ssi_debug_add_ctrl() argument
146 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_debug_add_ctrl()
150 omap_ssi->dir = debugfs_create_dir(dev_name(&ssi->device), NULL); in ssi_debug_add_ctrl()
154 debugfs_create_file("regs", S_IRUGO, omap_ssi->dir, ssi, in ssi_debug_add_ctrl()
160 debugfs_create_file("regs", S_IRUGO, dir, ssi, &ssi_gdd_regs_fops); in ssi_debug_add_ctrl()
169 static void ssi_debug_remove_ctrl(struct hsi_controller *ssi) in ssi_debug_remove_ctrl() argument
171 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_debug_remove_ctrl()
185 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_waketest() local
186 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_waketest()
190 pm_runtime_get_sync(ssi->device.parent); in ssi_waketest()
196 pm_runtime_put_sync(ssi->device.parent); in ssi_waketest()
201 static void ssi_gdd_complete(struct hsi_controller *ssi, unsigned int lch) in ssi_gdd_complete() argument
203 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_gdd_complete()
220 pm_runtime_put_sync(ssi->device.parent); in ssi_gdd_complete()
226 dma_unmap_sg(&ssi->device, msg->sgt.sgl, msg->sgt.nents, dir); in ssi_gdd_complete()
252 struct hsi_controller *ssi = (struct hsi_controller *)dev; in ssi_gdd_tasklet() local
253 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_gdd_tasklet()
258 pm_runtime_get_sync(ssi->device.parent); in ssi_gdd_tasklet()
263 ssi_gdd_complete(ssi, lch); in ssi_gdd_tasklet()
268 pm_runtime_put_sync(ssi->device.parent); in ssi_gdd_tasklet()
277 static irqreturn_t ssi_gdd_isr(int irq, void *ssi) in ssi_gdd_isr() argument
279 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_gdd_isr()
287 static unsigned long ssi_get_clk_rate(struct hsi_controller *ssi) in ssi_get_clk_rate() argument
289 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_get_clk_rate()
299 struct hsi_controller *ssi = platform_get_drvdata(pd); in ssi_get_iomem() local
302 base = devm_ioremap_resource(&ssi->device, mem); in ssi_get_iomem()
314 static int __init ssi_add_controller(struct hsi_controller *ssi, in ssi_add_controller() argument
320 omap_ssi = devm_kzalloc(&ssi->device, sizeof(*omap_ssi), GFP_KERNEL); in ssi_add_controller()
326 ssi->id = ida_simple_get(&platform_omap_ssi_ida, 0, 0, GFP_KERNEL); in ssi_add_controller()
327 if (ssi->id < 0) { in ssi_add_controller()
328 err = ssi->id; in ssi_add_controller()
332 ssi->owner = THIS_MODULE; in ssi_add_controller()
333 ssi->device.parent = &pd->dev; in ssi_add_controller()
334 dev_set_name(&ssi->device, "ssi%d", ssi->id); in ssi_add_controller()
335 hsi_controller_set_drvdata(ssi, omap_ssi); in ssi_add_controller()
336 omap_ssi->dev = &ssi->device; in ssi_add_controller()
350 (unsigned long)ssi); in ssi_add_controller()
351 err = devm_request_irq(&ssi->device, omap_ssi->gdd_irq, ssi_gdd_isr, in ssi_add_controller()
352 0, "gdd_mpu", ssi); in ssi_add_controller()
354 dev_err(&ssi->device, "Request GDD IRQ %d failed (%d)", in ssi_add_controller()
359 omap_ssi->port = devm_kzalloc(&ssi->device, in ssi_add_controller()
360 sizeof(struct omap_ssi_port *) * ssi->num_ports, GFP_KERNEL); in ssi_add_controller()
366 omap_ssi->fck = devm_clk_get(&ssi->device, "ssi_ssr_fck"); in ssi_add_controller()
379 err = hsi_register_controller(ssi); in ssi_add_controller()
387 ida_simple_remove(&platform_omap_ssi_ida, ssi->id); in ssi_add_controller()
391 static int __init ssi_hw_init(struct hsi_controller *ssi) in ssi_hw_init() argument
393 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_hw_init()
398 err = pm_runtime_get_sync(ssi->device.parent); in ssi_hw_init()
400 dev_err(&ssi->device, "runtime PM failed %d\n", err); in ssi_hw_init()
411 dev_err(&ssi->device, "SSI HW reset failed\n"); in ssi_hw_init()
412 pm_runtime_put_sync(ssi->device.parent); in ssi_hw_init()
418 omap_ssi->fck_rate = DIV_ROUND_CLOSEST(ssi_get_clk_rate(ssi), 1000); in ssi_hw_init()
419 dev_dbg(&ssi->device, "SSI fck rate %lu KHz\n", omap_ssi->fck_rate); in ssi_hw_init()
426 pm_runtime_put_sync(ssi->device.parent); in ssi_hw_init()
431 static void ssi_remove_controller(struct hsi_controller *ssi) in ssi_remove_controller() argument
433 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_remove_controller()
434 int id = ssi->id; in ssi_remove_controller()
436 hsi_unregister_controller(ssi); in ssi_remove_controller()
466 struct hsi_controller *ssi; in ssi_probe() local
477 ssi = hsi_alloc_controller(num_ports, GFP_KERNEL); in ssi_probe()
478 if (!ssi) { in ssi_probe()
483 platform_set_drvdata(pd, ssi); in ssi_probe()
485 err = ssi_add_controller(ssi, pd); in ssi_probe()
492 err = ssi_hw_init(ssi); in ssi_probe()
496 err = ssi_debug_add_ctrl(ssi); in ssi_probe()
514 ssi->id, num_ports); in ssi_probe()
519 ssi_remove_controller(ssi); in ssi_probe()
529 struct hsi_controller *ssi = platform_get_drvdata(pd); in ssi_remove() local
532 ssi_debug_remove_ctrl(ssi); in ssi_remove()
534 ssi_remove_controller(ssi); in ssi_remove()
548 struct hsi_controller *ssi = dev_get_drvdata(dev); in omap_ssi_runtime_suspend() local
549 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in omap_ssi_runtime_suspend()
555 omap_ssi->get_loss(ssi->device.parent); in omap_ssi_runtime_suspend()
562 struct hsi_controller *ssi = dev_get_drvdata(dev); in omap_ssi_runtime_resume() local
563 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in omap_ssi_runtime_resume()
568 omap_ssi->get_loss(ssi->device.parent))) in omap_ssi_runtime_resume()