[alsa-devel] old bug in au88x0_core.c
Dan Carpenter
dan.carpenter at oracle.com
Mon Jun 27 15:03:47 CEST 2016
Hi ALSA devs,
The patch 1da177e4c3f4: "Linux-2.6.12-rc2" from Apr 16, 2005, leads
to the following static checker warning:
sound/pci/au88x0/au88x0_core.c:1449 vortex_wtdma_bufshift()
warn: mask and shift to zero
sound/pci/au88x0/au88x0_core.c
1441 static int vortex_wtdma_bufshift(vortex_t * vortex, int wtdma)
1442 {
1443 stream_t *dma = &vortex->dma_wt[wtdma];
1444 int page, p, pp, delta, i;
1445
1446 page =
1447 (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) &
1448 WT_SUBBUF_MASK)
1449 >> WT_SUBBUF_SHIFT;
This is always zero because:
#define WT_SUBBUF_MASK 0x3
#define WT_SUBBUF_SHIFT 0x15
1450 if (dma->nr_periods >= 4)
1451 delta = (page - dma->period_real) & 3;
1452 else {
1453 delta = (page - dma->period_real);
1454 if (delta < 0)
1455 delta += dma->nr_periods;
1456 }
1457 if (delta == 0)
1458 return 0;
1493 #if 0
1494 static void
1495 vortex_wtdma_getposition(vortex_t * vortex, int wtdma, int *subbuf, int *pos)
1496 {
1497 int temp;
1498 temp = hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2));
1499 *subbuf = (temp >> WT_SUBBUF_SHIFT) & WT_SUBBUF_MASK;
>From this ifdef zero code, it looks like we should shift first then do
the mask.
1500 *pos = temp & POS_MASK;
1501 }
1502
1503 static int vortex_wtdma_getcursubuffer(vortex_t * vortex, int wtdma)
1504 {
1505 return ((hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) >>
1506 POS_SHIFT) & POS_MASK);
1507 }
1508 #endif
regards,
dan carpenter
More information about the Alsa-devel
mailing list