diff options
-rw-r--r-- | sound/sparc/cs4231.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c index edeb3d3c4c7e..f5956d557f70 100644 --- a/sound/sparc/cs4231.c +++ b/sound/sparc/cs4231.c | |||
@@ -1268,7 +1268,7 @@ static struct snd_pcm_hardware snd_cs4231_playback = | |||
1268 | .channels_min = 1, | 1268 | .channels_min = 1, |
1269 | .channels_max = 2, | 1269 | .channels_max = 2, |
1270 | .buffer_bytes_max = (32*1024), | 1270 | .buffer_bytes_max = (32*1024), |
1271 | .period_bytes_min = 4096, | 1271 | .period_bytes_min = 64, |
1272 | .period_bytes_max = (32*1024), | 1272 | .period_bytes_max = (32*1024), |
1273 | .periods_min = 1, | 1273 | .periods_min = 1, |
1274 | .periods_max = 1024, | 1274 | .periods_max = 1024, |
@@ -1288,7 +1288,7 @@ static struct snd_pcm_hardware snd_cs4231_capture = | |||
1288 | .channels_min = 1, | 1288 | .channels_min = 1, |
1289 | .channels_max = 2, | 1289 | .channels_max = 2, |
1290 | .buffer_bytes_max = (32*1024), | 1290 | .buffer_bytes_max = (32*1024), |
1291 | .period_bytes_min = 4096, | 1291 | .period_bytes_min = 64, |
1292 | .period_bytes_max = (32*1024), | 1292 | .period_bytes_max = (32*1024), |
1293 | .periods_min = 1, | 1293 | .periods_min = 1, |
1294 | .periods_max = 1024, | 1294 | .periods_max = 1024, |
@@ -1796,7 +1796,7 @@ static irqreturn_t snd_cs4231_sbus_interrupt(int irq, void *dev_id) | |||
1796 | snd_cs4231_outm(chip, CS4231_IRQ_STATUS, ~CS4231_ALL_IRQS | ~status, 0); | 1796 | snd_cs4231_outm(chip, CS4231_IRQ_STATUS, ~CS4231_ALL_IRQS | ~status, 0); |
1797 | spin_unlock_irqrestore(&chip->lock, flags); | 1797 | spin_unlock_irqrestore(&chip->lock, flags); |
1798 | 1798 | ||
1799 | return 0; | 1799 | return IRQ_HANDLED; |
1800 | } | 1800 | } |
1801 | 1801 | ||
1802 | /* | 1802 | /* |
@@ -1821,7 +1821,6 @@ static int sbus_dma_request(struct cs4231_dma_control *dma_cont, dma_addr_t bus_ | |||
1821 | if (!(csr & test)) | 1821 | if (!(csr & test)) |
1822 | goto out; | 1822 | goto out; |
1823 | err = -EBUSY; | 1823 | err = -EBUSY; |
1824 | csr = sbus_readl(base->regs + APCCSR); | ||
1825 | test = APC_XINT_CNVA; | 1824 | test = APC_XINT_CNVA; |
1826 | if ( base->dir == APC_PLAY ) | 1825 | if ( base->dir == APC_PLAY ) |
1827 | test = APC_XINT_PNVA; | 1826 | test = APC_XINT_PNVA; |
@@ -1862,17 +1861,16 @@ static void sbus_dma_enable(struct cs4231_dma_control *dma_cont, int on) | |||
1862 | 1861 | ||
1863 | spin_lock_irqsave(&base->lock, flags); | 1862 | spin_lock_irqsave(&base->lock, flags); |
1864 | if (!on) { | 1863 | if (!on) { |
1865 | if (base->dir == APC_PLAY) { | 1864 | sbus_writel(0, base->regs + base->dir + APCNC); |
1866 | sbus_writel(0, base->regs + base->dir + APCNVA); | 1865 | sbus_writel(0, base->regs + base->dir + APCNVA); |
1867 | sbus_writel(1, base->regs + base->dir + APCC); | 1866 | sbus_writel(0, base->regs + base->dir + APCC); |
1868 | } | 1867 | sbus_writel(0, base->regs + base->dir + APCVA); |
1869 | else | 1868 | |
1870 | { | 1869 | /* ACK any APC interrupts. */ |
1871 | sbus_writel(0, base->regs + base->dir + APCNC); | 1870 | csr = sbus_readl(base->regs + APCCSR); |
1872 | sbus_writel(0, base->regs + base->dir + APCVA); | 1871 | sbus_writel(csr, base->regs + APCCSR); |
1873 | } | ||
1874 | } | 1872 | } |
1875 | udelay(600); | 1873 | udelay(1000); |
1876 | csr = sbus_readl(base->regs + APCCSR); | 1874 | csr = sbus_readl(base->regs + APCCSR); |
1877 | shift = 0; | 1875 | shift = 0; |
1878 | if ( base->dir == APC_PLAY ) | 1876 | if ( base->dir == APC_PLAY ) |