All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Baitis <baitisj@evolution.com>
To: Pete Popov <ppopov@mvista.com>
Cc: linux-mips <linux-mips@linux-mips.org>
Subject: Re: CardBus on DBAu1500
Date: Mon, 3 Mar 2003 18:14:21 -0800	[thread overview]
Message-ID: <20030303181421.C20129@luca.pas.lab> (raw)
In-Reply-To: <1046499358.12356.2.camel@adsl.pacbell.net>; from ppopov@mvista.com on Fri, Feb 28, 2003 at 10:15:58PM -0800

Pete and others:

Thanks! I can access CardBus-enabled cards... but only if I plug the CardBus
card into a PCI bridge device. 

For those who might be interested in hearing, here's my current status:

I tested the PCI->PCI bridge code by copying pb1500/pci_ops.c into
db1x00/pci_ops.c. It seemed to work. Great!

After noticing that yenta_socket driver still locked up, I plugged a PCI-PCI
bridge board in between the Au1500 dev board and the CardBus bridge. CardBus
didn't work quite right, so I checked the PCI configuration registers on all
devices on my PCI bus.

I noticed the PCI bridge device's SUBORDINATE_BUS value was set to 01, which
is completely incorrect. It should have been at *least* 11, given that
the CardBus bridge's SECONDARY_BUS register was set to 10. 

So, I used setpci to change the PCI bridge's SUBORDINATE_BUS to 1f. I started
the CardBus services, and it seems that everything worked with CardBus cards.
Eject, insert, and status all good -- and I can look at all the PCI
configuration registers on the CardBus card.

***

It seems like the issue with plugging in the CardBus bridge directly into
PCI bus 0 (no PCI-PCI bridge) has to do with 16-bit CardBus support.
I enabled debugging on yenta_socket, and here's some results. First, I present
information *without* the PCI bridge, and then *with* PCI bridge.


Without PCI bridge:

dmesg gives:

  Autoconfig PCI channel 0x8029fc38°°
    Scanning bus 00, I/O 0x00000300:0x00100000, Mem 0x40000000:0x44000000
    00:0c.0 Class 0104: 1103:0007 (rev 01)°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°                                                                
            I/O at 0x00000300 [size=0x8]°°                         
            I/O at 0x00000308 [size=0x4]
            I/O at 0x00000310 [size=0x8]
            I/O at 0x00000318 [size=0x4]
            I/O at 0x00000400 [size=0x100]
    00:0d.0 Class 0607: 104c:ac56°°°°°°°°°                         
            Mem at 0x40000000 [size=0x1000]                        
            Mem unavailable -- skipping°°°°                        
            I/O at 0x00000500 [size=0x4]                           
            Mem at 0x40001000 [size=0x1000]                        
            Mem at 0x40002000 [size=0x1000]                        
            Mem at 0x40003000 [size=0x1000]                        
  
lspci -v gives:
  
  00:0c.0 RAID bus controller: Triones Technologies, Inc.: Unknown device 0007
  (rev 01)
          Subsystem: Triones Technologies, Inc.: Unknown device 0001
          Flags: bus master, 66Mhz, medium devsel, latency 128, IRQ 1
          I/O ports at 0300 [size=8]
          I/O ports at 0308 [size=4]
          I/O ports at 0310 [size=8]
          I/O ports at 0318 [size=4]
          I/O ports at 0400 [size=256]
          Expansion ROM at <unassigned> [disabled] [size=128K]   
          Capabilities: [60] Power Management version 2          
  
  00:0d.0 CardBus bridge: Texas Instruments: Unknown device ac56 
          Subsystem: Unknown device 5678:1234                    
          Flags: bus master, medium devsel, latency 128, IRQ 1   
          Memory at 40000000 (32-bit, non-prefetchable) [size=4K]
          Bus: primary=00, secondary=05, subordinate=00, sec-latency=0      
          Memory window 0: 40001000-40002000 (prefetchable)      
          I/O window 0: 00000000-00000003                        
          I/O window 1: 00000000-00000003                        
          16-bit legacy interface ports at 0001                  


