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
next prev parent 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.