Lines Matching refs:desc

342 static bool allwinner_sun8i_emac_desc_owned(FrameDescriptor *desc,  in allwinner_sun8i_emac_desc_owned()  argument
345 return (desc->status & DESC_STATUS_CTL) && (min_buf_size == 0 || in allwinner_sun8i_emac_desc_owned()
346 (desc->status2 & DESC_STATUS2_BUF_SIZE_MASK) >= min_buf_size); in allwinner_sun8i_emac_desc_owned()
350 FrameDescriptor *desc, in allwinner_sun8i_emac_get_desc() argument
356 desc->status = le32_to_cpu(desc_words[0]); in allwinner_sun8i_emac_get_desc()
357 desc->status2 = le32_to_cpu(desc_words[1]); in allwinner_sun8i_emac_get_desc()
358 desc->addr = le32_to_cpu(desc_words[2]); in allwinner_sun8i_emac_get_desc()
359 desc->next = le32_to_cpu(desc_words[3]); in allwinner_sun8i_emac_get_desc()
363 FrameDescriptor *desc) in allwinner_sun8i_emac_next_desc() argument
365 const uint32_t nxt = desc->next; in allwinner_sun8i_emac_next_desc()
366 allwinner_sun8i_emac_get_desc(s, desc, nxt); in allwinner_sun8i_emac_next_desc()
371 FrameDescriptor *desc, in allwinner_sun8i_emac_find_desc() argument
379 allwinner_sun8i_emac_get_desc(s, desc, desc_addr); in allwinner_sun8i_emac_find_desc()
381 if (allwinner_sun8i_emac_desc_owned(desc, min_size)) { in allwinner_sun8i_emac_find_desc()
383 } else if (desc->next == start_addr) { in allwinner_sun8i_emac_find_desc()
386 desc_addr = desc->next; in allwinner_sun8i_emac_find_desc()
394 FrameDescriptor *desc, in allwinner_sun8i_emac_rx_desc() argument
397 return allwinner_sun8i_emac_find_desc(s, desc, s->rx_desc_curr, min_size); in allwinner_sun8i_emac_rx_desc()
401 FrameDescriptor *desc) in allwinner_sun8i_emac_tx_desc() argument
403 allwinner_sun8i_emac_get_desc(s, desc, s->tx_desc_curr); in allwinner_sun8i_emac_tx_desc()
408 const FrameDescriptor *desc, in allwinner_sun8i_emac_flush_desc() argument
412 desc_words[0] = cpu_to_le32(desc->status); in allwinner_sun8i_emac_flush_desc()
413 desc_words[1] = cpu_to_le32(desc->status2); in allwinner_sun8i_emac_flush_desc()
414 desc_words[2] = cpu_to_le32(desc->addr); in allwinner_sun8i_emac_flush_desc()
415 desc_words[3] = cpu_to_le32(desc->next); in allwinner_sun8i_emac_flush_desc()
423 FrameDescriptor desc; in allwinner_sun8i_emac_can_receive() local
426 (allwinner_sun8i_emac_rx_desc(s, &desc, 0) != 0); in allwinner_sun8i_emac_can_receive()
434 FrameDescriptor desc; in allwinner_sun8i_emac_receive() local
444 s->rx_desc_curr = allwinner_sun8i_emac_rx_desc(s, &desc, in allwinner_sun8i_emac_receive()
452 desc.status &= ~DESC_STATUS_CTL; in allwinner_sun8i_emac_receive()
453 desc.status &= ~RX_DESC_STATUS_FRM_LEN_MASK; in allwinner_sun8i_emac_receive()
456 desc.status |= RX_DESC_STATUS_FIRST_DESC; in allwinner_sun8i_emac_receive()
459 if ((desc.status2 & DESC_STATUS2_BUF_SIZE_MASK) < in allwinner_sun8i_emac_receive()
461 desc_bytes = desc.status2 & DESC_STATUS2_BUF_SIZE_MASK; in allwinner_sun8i_emac_receive()
462 desc.status |= desc_bytes << RX_DESC_STATUS_FRM_LEN_SHIFT; in allwinner_sun8i_emac_receive()
470 desc.status |= RX_DESC_STATUS_LAST_DESC; in allwinner_sun8i_emac_receive()
471 desc.status |= (bytes_left + padding) in allwinner_sun8i_emac_receive()
475 dma_memory_write(&s->dma_as, desc.addr, buf, desc_bytes, in allwinner_sun8i_emac_receive()
477 allwinner_sun8i_emac_flush_desc(s, &desc, s->rx_desc_curr); in allwinner_sun8i_emac_receive()
478 trace_allwinner_sun8i_emac_receive(s->rx_desc_curr, desc.addr, in allwinner_sun8i_emac_receive()
482 if (!(desc.status2 & RX_DESC_STATUS2_RX_INT_CTL)) { in allwinner_sun8i_emac_receive()
491 s->rx_desc_curr = allwinner_sun8i_emac_find_desc(s, &desc, desc.next, in allwinner_sun8i_emac_receive()
511 FrameDescriptor desc; in allwinner_sun8i_emac_transmit() local
517 s->tx_desc_curr = allwinner_sun8i_emac_tx_desc(s, &desc); in allwinner_sun8i_emac_transmit()
520 while (allwinner_sun8i_emac_desc_owned(&desc, 0)) { in allwinner_sun8i_emac_transmit()
523 bytes = desc.status2 & DESC_STATUS2_BUF_SIZE_MASK; in allwinner_sun8i_emac_transmit()
525 desc.status |= TX_DESC_STATUS_LENGTH_ERR; in allwinner_sun8i_emac_transmit()
528 dma_memory_read(&s->dma_as, desc.addr, packet_buf + packet_bytes, in allwinner_sun8i_emac_transmit()
531 desc.status &= ~DESC_STATUS_CTL; in allwinner_sun8i_emac_transmit()
532 allwinner_sun8i_emac_flush_desc(s, &desc, s->tx_desc_curr); in allwinner_sun8i_emac_transmit()
535 if (desc.status2 & TX_DESC_STATUS2_LAST_DESC) { in allwinner_sun8i_emac_transmit()
536 if (desc.status2 & TX_DESC_STATUS2_CHECKSUM_MASK) { in allwinner_sun8i_emac_transmit()
541 trace_allwinner_sun8i_emac_transmit(s->tx_desc_curr, desc.addr, in allwinner_sun8i_emac_transmit()
547 s->tx_desc_curr = allwinner_sun8i_emac_next_desc(s, &desc); in allwinner_sun8i_emac_transmit()
590 FrameDescriptor desc; in allwinner_sun8i_emac_read() local
651 allwinner_sun8i_emac_get_desc(s, &desc, s->tx_desc_curr); in allwinner_sun8i_emac_read()
652 value = desc.addr; in allwinner_sun8i_emac_read()
664 allwinner_sun8i_emac_get_desc(s, &desc, s->rx_desc_curr); in allwinner_sun8i_emac_read()
665 value = desc.addr; in allwinner_sun8i_emac_read()