root@10.1.1.154:~# modprobe yenta_socket                       

  Linux Kernel Card Services 3.1.22
    options:  [pci] [cardbus]°°°°°°
  config_writel: c0112bd0 0044 00000000
  config_writel: c0112bd0 0010 40000000
  config_writew: c0112bd0 0004 0087°°°°
  config_writeb: c0112bd0 000c 08°°
  config_writeb: c0112bd0 000d a8
  config_writel: c0112bd0 0018 b0000500
  config_readw: c0112bd0 003e 0340°°°°°
  config_writew: c0112bd0 003e 0580
  exca_writeb: c0112bd0 001e 00°°°°
  exca_writeb: c0112bd0 0016 00
  cb_writel: c0112bd0 000c 00004000
  cb_writel: c0112bd0 0004 00000000
  config_readl: c0112bd0 001c 40001000
  config_readl: c0112bd0 0020 40002000
  config_readl: c0112bd0 0024 40003000
  config_readl: c0112bd0 0028 00000000
  config_writel: c0112bd0 0024 40400000
  config_writel: c0112bd0 0028 407fffff
  config_readl: c0112bd0 002c 00000000°
  config_readl: c0112bd0 0030 00000000
  config_writel: c0112bd0 002c 00004000
  config_writel: c0112bd0 0030 000040ff
  config_readl: c0112bd0 0034 00000000°
  config_readl: c0112bd0 0038 00000000
  config_writel: c0112bd0 0034 00004400
  config_writel: c0112bd0 0038 000044ff
  cb_readl: c0112bd0 0000 00000006°°°°°
  cb_writel: c0112bd0 0000 00000006
  exca_readb: c0112bd0 0004 00°°°°°
  exca_readb: c0112bd0 0003 00
  cb_readl: c0112bd0 0000 00000000
  cb_writel: c0112bd0 0000 00000000
  exca_readb: c0112bd0 0004 00°°°°°
  exca_readb: c0112bd0 0003 00
  cb_readl: c0112bd0 0000 00000000
  cb_writel: c0112bd0 0000 00000000
  exca_readb: c0112bd0 0004 00°°°°°
  exca_readb: c0112bd0 0003 00
  cb_readl: c0112bd0 0000 00000000
  cb_writel: c0112bd0 0000 00000000
  exca_readb: c0112bd0 0004 00°°°°°
  exca_readb: c0112bd0 0003 00
  cb_readl: c0112bd0 0000 00000000
  cb_writel: c0112bd0 0000 00000000
  exca_readb: c0112bd0 0004 00°°°°°
  exca_readb: c0112bd0 0003 00
  cb_readl: c0112bd0 0000 00000000
  cb_writel: c0112bd0 0000 00000000
  exca_readb: c0112bd0 0004 00°°°°°
  exca_readb: c0112bd0 0003 00
    ** following portion loops indefinitely **
  cb_readl: c0112bd0 0000 00000000
  cb_writel: c0112bd0 0000 00000000
  exca_readb: c0112bd0 0004 00°°°°°
  exca_readb: c0112bd0 0003 00

With PCI bridge:

  Autoconfig PCI channel 0x8029fc38°°
  Scanning bus 00, I/O 0x00000300:0x00100000, Mem 0x40000000:0x44000000
  00:0c.0 Class 0104: 1103:0007 (rev 01)°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
          I/O at 0x00000300 [size=0x8]°°
          I/O at 0x00000308 [size=0x4]
          I/O at 0x00000310 [size=0x8]
          I/O at 0x00000318 [size=0x4]
          I/O at 0x00000400 [size=0x100]
  00:0d.0 Class 0604: 1011:0022 (rev 02)
          Bridge: primary=00, secondary=01
  Scanning sub bus 01, I/O 0x00001000, Mem 0x40000000
  01:07.0 Class 0607: 104c:ac56°°°°°°°°°°°°°°°°°°°°°°
          Mem at 0x40000000 [size=0x1000]
          Mem unavailable -- skipping°°°°
          I/O at 0x00001000 [size=0x4]
          Mem at 0x40001000 [size=0x1000]
          Mem at 0x40002000 [size=0x1000]
          Mem at 0x40003000 [size=0x1000]
  Back to bus 00°°°°°°°°°°°°°°°°°°°°°°°°°

