Bug 15191

Summary: ENE CB712 CardBus bridge needs special treatment with Echo Audio Indigo soundcards
Product: Drivers Reporter: Michał Pecio (michal.pecio)
Component: PCMCIAAssignee: Dominik Brodowski (linux)
Status: CLOSED CODE_FIX    
Severity: normal CC: akpm, daniel.ritz, linux
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.32.6 Subsystem:
Regression: No Bisected commit-id:

Description Michał Pecio 2010-01-31 17:52:53 UTC
Indigos are well known for distortions when running on some buggy ENE controllers. There is a workaround in the yenta driver, but for some reason it isn't activated on CB712. However, I own a laptop with such chip and it seems that it also is affected - I can clearly hear occasional cracks, especially under heavy network load, and in Windows XP the card is completely unusable :)
This simple change fixed things for me:
--- yenta_socket.c~     2009-12-09 20:53:14.000000000 +0100
+++ yenta_socket.c      2010-02-01 17:04:06.000000000 +0100
@@ -1358,7 +1358,7 @@ static struct pci_device_id yenta_table 
        CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_7610, TI12XX),
 
        CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_710, TI12XX),
-       CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_712, TI12XX),
+       CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_712, ENE),
        CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_720, TI12XX),
        CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_722, TI12XX),
        CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1211, ENE),

I've only touched the CB712, but Echo's FAQ says that CB710 and CB720 are also affected.
http://www.echoaudio.com/downloadfiles/Other/ENE_README.pdf

On my system, ene_tune_bridge() changes register 0xC9 from 4 to 2. Changing it few times back and forth with setpci during playback with running "ping -f" confirmed that this is indeed the cause of my problem.

lspci:
06:04.0 0607: 1524:1412 (rev 10)
06:04.0 CardBus bridge: ENE Technology Inc CB-712/4 Cardbus Controller (rev 10)
        Subsystem: Acer Incorporated [ALI] Device 0090
        Flags: bus master, medium devsel, latency 168, IRQ 16
        Memory at f0102000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=06, secondary=07, subordinate=0a, sec-latency=176
        Memory window 0: 60000000-63fff000 (prefetchable)
        Memory window 1: 68000000-6bfff000
        I/O window 0: 00007000-000070ff
        I/O window 1: 00007400-000074ff
        16-bit legacy interface ports at 0001
        Kernel driver in use: yenta_cardbus
        Kernel modules: yenta_socket

07:00.0 0480: 1057:3410 (rev 01)
07:00.0 Multimedia controller: Motorola DSP56361 Digital Signal Processor (rev 01)
        Subsystem: Echo Digital Audio Corporation Indigo IO
        Flags: bus master, medium devsel, latency 192, IRQ 16
        Memory at 68000000 (32-bit, non-prefetchable) [size=1M]
        Kernel driver in use: Echoaudio Indigo IO
        Kernel modules: snd-indigoio
Comment 1 Andrew Morton 2010-02-01 21:29:24 UTC
hm, OK, thanks.  I added it - hopefully Daniel will be able to have a think about it.  I worry that the change will break someone else's card...

In future, please send patches via email, not bugzilla.
Comment 2 Dominik Brodowski 2010-03-06 14:09:40 UTC
Bugfix merged f3d4ae431d819200bb61e943cb23572b10744e93 -- closing this bug.