Lines Matching refs:dma

203 	struct tb_dma_port *dma;
210 dma = kzalloc(sizeof(*dma), GFP_KERNEL);
211 if (!dma)
214 dma->buf = kmalloc_array(MAIL_DATA_DWORDS, sizeof(u32), GFP_KERNEL);
215 if (!dma->buf) {
216 kfree(dma);
220 dma->sw = sw;
221 dma->port = port;
222 dma->base = DMA_PORT_CAP;
224 return dma;
229 * @dma: DMA control port
231 void dma_port_free(struct tb_dma_port *dma)
233 if (dma) {
234 kfree(dma->buf);
235 kfree(dma);
239 static int dma_port_wait_for_completion(struct tb_dma_port *dma,
243 struct tb_switch *sw = dma->sw;
249 ret = dma_port_read(sw->tb->ctl, &in, tb_route(sw), dma->port,
250 dma->base + MAIL_IN, 1, 50);
278 static int dma_port_request(struct tb_dma_port *dma, u32 in,
281 struct tb_switch *sw = dma->sw;
285 ret = dma_port_write(sw->tb->ctl, &in, tb_route(sw), dma->port,
286 dma->base + MAIL_IN, 1, DMA_PORT_TIMEOUT);
290 ret = dma_port_wait_for_completion(dma, timeout);
294 ret = dma_port_read(sw->tb->ctl, &out, tb_route(sw), dma->port,
295 dma->base + MAIL_OUT, 1, DMA_PORT_TIMEOUT);
305 struct tb_dma_port *dma = data;
306 struct tb_switch *sw = dma->sw;
316 ret = dma_port_request(dma, in, DMA_PORT_TIMEOUT);
320 return dma_port_read(sw->tb->ctl, buf, tb_route(sw), dma->port,
321 dma->base + MAIL_DATA, dwords, DMA_PORT_TIMEOUT);
327 struct tb_dma_port *dma = data;
328 struct tb_switch *sw = dma->sw;
333 ret = dma_port_write(sw->tb->ctl, buf, tb_route(sw), dma->port,
334 dma->base + MAIL_DATA, dwords, DMA_PORT_TIMEOUT);
348 return dma_port_request(dma, in, DMA_PORT_TIMEOUT);
353 * @dma: DMA control port
358 int dma_port_flash_read(struct tb_dma_port *dma, unsigned int address,
362 dma_port_flash_read_block, dma);
367 * @dma: DMA control port
376 int dma_port_flash_write(struct tb_dma_port *dma, unsigned int address,
383 dma_port_flash_write_block, dma);
388 * @dma: DMA control port
397 int dma_port_flash_update_auth(struct tb_dma_port *dma)
404 return dma_port_request(dma, in, 150);
409 * @dma: DMA control port
420 int dma_port_flash_update_auth_status(struct tb_dma_port *dma, u32 *status)
422 struct tb_switch *sw = dma->sw;
426 ret = dma_port_read(sw->tb->ctl, &out, tb_route(sw), dma->port,
427 dma->base + MAIL_OUT, 1, DMA_PORT_TIMEOUT);
446 * @dma: DMA control port
450 int dma_port_power_cycle(struct tb_dma_port *dma)
457 return dma_port_request(dma, in, 150);