lspci -v gives:
  
  00:0c.0 RAID bus controller: Triones Technologies, Inc.: Unknown device 0007
  (rev 01)
          Subsystem: Triones Technologies, Inc.: Unknown device 0001
          Flags: bus master, 66Mhz, medium devsel, latency 128, IRQ 1
          I/O ports at 0300 [size=8]
          I/O ports at 0308 [size=4]
          I/O ports at 0310 [size=8]
          I/O ports at 0318 [size=4]
          I/O ports at 0400 [size=256]
          Expansion ROM at <unassigned> [disabled] [size=128K]
          Capabilities: [60] Power Management version 2
  
  00:0d.0 PCI bridge: Digital Equipment Corporation DECchip 21150 (rev 02)
  (prog-if 00 [Normal decode])
          Flags: bus master, medium devsel, latency 0
          Bus: primary=00, secondary=01, subordinate=1f, sec-latency=0
          I/O behind bridge: 00001000-00001fff     
          Memory behind bridge: 40000000-400fffff  
          Prefetchable memory behind bridge: 0000000000000000-0000000000000000
  
  01:07.0 CardBus bridge: Texas Instruments: Unknown device ac56
          Subsystem: Unknown device 5678:1234      
          Flags: bus master, medium devsel, latency 128, IRQ 255
          Memory at 40000000 (32-bit, non-prefetchable) [size=4K]
          Bus: primary=00, secondary=10, subordinate=00, sec-latency=0
          Memory window 0: 40001000-40002000 (prefetchable)
          I/O window 0: 00000000-00000003
          I/O window 1: 00000000-00000003
          16-bit legacy interface ports at 0001    

