[SunPCI driver] need info for the PCI-PCI bridge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hello

I have some sunpci card and I want to made a driver for it.
It is a card which includes an x86 processor, RAM, expansion ports, and an onboard graphics controller, allowing complete x86 operating environments on Sun Workstations.

My first goal is to be able to see all devices present on this card and use it under Linux.
My second goal is to use it like we can use it under Solaris.

When plugged, I can see it with prtconf
        Node 0xf0092a38
            .node:  f0092a38
            interrupt-map:
00010000.00000000.00000000.00000001.f0064548.00000019.00010000.00000000.00000000.00000002.f0064548.00000002.00010000.00000000.00000000.00000003.f0064548.00000018.00010000.00000000.00000000.00000004.f0064548.00000008.00010800.00000000.00000000.00000001.f0064548.0000000a.00010800.00000000.00000000.00000002.f0064548.0000001b.00010800.00000000.00000000.00000003.f0064548.0000000b.00010800.00000000.00000000.00000004.f0064548.0000001a.00011000.00000000.00000000.00000001.f0064548.00000015.00011000.00000000.00000000.00000002.f0064548.00000005.00011000.00000000.00000000.00000003.f0064548.00000014.00011000.00000000.00000000.00000004.f0064548.00000004
            interrupt-map-mask:  00fff800.00000000.00000000.00000007
            ranges:
            bus-range:  00000001.00000001
            compatible:  70636931.3031312c.32342e33.00706369.31303131.2c323400.70636963.6c617373.2c303630.34303000.70636963.6c617373.2c303630.3400
            reg:  00002800.00000000.00000000.00000000.00000000
            #address-cells:  00000003
            #size-cells:  00000002
            device_type: 'pci'
            name: 'pci'
            fast-back-to-back:
            devsel-speed:  00000001
            class-code:  00060400
            latency-timer:  00000040
            cache-line-size:  00000010
            revision-id:  00000003
            device-id:  00000024
            vendor-id:  00001011

and lspci
00:05.0 PCI bridge: Digital Equipment Corporation DECchip 21152 (rev 03) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 64, Cache Line Size: 64 bytes
	Region 0: [virtual] Memory at fffffe0100000000 (32-bit, non-prefetchable) [size=1]
	Region 1: [virtual] Memory at fffffe0100000000 (32-bit, non-prefetchable) [size=1]
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 00001000-00000fff
	Memory behind bridge: 04000000-03ffffff
	Prefetchable memory behind bridge: fffffffffff00000-00000000000fffff
	Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	[virtual] Expansion ROM at fffffe0100000000 [disabled] [size=1]
	BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [dc] Power Management version 1
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=220mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
		Bridge: PM- B3+

You can see that ranges for I/O, memory and prefetchable memory are unusable.

I think this is because the value "ranges" in OF(open-firmware) is NULL.
And so of_scan_pci_bridge() use pci_cfg_fake_ranges() for getting limits values directly from the sunpci card.
But theses values are 0.

So I have some questions
- Does setting manually IO/mem limits in the card (via a pci_write_config_word(dev, PCI_MEMORY_LIMIT, somevalue); for example) works ? and which values to set ? (base + 0xfff/0xfffff ?)
- How can OpenFirmware could be aware of the IO/memory ranges of the sunpci cards ? perhaps via an OBP command at start ?


Thanks in advance

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux