From: Christian Jaeger <christian.jaeger@ethlife.ethz.ch>
To: linux-kernel@vger.kernel.org
Subject: Need help for pci driver on powerpc
Date: Sun, 23 Mar 2003 18:30 +0100 [thread overview]
Message-ID: <20030323171955Z263126-25575+35740@vger.kernel.org> (raw)
Hello
Somehow I can't access a PCI card on a PowerMac. I once wrote a
driver for this card on MacOS8, but that does not seem to help me so
far.
It's a digital I/O card Computer Boards PCI-DIO96H showing this info
in lspci -vvn:
00:0e.0 Class ffff: 1307:0017 (rev 02) (prog-if ff)
Subsystem: 1307:0017
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 24
Region 1: I/O ports at 0800 [disabled] [size=128]
Region 2: I/O ports at 0880 [disabled] [size=16]
This is what I am doing (irrelevant parts stripped):
error= pci_enable_device(mydevicep);
mybase1_phys= pci_resource_start(dev, 2);
mybase1length= pci_resource_len(dev,2);
// gives: address 0x00000880, len 16
error = pci_request_regions (dev, NAME);
pci_set_master (dev);
mybase1= (unsigned long)ioremap(mybase1_phys,mybase1length);
// gives: 0, while the following is printed to the kernel log:
// __ioremap(): phys addr 0 is RAM lr c0010c34
I have also tried the following:
- pass mybase1_phys to phys_to_virt() (this gave 0xc0000880)
and pass that for ioremap. The latter then returned
address 0xc7898880. But I then got this:
Mar 23 17:09:34 Sensor kernel: Machine check in kernel mode.
Mar 23 17:09:34 Sensor kernel: Caused by (from SRR1=49030): Transfer error ack signal
Mar 23 17:09:34 Sensor kernel: Oops: machine check, sig: 7
(...)
- pass mybase1_phys to phys_to_bus(), but insmod then gives
"unresolved symbol phys_to_bus".
- ~same thing for pci_resource_start(dev, 1) instead of 2.
(- and many further combinations)
Questions:
- What does pci_resource_start return, a phys/virt/bus address?
- What does ioremap expect?
- I'm seeing a special case in the source of the C ioremap() version,
which assumes ISA for an address as low as 0x00000880. Thus it seems
like I have to convert that address? On the other hand, the 8139too
driver which I've glimpsed at does not do any conversion.
- do I need pci_set_master? Which other PCI calls are important?
- where do I find up to date information about handling PCI on linux?
The Documentation/pci.txt and Documentation/IO-mapping.txt files
do not mention many important details.
You can see my code at:
http://pflanze.mine.nu/~chris/linux/sensor/sensor.c
Thanks for your help
Christian.
next reply other threads:[~2003-03-23 17:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-03-23 17:30 Christian Jaeger [this message]
2003-03-23 17:41 ` Benjamin Herrenschmidt
2003-03-23 18:53 ` Alan Cox
2003-03-25 10:32 ` Christian Jaeger
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=20030323171955Z263126-25575+35740@vger.kernel.org \
--to=christian.jaeger@ethlife.ethz.ch \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®