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()
300 struct hsi_controller *ssi = platform_get_drvdata(pd); in ssi_get_iomem() local
307 ioarea = devm_request_mem_region(&ssi->device, mem->start, in ssi_get_iomem()
314 base = devm_ioremap(&ssi->device, mem->start, resource_size(mem)); in ssi_get_iomem()
327 static int __init ssi_add_controller(struct hsi_controller *ssi, in ssi_add_controller() argument
333 omap_ssi = devm_kzalloc(&ssi->device, sizeof(*omap_ssi), GFP_KERNEL); in ssi_add_controller()
339 ssi->id = ida_simple_get(&platform_omap_ssi_ida, 0, 0, GFP_KERNEL); in ssi_add_controller()
340 if (ssi->id < 0) { in ssi_add_controller()
341 err = ssi->id; in ssi_add_controller()
345 ssi->owner = THIS_MODULE; in ssi_add_controller()
346 ssi->device.parent = &pd->dev; in ssi_add_controller()
347 dev_set_name(&ssi->device, "ssi%d", ssi->id); 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()
363 (unsigned long)ssi); in ssi_add_controller()
364 err = devm_request_irq(&ssi->device, omap_ssi->gdd_irq, ssi_gdd_isr, in ssi_add_controller()
365 0, "gdd_mpu", ssi); in ssi_add_controller()
367 dev_err(&ssi->device, "Request GDD IRQ %d failed (%d)", in ssi_add_controller()
372 omap_ssi->port = devm_kzalloc(&ssi->device, in ssi_add_controller()
373 sizeof(struct omap_ssi_port *) * ssi->num_ports, GFP_KERNEL); in ssi_add_controller()
379 omap_ssi->fck = devm_clk_get(&ssi->device, "ssi_ssr_fck"); in ssi_add_controller()
392 err = hsi_register_controller(ssi); in ssi_add_controller()
400 ida_simple_remove(&platform_omap_ssi_ida, ssi->id); in ssi_add_controller()
404 static int __init ssi_hw_init(struct hsi_controller *ssi) in ssi_hw_init() argument
406 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_hw_init()
411 err = pm_runtime_get_sync(ssi->device.parent); in ssi_hw_init()
413 dev_err(&ssi->device, "runtime PM failed %d\n", err); in ssi_hw_init()
424 dev_err(&ssi->device, "SSI HW reset failed\n"); in ssi_hw_init()
425 pm_runtime_put_sync(ssi->device.parent); 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()
439 pm_runtime_put_sync(ssi->device.parent); in ssi_hw_init()
444 static void ssi_remove_controller(struct hsi_controller *ssi) in ssi_remove_controller() argument
446 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in ssi_remove_controller()
447 int id = ssi->id; in ssi_remove_controller()
449 hsi_unregister_controller(ssi); in ssi_remove_controller()
479 struct hsi_controller *ssi; in ssi_probe() local
490 ssi = hsi_alloc_controller(num_ports, GFP_KERNEL); in ssi_probe()
491 if (!ssi) { in ssi_probe()
496 platform_set_drvdata(pd, ssi); in ssi_probe()
498 err = ssi_add_controller(ssi, pd); in ssi_probe()
505 err = ssi_hw_init(ssi); in ssi_probe()
509 err = ssi_debug_add_ctrl(ssi); in ssi_probe()
527 ssi->id, num_ports); in ssi_probe()
532 ssi_remove_controller(ssi); in ssi_probe()
542 struct hsi_controller *ssi = platform_get_drvdata(pd); in ssi_remove() local
545 ssi_debug_remove_ctrl(ssi); in ssi_remove()
547 ssi_remove_controller(ssi); in ssi_remove()
561 struct hsi_controller *ssi = dev_get_drvdata(dev); in omap_ssi_runtime_suspend() local
562 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in omap_ssi_runtime_suspend()
568 omap_ssi->get_loss(ssi->device.parent); in omap_ssi_runtime_suspend()
575 struct hsi_controller *ssi = dev_get_drvdata(dev); in omap_ssi_runtime_resume() local
576 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); in omap_ssi_runtime_resume()
581 omap_ssi->get_loss(ssi->device.parent))) in omap_ssi_runtime_resume()