Lines Matching refs:controller

80  *  Start DMA controller
82 * Initialize the DMA controller as necessary.
119 c->controller = cppi;
138 struct cppi *cppi = c->controller;
143 c->controller = NULL;
155 static void cppi_controller_start(struct cppi *controller)
160 /* do whatever is necessary to start controller */
161 for (i = 0; i < ARRAY_SIZE(controller->tx); i++) {
162 controller->tx[i].transmit = true;
163 controller->tx[i].index = i;
165 for (i = 0; i < ARRAY_SIZE(controller->rx); i++) {
166 controller->rx[i].transmit = false;
167 controller->rx[i].index = i;
171 for (i = 0; i < ARRAY_SIZE(controller->tx); i++)
172 cppi_pool_init(controller, controller->tx + i);
173 for (i = 0; i < ARRAY_SIZE(controller->rx); i++)
174 cppi_pool_init(controller, controller->rx + i);
176 tibase = controller->tibase;
177 INIT_LIST_HEAD(&controller->tx_complete);
180 for (i = 0; i < ARRAY_SIZE(controller->tx); i++) {
181 struct cppi_channel *tx_ch = controller->tx + i;
190 for (i = 0; i < ARRAY_SIZE(controller->rx); i++) {
191 struct cppi_channel *rx_ch = controller->rx + i;
217 * Stop DMA controller
219 * De-Init the DMA controller as necessary.
222 static void cppi_controller_stop(struct cppi *controller)
228 musb = controller->controller.musb;
230 tibase = controller->tibase;
238 for (i = 0; i < ARRAY_SIZE(controller->tx); i++) {
240 controller->tx[i].last_processed = NULL;
241 cppi_pool_free(controller->tx + i);
243 for (i = 0; i < ARRAY_SIZE(controller->rx); i++)
244 cppi_pool_free(controller->rx + i);
284 struct cppi *controller;
290 controller = container_of(c, struct cppi, controller);
291 tibase = controller->tibase;
301 if (index >= ARRAY_SIZE(controller->tx)) {
305 cppi_ch = controller->tx + index;
307 if (index >= ARRAY_SIZE(controller->rx)) {
311 cppi_ch = controller->rx + index;
338 tibase = c->controller->tibase;
340 musb_dbg(c->controller->controller.musb,
350 /* Context: controller irqlocked */
354 void __iomem *base = c->controller->mregs;
359 musb_dbg(c->controller->controller.musb,
364 musb_readl(c->controller->tibase,
380 /* Context: controller irqlocked */
384 void __iomem *base = c->controller->mregs;
389 musb_dbg(c->controller->controller.musb,
408 /* Context: controller irqlocked */
685 * out to end-of-buffer. Standard PCI host controller DMA descriptors
748 * @musb: the controller
752 * Context: controller irqlocked
945 * Context: controller irqlocked
952 struct cppi *controller;
956 controller = cppi_ch->controller;
957 musb = controller->controller.musb;
1012 struct musb *musb = cppi->controller.musb;
1124 if (is_host_active(cppi->controller.musb)
1151 cppi = container_of(musb->dma_controller, struct cppi, controller);
1298 /* Instantiate a software object representing a DMA controller. */
1302 struct cppi *controller;
1303 struct device *dev = musb->controller;
1307 controller = kzalloc(sizeof *controller, GFP_KERNEL);
1308 if (!controller)
1311 controller->mregs = mregs;
1312 controller->tibase = mregs - DAVINCI_BASE_OFFSET;
1314 controller->controller.musb = musb;
1315 controller->controller.channel_alloc = cppi_channel_allocate;
1316 controller->controller.channel_release = cppi_channel_release;
1317 controller->controller.channel_program = cppi_channel_program;
1318 controller->controller.channel_abort = cppi_channel_abort;
1325 controller->pool = dma_pool_create("cppi",
1326 controller->controller.musb->controller,
1329 if (!controller->pool) {
1330 kfree(controller);
1337 musb_dma_controller_destroy(&controller->controller);
1340 controller->irq = irq;
1343 cppi_controller_start(controller);
1344 return &controller->controller;
1349 * Destroy a previously-instantiated DMA controller.
1355 cppi = container_of(c, struct cppi, controller);
1360 free_irq(cppi->irq, cppi->controller.musb);
1362 /* assert: caller stopped the controller first */
1370 * Context: controller irqlocked, endpoint selected
1375 struct cppi *controller;
1384 controller = cppi_ch->controller;
1404 mbase = controller->mregs;
1405 tibase = controller->tibase;
1419 /* REVISIT put timeouts on these controller handshakes */
1472 if (is_host_active(cppi_ch->controller->controller.musb)) {
1481 if (is_host_active(cppi_ch->controller->controller.musb)) {
1503 cppi_rx_scan(controller, cppi_ch->index);
1510 * rely on the controller restarting from state ram, with