root@10.1.1.154:~# modprobe yenta_socket                       

  Linux Kernel Card Services 3.1.22
    options:  [pci] [cardbus]°°°°°°
  config_writel: c0112bd0 0044 00000000
  config_writel: c0112bd0 0010 40000000
  config_writew: c0112bd0 0004 0087°°°°
  config_writeb: c0112bd0 000c 08°°
  config_writeb: c0112bd0 000d a8
  config_writel: c0112bd0 0018 b0001000
  config_readw: c0112bd0 003e 0340°°°°°
  config_writew: c0112bd0 003e 0580
  exca_writeb: c0112bd0 001e 00°°°°
  exca_writeb: c0112bd0 0016 00
  cb_writel: c0112bd0 000c 00004000
  cb_writel: c0112bd0 0004 00000000
  config_readl: c0112bd0 001c 40001000
  config_readl: c0112bd0 0020 40002000
  config_readl: c0112bd0 0024 40003000
  config_readl: c0112bd0 0028 00000000
  config_writel: c0112bd0 0024 10000000
  config_writel: c0112bd0 0028 103fffff
  config_readl: c0112bd0 002c 00000000°
  config_readl: c0112bd0 0030 00000000
  config_writel: c0112bd0 002c 00004000
  config_writel: c0112bd0 0030 000040ff
  config_readl: c0112bd0 0034 00000000°
  config_readl: c0112bd0 0038 00000000
  config_writel: c0112bd0 0034 00004400
  config_writel: c0112bd0 0038 000044ff
  config_readw: c0112bd0 003e 05c0°°°°°
  cb_writel: c0112bd0 0000 ffffffff
  cb_writel: c0112bd0 0004 00000001
  exca_writeb: c0112bd0 0005 00°°°°
  warning: end_irq 60 did not enable (6)
  warning: end_irq 59 did not enable (6)
  warning: end_irq 58 did not enable (6)
  warning: end_irq 57 did not enable (6)
  warning: end_irq 55 did not enable (6)
  warning: end_irq 52 did not enable (6)
  warning: end_irq 48 did not enable (6)
  warning: end_irq 46 did not enable (6)
  warning: end_irq 45 did not enable (6)
  warning: end_irq 44 did not enable (6)
  warning: end_irq 43 did not enable (6)
  warning: end_irq 42 did not enable (6)
  warning: end_irq 41 did not enable (6)
  warning: end_irq 40 did not enable (6)
  warning: end_irq 39 did not enable (6)
  warning: end_irq 38 did not enable (6)
  warning: end_irq 31 did not enable (6)
  warning: end_irq 27 did not enable (6)
  warning: end_irq 18 did not enable (6)
  warning: end_irq 14 did not enable (6)
  warning: end_irq 5 did not enable (6)°
  warning: end_irq 4 did not enable (6)
  warning: end_irq 2 did not enable (6)
  warning: end_irq 1 did not enable (6)
  warning: end_irq 60 did not enable (16)
  warning: end_irq 59 did not enable (16)
  warning: end_irq 58 did not enable (16)
  warning: end_irq 57 did not enable (16)
  warning: end_irq 55 did not enable (16)
  warning: end_irq 52 did not enable (16)
  warning: end_irq 48 did not enable (16)
  warning: end_irq 46 did not enable (16)
  warning: end_irq 45 did not enable (16)
  warning: end_irq 44 did not enable (16)
  warning: end_irq 43 did not enable (16)
  warning: end_irq 42 did not enable (16)
  warning: end_irq 41 did not enable (16)
  warning: end_irq 40 did not enable (16)
  warning: end_irq 39 did not enable (16)
  warning: end_irq 38 did not enable (16)
  warning: end_irq 27 did not enable (16)
  warning: end_irq 18 did not enable (16)
  warning: end_irq 5 did not enable (16)°
  warning: end_irq 4 did not enable (16)
  warning: end_irq 2 did not enable (16)
  warning: end_irq 1 did not enable (16)
  exca_writeb: c0112bd0 0005 31°°°°°°°°°
  cb_writel: c0112bd0 000c 00000001
  cb_writel: c0112bd0 0000 ffffffff
  exca_writeb: c0112bd0 0005 91°°°°
  cb_writel: c0112bd0 000c 00000001
  cb_writel: c0112bd0 0000 ffffffff
  exca_writeb: c0112bd0 0005 a1°°°°
  cb_writel: c0112bd0 000c 00000001
  cb_writel: c0112bd0 0000 ffffffff
  exca_writeb: c0112bd0 0005 b1°°°°
  cb_writel: c0112bd0 000c 00000001
  cb_writel: c0112bd0 0000 ffffffff
  cb_writel: c0112bd0 0004 00000000
  exca_writeb: c0112bd0 0005 00°°°°
  config_writew: c0112bd0 003e 0540
  Yenta IRQ list 0000, PCI irq0°°°°
  cb_readl: c0112bd0 0008 30000020
  Socket status: 30000020°°°°°°°°°
  config_writel: c0112bd0 0044 00000000
  config_writel: c0112bd0 0010 40000000
  config_writew: c0112bd0 0004 0087°°°°
  config_writeb: c0112bd0 000c 08°°
  config_writeb: c0112bd0 000d a8
  config_writel: c0112bd0 0018 b0001000
  config_readw: c0112bd0 003e 0540°°°°°
  config_writew: c0112bd0 003e 0580
  exca_writeb: c0112bd0 001e 00°°°°
  exca_writeb: c0112bd0 0016 00
  cb_writel: c0112bd0 000c 00004000
  cb_readl: c0112bd0 0010 00000400°
  cb_writel: c0112bd0 0010 00000000
  config_readw: c0112bd0 003e 05c0°
  cb_readl: c0112bd0 0008 30000820
  exca_readb: c0112bd0 0003 00°°°°
  exca_writeb: c0112bd0 0003 00
  config_writew: c0112bd0 003e 0580
  cb_writel: c0112bd0 0000 ffffffff
  cb_writel: c0112bd0 0004 00000006
  exca_readb: c0112bd0 0006 00°°°°°
  exca_writew: c0112bd0 0008 0000
  exca_writew: c0112bd0 000a 0001
  exca_readb: c0112bd0 0007 00°°°
  exca_writeb: c0112bd0 0007 00
  exca_readb: c0112bd0 0006 00°
  exca_writew: c0112bd0 000c 0000
  exca_writew: c0112bd0 000e 0001
  exca_readb: c0112bd0 0007 00°°°
  exca_writeb: c0112bd0 0007 00
  exca_readb: c0112bd0 0006 00°
  exca_writeb: c0112bd0 0040 00
  exca_writew: c0112bd0 0010 0000
  exca_writew: c0112bd0 0012 0000
  exca_writew: c0112bd0 0014 0000
  ..... etc etc 
  
