Lines Matching full:controller
77 * Start DMA controller
79 * Initialize the DMA controller as necessary.
116 c->controller = cppi; in cppi_pool_init()
135 struct cppi *cppi = c->controller; in cppi_pool_free()
140 c->controller = NULL; in cppi_pool_free()
154 struct cppi *controller; in cppi_controller_start() local
158 controller = container_of(c, struct cppi, controller); in cppi_controller_start()
160 /* do whatever is necessary to start controller */ in cppi_controller_start()
161 for (i = 0; i < ARRAY_SIZE(controller->tx); i++) { in cppi_controller_start()
162 controller->tx[i].transmit = true; in cppi_controller_start()
163 controller->tx[i].index = i; in cppi_controller_start()
165 for (i = 0; i < ARRAY_SIZE(controller->rx); i++) { in cppi_controller_start()
166 controller->rx[i].transmit = false; in cppi_controller_start()
167 controller->rx[i].index = i; in cppi_controller_start()
171 for (i = 0; i < ARRAY_SIZE(controller->tx); i++) in cppi_controller_start()
172 cppi_pool_init(controller, controller->tx + i); in cppi_controller_start()
173 for (i = 0; i < ARRAY_SIZE(controller->rx); i++) in cppi_controller_start()
174 cppi_pool_init(controller, controller->rx + i); in cppi_controller_start()
176 tibase = controller->tibase; in cppi_controller_start()
177 INIT_LIST_HEAD(&controller->tx_complete); in cppi_controller_start()
180 for (i = 0; i < ARRAY_SIZE(controller->tx); i++) { in cppi_controller_start()
181 struct cppi_channel *tx_ch = controller->tx + i; in cppi_controller_start()
190 for (i = 0; i < ARRAY_SIZE(controller->rx); i++) { in cppi_controller_start()
191 struct cppi_channel *rx_ch = controller->rx + i; in cppi_controller_start()
219 * Stop DMA controller
221 * De-Init the DMA controller as necessary.
226 struct cppi *controller; in cppi_controller_stop() local
231 controller = container_of(c, struct cppi, controller); in cppi_controller_stop()
232 musb = controller->musb; in cppi_controller_stop()
234 tibase = controller->tibase; in cppi_controller_stop()
241 dev_dbg(musb->controller, "Tearing down RX and TX Channels\n"); in cppi_controller_stop()
242 for (i = 0; i < ARRAY_SIZE(controller->tx); i++) { in cppi_controller_stop()
244 controller->tx[i].last_processed = NULL; in cppi_controller_stop()
245 cppi_pool_free(controller->tx + i); in cppi_controller_stop()
247 for (i = 0; i < ARRAY_SIZE(controller->rx); i++) in cppi_controller_stop()
248 cppi_pool_free(controller->rx + i); in cppi_controller_stop()
290 struct cppi *controller; in cppi_channel_allocate() local
296 controller = container_of(c, struct cppi, controller); in cppi_channel_allocate()
297 tibase = controller->tibase; in cppi_channel_allocate()
298 musb = controller->musb; in cppi_channel_allocate()
307 if (index >= ARRAY_SIZE(controller->tx)) { in cppi_channel_allocate()
308 dev_dbg(musb->controller, "no %cX%d CPPI channel\n", 'T', index); in cppi_channel_allocate()
311 cppi_ch = controller->tx + index; in cppi_channel_allocate()
313 if (index >= ARRAY_SIZE(controller->rx)) { in cppi_channel_allocate()
314 dev_dbg(musb->controller, "no %cX%d CPPI channel\n", 'R', index); in cppi_channel_allocate()
317 cppi_ch = controller->rx + index; in cppi_channel_allocate()
325 dev_dbg(musb->controller, "re-allocating DMA%d %cX channel %p\n", in cppi_channel_allocate()
331 dev_dbg(musb->controller, "Allocate CPPI%d %cX\n", index, transmit ? 'T' : 'R'); in cppi_channel_allocate()
344 tibase = c->controller->tibase; in cppi_channel_release()
346 dev_dbg(c->controller->musb->controller, in cppi_channel_release()
356 /* Context: controller irqlocked */
360 void __iomem *base = c->controller->mregs; in cppi_dump_rx()
365 dev_dbg(c->controller->musb->controller, in cppi_dump_rx()
371 musb_readl(c->controller->tibase, in cppi_dump_rx()
387 /* Context: controller irqlocked */
391 void __iomem *base = c->controller->mregs; in cppi_dump_tx()
396 dev_dbg(c->controller->musb->controller, in cppi_dump_tx()
416 /* Context: controller irqlocked */
607 dev_dbg(musb->controller, "TX DMA%d, pktSz %d %s bds %d dma 0x%llx len %u\n", in cppi_next_tx_segment()
664 dev_dbg(musb->controller, "TXBD %p: nxt %08x buf %08x len %04x opt %08x\n", in cppi_next_tx_segment()
698 * out to end-of-buffer. Standard PCI host controller DMA descriptors
761 * @musb: the controller
765 * Context: controller irqlocked
829 dev_dbg(musb->controller, "RX DMA%d seg, maxp %d %s bds %d (cnt %d) " in cppi_next_rx_segment()
946 dev_dbg(musb->controller, "bufcnt%d underrun - %d (for %d)\n", in cppi_next_rx_segment()
965 * Context: controller irqlocked
972 struct cppi *controller; in cppi_channel_program() local
976 controller = cppi_ch->controller; in cppi_channel_program()
977 musb = controller->musb; in cppi_channel_program()
995 dev_dbg(musb->controller, "%cX DMA%d not allocated!\n", in cppi_channel_program()
1051 dev_dbg(musb->controller, "C/RXBD %llx: nxt %08x buf %08x " in cppi_rx_scan()
1073 dev_dbg(musb->controller, "rx short %d/%d (%d)\n", in cppi_rx_scan()
1123 dev_dbg(musb->controller, "list%d %p/%p, last %llx%s, csr %04x\n", in cppi_rx_scan()
1171 cppi = container_of(musb->dma_controller, struct cppi, controller); in cppi_interrupt()
1186 dev_dbg(musb->controller, "CPPI IRQ Tx%x Rx%x\n", tx, rx); in cppi_interrupt()
1214 dev_dbg(musb->controller, "null BD\n"); in cppi_interrupt()
1229 dev_dbg(musb->controller, "C/TXBD %p n %x b %x off %x opt %x\n", in cppi_interrupt()
1317 /* Instantiate a software object representing a DMA controller. */
1321 struct cppi *controller; in dma_controller_create() local
1322 struct device *dev = musb->controller; in dma_controller_create()
1326 controller = kzalloc(sizeof *controller, GFP_KERNEL); in dma_controller_create()
1327 if (!controller) in dma_controller_create()
1330 controller->mregs = mregs; in dma_controller_create()
1331 controller->tibase = mregs - DAVINCI_BASE_OFFSET; in dma_controller_create()
1333 controller->musb = musb; in dma_controller_create()
1334 controller->controller.start = cppi_controller_start; in dma_controller_create()
1335 controller->controller.stop = cppi_controller_stop; in dma_controller_create()
1336 controller->controller.channel_alloc = cppi_channel_allocate; in dma_controller_create()
1337 controller->controller.channel_release = cppi_channel_release; in dma_controller_create()
1338 controller->controller.channel_program = cppi_channel_program; in dma_controller_create()
1339 controller->controller.channel_abort = cppi_channel_abort; in dma_controller_create()
1346 controller->pool = dma_pool_create("cppi", in dma_controller_create()
1347 controller->musb->controller, in dma_controller_create()
1350 if (!controller->pool) { in dma_controller_create()
1351 kfree(controller); in dma_controller_create()
1358 dma_controller_destroy(&controller->controller); in dma_controller_create()
1361 controller->irq = irq; in dma_controller_create()
1364 return &controller->controller; in dma_controller_create()
1368 * Destroy a previously-instantiated DMA controller.
1374 cppi = container_of(c, struct cppi, controller); in dma_controller_destroy()
1379 /* assert: caller stopped the controller first */ in dma_controller_destroy()
1386 * Context: controller irqlocked, endpoint selected
1391 struct cppi *controller; in cppi_channel_abort() local
1400 controller = cppi_ch->controller; in cppi_channel_abort()
1420 mbase = controller->mregs; in cppi_channel_abort()
1421 tibase = controller->tibase; in cppi_channel_abort()
1435 /* REVISIT put timeouts on these controller handshakes */ in cppi_channel_abort()
1488 if (is_host_active(cppi_ch->controller->musb)) { in cppi_channel_abort()
1497 if (is_host_active(cppi_ch->controller->musb)) { in cppi_channel_abort()
1519 cppi_rx_scan(controller, cppi_ch->index); in cppi_channel_abort()
1526 * rely on the controller restarting from state ram, with in cppi_channel_abort()