vwsnd: Fix setting of cfgval and ctlval in li_setup_dma()
PATCH 1/1 vwsnd: Fix setting of cfgval and ctlval in li_setup_dma()
Since !LI_CCFG_* evaluates to 0, this did not change anything to cfgval and ctlval.
Signed-off-by Roel Kluin <[email protected]>
---
// vi sound/oss/vwsnd.c +392
# define LI_CCTL_RESET 0x80000000 ... # define LI_CCTL_DMA_ENABLE 0x08000000 ... # define LI_CCFG_LOCK 0x00008000
I am not sure this is what was intended, does anyone have the specs?
sound/oss/vwsnd.c +3 -3
@@ -628,7 +628,7 @@ static void li_setup_dma(dma_chan_t *chan,ASSERT (!(buffer_paddr &0xFF )); chan->baseval = (buffer_paddr >>8 ) |1 << (37 -8 ); - chan->cfgval = (!LI_CCFG_LOCK | + chan->cfgval = ((chan->cfgval & ~LI_CCFG_LOCK) | SHIFT_FIELD(desc->ad1843_slot, LI_CCFG_SLOT) | desc->direction | mode |
@@ -638,9 +638,9 @@ static void li_setup_dma(dma_chan_t *chan, tmask =13 - fragshift;/* See Lithium DMA Notes above. */ ASSERT (size >=2 && size <=7 );ASSERT (tmask >=1 && tmask <=7 ); - chan->ctlval = (!LI_CCTL_RESET | + chan->ctlval = ((chan->ctlval & ~LI_CCTL_RESET ) |SHIFT_FIELD (size,LI_CCTL_SIZE ) | - !LI_CCTL_DMA_ENABLE | + (chan->ctlval & ~LI_CCTL_DMA_ENABLE ) |SHIFT_FIELD (tmask,LI_CCTL_TMASK ) |SHIFT_FIELD (0 ,LI_CCTL_TPTR ));
At Wed, 26 Aug 2009 12:01:20 +0200,
Quoted 5 lines · Roel Kluin
Since !LI_CCFG_* evaluates to 0, this did not change anything to cfgval and ctlval.
Signed-off-by Roel Kluin <[email protected]>
Applied now. Thanks.
Quoted 10 lines
---
// visound/oss/vwsnd.c+392# define LI_CCTL_RESET 0x80000000 ... # define LI_CCTL_DMA_ENABLE 0x08000000 ... # define LI_CCFG_LOCK 0x00008000I am not sure this is what was intended, does anyone have the specs?
Your fix must be correct, judging from the code. But, I have also no spec, so cannot guarantee it ;)
Takashi
Quoted 26 lines
sound/oss/vwsnd.c +3
-3@@ -628,7 +628,7 @@ static void li_setup_dma(dma_chan_t *chan,ASSERT (!(buffer_paddr &0xFF )); chan->baseval = (buffer_paddr >>8 ) |1 << (37 -8 ); - chan->cfgval = (!LI_CCFG_LOCK | + chan->cfgval = ((chan->cfgval & ~LI_CCFG_LOCK) | SHIFT_FIELD(desc->ad1843_slot, LI_CCFG_SLOT) | desc->direction | mode |@@ -638,9 +638,9 @@ static void li_setup_dma(dma_chan_t *chan, tmask =13 - fragshift;/* See Lithium DMA Notes above. */ ASSERT (size >=2 && size <=7 );ASSERT (tmask >=1 && tmask <=7 ); - chan->ctlval = (!LI_CCTL_RESET | + chan->ctlval = ((chan->ctlval & ~LI_CCTL_RESET ) |SHIFT_FIELD (size,LI_CCTL_SIZE ) | - !LI_CCTL_DMA_ENABLE | + (chan->ctlval & ~LI_CCTL_DMA_ENABLE ) |SHIFT_FIELD (tmask,LI_CCTL_TMASK ) |SHIFT_FIELD (0 ,LI_CCTL_TPTR ));