|
|
@@ -157,6 +157,8 @@ static ssize_t read_file_ring(struct file *file, char __user *user_buf,
|
|
|
struct ag71xx_ring *ring,
|
|
|
unsigned desc_reg)
|
|
|
{
|
|
|
+ int ring_size = BIT(ring->order);
|
|
|
+ int ring_mask = ring_size - 1;
|
|
|
char *buf;
|
|
|
unsigned int buflen;
|
|
|
unsigned int len = 0;
|
|
|
@@ -167,7 +169,7 @@ static ssize_t read_file_ring(struct file *file, char __user *user_buf,
|
|
|
u32 desc_hw;
|
|
|
int i;
|
|
|
|
|
|
- buflen = (ring->size * DESC_PRINT_LEN);
|
|
|
+ buflen = (ring_size * DESC_PRINT_LEN);
|
|
|
buf = kmalloc(buflen, GFP_KERNEL);
|
|
|
if (!buf)
|
|
|
return -ENOMEM;
|
|
|
@@ -178,13 +180,13 @@ static ssize_t read_file_ring(struct file *file, char __user *user_buf,
|
|
|
|
|
|
spin_lock_irqsave(&ag->lock, flags);
|
|
|
|
|
|
- curr = (ring->curr % ring->size);
|
|
|
- dirty = (ring->dirty % ring->size);
|
|
|
+ curr = (ring->curr & ring_mask);
|
|
|
+ dirty = (ring->dirty & ring_mask);
|
|
|
desc_hw = ag71xx_rr(ag, desc_reg);
|
|
|
- for (i = 0; i < ring->size; i++) {
|
|
|
+ for (i = 0; i < ring_size; i++) {
|
|
|
struct ag71xx_buf *ab = &ring->buf[i];
|
|
|
struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
|
|
|
- u32 desc_dma = ((u32) ring->descs_dma) + i * ring->desc_size;
|
|
|
+ u32 desc_dma = ((u32) ring->descs_dma) + i * AG71XX_DESC_SIZE;
|
|
|
|
|
|
len += snprintf(buf + len, buflen - len,
|
|
|
"%3d %c%c%c %08x %08x %08x %08x %c %10lu\n",
|