Lines Matching refs:port

43 static inline unsigned int ssi_wakein(struct hsi_port *port)  in ssi_wakein()  argument
45 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_wakein()
50 static void ssi_debug_remove_port(struct hsi_port *port) in ssi_debug_remove_port() argument
52 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_debug_remove_port()
59 struct hsi_port *port = m->private; in ssi_debug_port_show() local
60 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_debug_port_show()
61 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_debug_port_show()
68 seq_printf(m, "CAWAKE\t\t: %d\n", ssi_wakein(port)); in ssi_debug_port_show()
70 readl(base + SSI_WAKE_REG(port->num))); in ssi_debug_port_show()
72 readl(base + SSI_MPU_ENABLE_REG(port->num, 0))); in ssi_debug_port_show()
74 readl(base + SSI_MPU_STATUS_REG(port->num, 0))); in ssi_debug_port_show()
146 struct hsi_port *port = data; in ssi_div_get() local
147 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_div_get()
158 struct hsi_port *port = data; in ssi_div_set() local
159 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_div_set()
177 struct hsi_port *port = to_hsi_port(omap_port->dev); in ssi_debug_add_port() local
183 debugfs_create_file("regs", S_IRUGO, dir, port, &ssi_port_regs_fops); in ssi_debug_add_port()
187 debugfs_create_file("divisor", S_IRUGO | S_IWUSR, dir, port, in ssi_debug_add_port()
197 struct hsi_port *port = hsi_get_port(msg->cl); in ssi_claim_lch() local
198 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_claim_lch()
214 struct hsi_port *port = hsi_get_port(msg->cl); in ssi_start_dma() local
215 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_start_dma()
216 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_start_dma()
236 ccr = msg->channel + 0x10 + (port->num * 8); /* Sync */ in ssi_start_dma()
252 ccr = (msg->channel + 1 + (port->num * 8)) & 0xf; /* Sync */ in ssi_start_dma()
285 struct hsi_port *port = hsi_get_port(msg->cl); in ssi_start_pio() local
286 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_start_pio()
287 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_start_pio()
299 dev_dbg(&port->device, "Single %s transfer\n", in ssi_start_pio()
301 val |= readl(omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_start_pio()
302 writel(val, omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_start_pio()
330 struct hsi_port *port = hsi_get_port(msg->cl); in ssi_async_break() local
331 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_async_break()
332 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_async_break()
353 SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_async_break()
355 omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_async_break()
368 struct hsi_port *port = hsi_get_port(msg->cl); in ssi_async() local
369 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_async()
397 dev_dbg(&port->device, "msg status %d ttype %d ch %d\n", in ssi_async()
441 struct hsi_port *port = to_hsi_port(cl->device.parent); in ssi_setup() local
442 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_setup()
443 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_setup()
505 struct hsi_port *port = hsi_get_port(cl); in ssi_flush() local
506 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_flush()
507 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_flush()
520 if (!msg || (port != hsi_get_port(msg->cl))) in ssi_flush()
539 writel_relaxed(0, omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_flush()
541 omap_ssi->sys + SSI_MPU_STATUS_REG(port->num, 0)); in ssi_flush()
561 struct hsi_port *port = hsi_get_port(cl); in ssi_start_tx() local
562 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_start_tx()
563 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_start_tx()
566 dev_dbg(&port->device, "Wake out high %d\n", omap_port->wk_refcount); in ssi_start_tx()
574 writel(SSI_WAKE(0), omap_ssi->sys + SSI_SET_WAKE_REG(port->num)); in ssi_start_tx()
582 struct hsi_port *port = hsi_get_port(cl); in ssi_stop_tx() local
583 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_stop_tx()
584 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_stop_tx()
587 dev_dbg(&port->device, "Wake out low %d\n", omap_port->wk_refcount); in ssi_stop_tx()
595 writel(SSI_WAKE(0), omap_ssi->sys + SSI_CLEAR_WAKE_REG(port->num)); in ssi_stop_tx()
626 struct hsi_port *port = hsi_get_port(cl); in ssi_cleanup_queues() local
627 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_cleanup_queues()
628 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_cleanup_queues()
677 tmp = readl(omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_cleanup_queues()
679 writel_relaxed(tmp, omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_cleanup_queues()
681 SSI_MPU_STATUS_REG(port->num, 0)); in ssi_cleanup_queues()
687 struct hsi_port *port = hsi_get_port(cl); in ssi_cleanup_gdd() local
688 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_cleanup_gdd()
726 struct hsi_port *port = hsi_get_port(cl); in ssi_release() local
727 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_release()
728 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_release()
738 if (port->claimed <= 1) { in ssi_release()
762 static void ssi_error(struct hsi_port *port) in ssi_error() argument
764 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_error()
765 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_error()
775 dev_err(&port->device, "SSI error: 0x%02x\n", err); in ssi_error()
777 dev_dbg(&port->device, "spurious SSI error ignored!\n"); in ssi_error()
796 tmp = readl(omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_error()
798 writel_relaxed(tmp, omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_error()
802 omap_ssi->sys + SSI_MPU_STATUS_REG(port->num, 0)); in ssi_error()
820 static void ssi_break_complete(struct hsi_port *port) in ssi_break_complete() argument
822 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_break_complete()
823 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_break_complete()
829 dev_dbg(&port->device, "HWBREAK received\n"); in ssi_break_complete()
832 val = readl(omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_break_complete()
834 writel_relaxed(val, omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_break_complete()
837 omap_ssi->sys + SSI_MPU_STATUS_REG(port->num, 0)); in ssi_break_complete()
850 static void ssi_pio_complete(struct hsi_port *port, struct list_head *queue) in ssi_pio_complete() argument
852 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_pio_complete()
854 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_pio_complete()
878 dev_dbg(&port->device, "ch %d ttype %d 0x%08x\n", msg->channel, in ssi_pio_complete()
891 SSI_MPU_STATUS_REG(port->num, 0)); in ssi_pio_complete()
899 reg = readl(omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_pio_complete()
905 writel_relaxed(reg, omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_pio_complete()
906 writel_relaxed(val, omap_ssi->sys + SSI_MPU_STATUS_REG(port->num, 0)); in ssi_pio_complete()
915 struct hsi_port *port = (struct hsi_port *)ssi_port; in ssi_pio_tasklet() local
916 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_pio_tasklet()
917 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_pio_tasklet()
924 status_reg = readl(sys + SSI_MPU_STATUS_REG(port->num, 0)); in ssi_pio_tasklet()
925 status_reg &= readl(sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_pio_tasklet()
929 ssi_pio_complete(port, &omap_port->txqueue[ch]); in ssi_pio_tasklet()
931 ssi_pio_complete(port, &omap_port->rxqueue[ch]); in ssi_pio_tasklet()
934 ssi_break_complete(port); in ssi_pio_tasklet()
936 ssi_error(port); in ssi_pio_tasklet()
938 status_reg = readl(sys + SSI_MPU_STATUS_REG(port->num, 0)); in ssi_pio_tasklet()
939 status_reg &= readl(sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_pio_tasklet()
948 static irqreturn_t ssi_pio_isr(int irq, void *port) in ssi_pio_isr() argument
950 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_pio_isr()
960 struct hsi_port *port = (struct hsi_port *)ssi_port; in ssi_wake_tasklet() local
961 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_wake_tasklet()
962 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_wake_tasklet()
965 if (ssi_wakein(port)) { in ssi_wake_tasklet()
982 omap_ssi->sys + SSI_SET_WAKE_REG(port->num)); in ssi_wake_tasklet()
984 hsi_event(port, HSI_EVENT_START_RX); in ssi_wake_tasklet()
989 omap_ssi->sys + SSI_CLEAR_WAKE_REG(port->num)); in ssi_wake_tasklet()
991 hsi_event(port, HSI_EVENT_STOP_RX); in ssi_wake_tasklet()
1010 static int __init ssi_port_irq(struct hsi_port *port, in ssi_port_irq() argument
1013 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_port_irq()
1018 dev_err(&port->device, "Port IRQ resource missing\n"); in ssi_port_irq()
1023 (unsigned long)port); in ssi_port_irq()
1024 err = devm_request_irq(&port->device, omap_port->irq, ssi_pio_isr, in ssi_port_irq()
1025 0, "mpu_irq0", port); in ssi_port_irq()
1027 dev_err(&port->device, "Request IRQ %d failed (%d)\n", in ssi_port_irq()
1032 static int __init ssi_wake_irq(struct hsi_port *port, in ssi_wake_irq() argument
1035 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_wake_irq()
1048 (unsigned long)port); in ssi_wake_irq()
1049 err = devm_request_irq(&port->device, cawake_irq, ssi_wake_isr, in ssi_wake_irq()
1051 "cawake", port); in ssi_wake_irq()
1053 dev_err(&port->device, "Request Wake in IRQ %d failed %d\n", in ssi_wake_irq()
1057 dev_err(&port->device, "Enable wake on the wakeline in irq %d failed %d\n", in ssi_wake_irq()
1077 struct hsi_port *port = platform_get_drvdata(pd); in ssi_port_get_iomem() local
1087 ioarea = devm_request_mem_region(&port->device, mem->start, in ssi_port_get_iomem()
1094 base = devm_ioremap(&port->device, mem->start, resource_size(mem)); in ssi_port_get_iomem()
1110 struct hsi_port *port; in ssi_port_probe() local
1125 if (!ssi->port || !omap_ssi->port) { in ssi_port_probe()
1132 for (port_id = 0; port_id < ssi->num_ports && omap_ssi->port[port_id]; in ssi_port_probe()
1142 port = ssi->port[port_id]; in ssi_port_probe()
1158 err = devm_gpio_request_one(&port->device, cawake_gpio, GPIOF_DIR_IN, in ssi_port_probe()
1167 omap_port = devm_kzalloc(&port->device, sizeof(*omap_port), GFP_KERNEL); in ssi_port_probe()
1177 port->async = ssi_async; in ssi_port_probe()
1178 port->setup = ssi_setup; in ssi_port_probe()
1179 port->flush = ssi_flush; in ssi_port_probe()
1180 port->start_tx = ssi_start_tx; in ssi_port_probe()
1181 port->stop_tx = ssi_stop_tx; in ssi_port_probe()
1182 port->release = ssi_release; in ssi_port_probe()
1183 hsi_port_set_drvdata(port, omap_port); in ssi_port_probe()
1184 omap_ssi->port[port_id] = omap_port; in ssi_port_probe()
1186 platform_set_drvdata(pd, port); in ssi_port_probe()
1197 err = ssi_port_irq(port, pd); in ssi_port_probe()
1200 err = ssi_wake_irq(port, pd); in ssi_port_probe()
1207 omap_port->dev = &port->device; in ssi_port_probe()
1220 hsi_add_clients_from_dt(port, np); in ssi_port_probe()
1233 struct hsi_port *port = platform_get_drvdata(pd); in ssi_port_remove() local
1234 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in ssi_port_remove()
1235 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_port_remove()
1239 ssi_debug_remove_port(port); in ssi_port_remove()
1242 hsi_port_unregister_clients(port); in ssi_port_remove()
1247 port->async = hsi_dummy_msg; in ssi_port_remove()
1248 port->setup = hsi_dummy_cl; in ssi_port_remove()
1249 port->flush = hsi_dummy_cl; in ssi_port_remove()
1250 port->start_tx = hsi_dummy_cl; in ssi_port_remove()
1251 port->stop_tx = hsi_dummy_cl; in ssi_port_remove()
1252 port->release = hsi_dummy_cl; in ssi_port_remove()
1254 omap_ssi->port[omap_port->port_id] = NULL; in ssi_port_remove()
1265 struct hsi_port *port = to_hsi_port(omap_port->dev); in ssi_save_port_ctx() local
1266 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_save_port_ctx()
1270 SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_save_port_ctx()
1277 struct hsi_port *port = to_hsi_port(omap_port->dev); in ssi_restore_port_ctx() local
1278 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in ssi_restore_port_ctx()
1283 omap_ssi->sys + SSI_MPU_ENABLE_REG(port->num, 0)); in ssi_restore_port_ctx()
1324 struct hsi_port *port = dev_get_drvdata(dev); in omap_ssi_port_runtime_suspend() local
1325 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in omap_ssi_port_runtime_suspend()
1326 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in omap_ssi_port_runtime_suspend()
1342 struct hsi_port *port = dev_get_drvdata(dev); in omap_ssi_port_runtime_resume() local
1343 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); in omap_ssi_port_runtime_resume()
1344 struct hsi_controller *ssi = to_hsi_controller(port->device.parent); in omap_ssi_port_runtime_resume()