Thanks, all, for the information. I hope someone finds this useful!
I'm gonna get remote kgdb goin' here, so I can hopefully fix the obnoxious
infinite loop...

-Jeff


On Fri, Feb 28, 2003 at 10:15:58PM -0800, Pete Popov wrote:
> On Fri, 2003-02-28 at 19:48, Jeff Baitis wrote:
> > Hey Pete and others!
> > 
> > I'm finally working on CardBus support on the DBAu1500. Just got acquainted
> > with PCI today. :)
> > 
> > I decided that the first step is to plug in a PCI->PCI bridge, and try to see
> > if it would work, which it did not. After winding around inside of the kernel,
> > I finally arrived in arch/mips/au1000/db1x00/pci_ops.c:
> > 
> > Inside of config_access(unsigned char access_type, struct pci_dev *dev,
> > unsigned char where, u32 * data), on line 97, a little surprise:
> > 
> >     if (bus != 0) {
> >         *data = 0xffffffff;
> >         return -1;
> >     }
> > 
> > At this point, I concluded that I cannot traverse a PCI-PCI or CardBus bridge,
> > since any devices behind the bridge will require Type 1 Configuration Cycles,
> > and it seems that only Type 0 is currently supported.
> > 
> > I assume that I should add code to handle the case where I need to generate
> > Type 1 Configuration Cycles inside of config_access. Pete, since you authored
> > this code, I thought I'd quickly run this by you to make sure that I'm on
> > track.
> > 
> > Thanks for your suggestions!
> 
> Take a look at arch/mips/au1000/pb1500/pci_ops.c for type 1 config
> access. The patch was courtesy of David Gathright and apparently I
> missed adding it in the db1500. Actually, we need to combine that code
> because it's the same. Let me get through my eternal struggle of getting
> the 36 bit patch applied (with Ralf's help I think a modified patch
> should be ready this weekend) and then I'll worry about clean ups :)
> 
> Pete
> 
> 

-- 
         Jeffrey Baitis - Associate Software Engineer

                    Evolution Robotics, Inc.
                     130 West Union Street
                       Pasadena CA 91103

 tel: 626.535.2776  |  fax: 626.535.2777  |  baitisj@evolution.com 

  reply	other threads:[~2003-03-04  2:14 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-01  3:48 CardBus on DBAu1500 Jeff Baitis
2003-03-01  6:15 ` Pete Popov
2003-03-04  2:14   ` Jeff Baitis [this message]
2003-03-04  2:25     ` Pete Popov
2003-03-08  2:08     ` CardBus on DBAu1500 -- IRQ storm? Jeff Baitis
2003-03-08  2:11       ` Pete Popov
2003-03-12  2:15         ` Jeff Baitis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030303181421.C20129@luca.pas.lab \
    --to=baitisj@evolution.com \
    --cc=linux-mips@linux-mips.org \
    --cc=ppopov@mvista.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.