Re: support for DBRI
On Sun, Sep 26, 2004 at 04:24:46PM +0200, Hendrik Sattler wrote:
> Note that the box does not has a speaker itself, it just has the needed
> standard-plugs :)
> I am not sure that the box is not broken, I never actually heard it working.
> However, I had it open and it looked ok.
> The SS20 is actually a Tritec WS-20L.
Ah, thanks for clearing that up.
> The debug output always begins with:
> DBRI: Found SUNW,DBRIe in SBUS slot 15
> DBRI: DMA Cmd Block 0xfff0e000 (0xfff0e000)
> DBRI: reset 0:4008 2:9 8:0 9:0
> DBRI: init: cmd: fff0e000, int: fff0e100
> DBRI cmd: fff0e000:38000000
> DBRI cmd: fff0e004:fff0e100
> DBRI: INTR: Command: PAUSE Value:0
> DBRI: INTR: Command: WAIT Value:0
> DBRI: Chip completed command buffer (22)
> DBRI: Interrupt! (reg1=0x00000001)
>
> Without that box:
> DBRI: no mmcodec found.
> DBRI: reset 0:8 2:8 8:fff0e00c 9:fff0e100
Yep, that's clear. No internal codec and speaker.
> With that box:
> DBRI: Speakerbox detected
Seems you've got it plugged in correctly :)
<snip>
> DBRI: INTR: Command: SSP Value:17
> DBRI: INTR: Command: PAUSE Value:0
> DBRI: INTR: Command: WAIT Value:0
> DBRI: Chip completed command buffer (28)
> DBRI: Interrupt! (reg1=0x00000001)
> DBRI: INTR: Chan:18 Code:10 Val:0x0
> DBRI: CS4215 didn't respond to CLB (0x00)
> DBRI: CS4215 failed probe at offset 8
> DBRI: reset 0:400018 2:f6 8:fff0e00c 9:fff0e100
> DBRI: INTR: Chan:19 Code:10 Val:0x0
> DBRI: INTR: Chan:18 Code:10 Val:0x24
> DBRI: INTR: Chan:19 Code:10 Val:0x48
> DBRI: INTR: Chan:18 Code:10 Val:0xc
This is where the driver talks to the external chip for the first
time. The interrupts after the reset actually contain the answer
it was looking for. So I think the driver gives up too soon.
Can you try the patch attached? It just makes the driver wait longer.
If it still fails the same way, bump up the 256 some more.
--
Martin
--- 2.4.22/drivers/sbus/audio/dbri.c.orig 2004-09-26 18:20:28.000000000 +0100
+++ 2.4.22/drivers/sbus/audio/dbri.c 2004-09-26 18:21:08.000000000 +0100
@@ -1422,9 +1422,9 @@
tmp |= D_C; /* Enable CHI */
sbus_writel(tmp, dbri->regs + REG0);
- i = 64;
+ i = 256;
while (((dbri->mm.status & 0xe4) != 0x20) && --i)
- udelay(125);
+ udelay(500);
if (i == 0) {
dprintk(D_MM, ("DBRI: CS4215 didn't respond to CLB (0x%02x)\n",
dbri->mm.status));
Reply to: