November 30, 2016

Intel Galileo - Gen 2 - PCI devices

If you take some time to look at the Quark X1000 datasheet, you find out that most of the "peripherals" are set up as PCI devices. A handful of thing have fixed IO space addresses. This is just like a full blown motherboard (with BIOS). And the BIOS is required mind you, to probe all the devices on the bus and assign addresses. This at first seems surprising, but then isn't when you think about it a bit more. It also serves as a reminder to think carefully before you get any ideas about replacing the BIOS and doing any "bare metal" programming, but that is another topic.

As most folks know, if you have linux running, you can use lspci with different levels of verbosity to see what is out there on the PCI bus or buses. Here is what we see at 3 different verbosity levels:

root@galileo:~# lspci 
00:00.0 Host bridge: Intel Corporation Device 0958
00:14.0 SD Host controller: Intel Corporation Device 08a7 (rev 10)
00:14.1 Serial controller: Intel Corporation Device 0936 (rev 10)
00:14.2 USB controller: Intel Corporation Device 0939 (rev 10)
00:14.3 USB controller: Intel Corporation Device 0939 (rev 10)
00:14.4 USB controller: Intel Corporation Device 093a (rev 10)
00:14.5 Serial controller: Intel Corporation Device 0936 (rev 10)
00:14.6 Ethernet controller: Intel Corporation Device 0937 (rev 10)
00:14.7 Ethernet controller: Intel Corporation Device 0937 (rev 10)
00:15.0 Serial bus controller [0c80]: Intel Corporation Device 0935 (rev 10)
00:15.1 Serial bus controller [0c80]: Intel Corporation Device 0935 (rev 10)
00:15.2 Serial bus controller [0c80]: Intel Corporation Device 0934 (rev 10)
00:17.0 PCI bridge: Intel Corporation Device 11c3
00:17.1 PCI bridge: Intel Corporation Device 11c4
00:1f.0 ISA bridge: Intel Corporation Device 095e
These all have vendor ID 0x8086, the infamous and cleverly chosen value for Intel. The following lists descriptions and chapter in the Quark datasheet: There is a memory controller, but it is not a PCI device.

Note that the chip provides two ethernet controllers, but only one is implemented on the Galileo. The same is true for USB where we have 3 controllers, but only two on the Galileo board.

The Quark uses a pair of 32 bit registers in the IO address space to access PCI bus configuration registers. This is the old and venerable way of doing things and quite familiar.

root@galileo:~# lspci -v
00:00.0 Host bridge: Intel Corporation Device 0958
	Subsystem: Intel Corporation Device 095e
	Flags: bus master, fast devsel, latency 0
	Kernel driver in use: intel_qrk_sb

00:14.0 SD Host controller: Intel Corporation Device 08a7 (rev 10) (prog-if 01)
	Subsystem: Intel Corporation Device 08a7
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at 90010000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
	Kernel driver in use: sdhci-pci

00:14.1 Serial controller: Intel Corporation Device 0936 (rev 10) (prog-if 02 [16550])
	Subsystem: Intel Corporation Device 0936
	Flags: bus master, fast devsel, latency 0, IRQ 17
	Memory at 9000f000 (32-bit, non-prefetchable) [size=4K]
	Memory at 9000e000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
	Kernel driver in use: serial

00:14.2 USB controller: Intel Corporation Device 0939 (rev 10) (prog-if fe [USB Device])
	Subsystem: Intel Corporation Device 0939
	Flags: bus master, fast devsel, latency 0, IRQ 50
	Memory at 90004000 (32-bit, non-prefetchable) [size=8K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Kernel driver in use: pch_udc

00:14.3 USB controller: Intel Corporation Device 0939 (rev 10) (prog-if 20 [EHCI])
	Subsystem: Intel Corporation Device 0939
	Flags: bus master, fast devsel, latency 0, IRQ 19
	Memory at 9000d000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
	Capabilities: [c0] Power Management version 0
	Kernel driver in use: ehci-pci
	Kernel modules: ehci_pci

00:14.4 USB controller: Intel Corporation Device 093a (rev 10) (prog-if 10 [OHCI])
	Subsystem: Intel Corporation Device 093a
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at 9000c000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
	Kernel driver in use: ohci_hcd
	Kernel modules: ohci_hcd

00:14.5 Serial controller: Intel Corporation Device 0936 (rev 10) (prog-if 02 [16550])
	Subsystem: Intel Corporation Device 0936
	Flags: bus master, fast devsel, latency 0, IRQ 17
	Memory at 9000b000 (32-bit, non-prefetchable) [size=4K]
	Memory at 9000a000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
	Kernel driver in use: serial

00:14.6 Ethernet controller: Intel Corporation Device 0937 (rev 10)
	Subsystem: Intel Corporation Device 0937
	Flags: bus master, fast devsel, latency 0, IRQ 49
	Memory at 90002000 (32-bit, non-prefetchable) [size=8K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Kernel driver in use: stmmaceth
	Kernel modules: stmmac

00:14.7 Ethernet controller: Intel Corporation Device 0937 (rev 10)
	Subsystem: Intel Corporation Device 0937
	Flags: fast devsel, IRQ 255
	Memory at 90000000 (32-bit, non-prefetchable) [disabled] [size=8K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
	Kernel modules: stmmac

00:15.0 Serial bus controller [0c80]: Intel Corporation Device 0935 (rev 10)
	Subsystem: Intel Corporation Device 0935
	Flags: bus master, fast devsel, latency 0, IRQ 41
	Memory at 90009000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Kernel driver in use: ce4100_spi
	Kernel modules: spi_pxa2xx_pci

00:15.1 Serial bus controller [0c80]: Intel Corporation Device 0935 (rev 10)
	Subsystem: Intel Corporation Device 0935
	Flags: bus master, fast devsel, latency 0, IRQ 42
	Memory at 90008000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Kernel driver in use: ce4100_spi
	Kernel modules: spi_pxa2xx_pci

00:15.2 Serial bus controller [0c80]: Intel Corporation Device 0934 (rev 10)
	Subsystem: Intel Corporation Device 0934
	Flags: bus master, fast devsel, latency 0, IRQ 40
	Memory at 90007000 (32-bit, non-prefetchable) [size=4K]
	Memory at 90006000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Kernel driver in use: intel_qrk_gip
	Kernel modules: intel_qrk_gip

00:17.0 PCI bridge: Intel Corporation Device 11c3 (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 00002000-00002fff
	Memory behind bridge: 10000000-101fffff
	Prefetchable memory behind bridge: 0000000010200000-00000000103fffff
	Capabilities: [40] Express Root Port (Slot+), MSI 00
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
	Capabilities: [90] Subsystem: Intel Corporation Device 11c3
	Capabilities: [a0] Power Management version 2
	Kernel driver in use: pcieport

00:17.1 PCI bridge: Intel Corporation Device 11c4 (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: 00003000-00003fff
	Memory behind bridge: 10400000-105fffff
	Prefetchable memory behind bridge: 0000000010600000-00000000107fffff
	Capabilities: [40] Express Root Port (Slot+), MSI 00
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
	Capabilities: [90] Subsystem: Intel Corporation Device 11c4
	Capabilities: [a0] Power Management version 2
	Kernel driver in use: pcieport

00:1f.0 ISA bridge: Intel Corporation Device 095e
	Subsystem: Intel Corporation Device 095e
	Flags: fast devsel
	Kernel driver in use: lpc_sch

And here is the really verbose output:
root@galileo:~# lspci -vvvvv
00:00.0 Host bridge: Intel Corporation Device 0958
	Subsystem: Intel Corporation Device 095e
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Kernel driver in use: intel_qrk_sb

00:14.0 SD Host controller: Intel Corporation Device 08a7 (rev 10) (prog-if 01)
	Subsystem: Intel Corporation Device 08a7
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at 90010000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
		Address: 00000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: sdhci-pci

00:14.1 Serial controller: Intel Corporation Device 0936 (rev 10) (prog-if 02 [16550])
	Subsystem: Intel Corporation Device 0936
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin B routed to IRQ 17
	Region 0: Memory at 9000f000 (32-bit, non-prefetchable) [size=4K]
	Region 1: Memory at 9000e000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
		Address: 00000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: serial

00:14.2 USB controller: Intel Corporation Device 0939 (rev 10) (prog-if fe [USB Device])
	Subsystem: Intel Corporation Device 0939
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 32 bytes
	Interrupt: pin C routed to IRQ 50
	Region 0: Memory at 90004000 (32-bit, non-prefetchable) [size=8K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
		Address: fee0100c  Data: 41e1
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: pch_udc

00:14.3 USB controller: Intel Corporation Device 0939 (rev 10) (prog-if 20 [EHCI])
	Subsystem: Intel Corporation Device 0939
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 32 bytes
	Interrupt: pin D routed to IRQ 19
	Region 0: Memory at 9000d000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
		Address: 00000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [c0] Power Management version 0
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
		Bridge: PM- B3+
	Kernel driver in use: ehci-pci
	Kernel modules: ehci_pci

00:14.4 USB controller: Intel Corporation Device 093a (rev 10) (prog-if 10 [OHCI])
	Subsystem: Intel Corporation Device 093a
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at 9000c000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
		Address: 00000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: ohci_hcd
	Kernel modules: ohci_hcd

00:14.5 Serial controller: Intel Corporation Device 0936 (rev 10) (prog-if 02 [16550])
	Subsystem: Intel Corporation Device 0936
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin B routed to IRQ 17
	Region 0: Memory at 9000b000 (32-bit, non-prefetchable) [size=4K]
	Region 1: Memory at 9000a000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
		Address: 00000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: serial

00:14.6 Ethernet controller: Intel Corporation Device 0937 (rev 10)
	Subsystem: Intel Corporation Device 0937
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin C routed to IRQ 49
	Region 0: Memory at 90002000 (32-bit, non-prefetchable) [size=8K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
		Address: fee0100c  Data: 41d1
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: stmmaceth
	Kernel modules: stmmac

00:14.7 Ethernet controller: Intel Corporation Device 0937 (rev 10)
	Subsystem: Intel Corporation Device 0937
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin D routed to IRQ 255
	Region 0: Memory at 90000000 (32-bit, non-prefetchable) [disabled] [size=8K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable+ 64bit-
		Address: 00000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Kernel modules: stmmac

00:15.0 Serial bus controller [0c80]: Intel Corporation Device 0935 (rev 10)
	Subsystem: Intel Corporation Device 0935
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 41
	Region 0: Memory at 90009000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
		Address: fee0100c  Data: 41b1
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: ce4100_spi
	Kernel modules: spi_pxa2xx_pci

00:15.1 Serial bus controller [0c80]: Intel Corporation Device 0935 (rev 10)
	Subsystem: Intel Corporation Device 0935
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin B routed to IRQ 42
	Region 0: Memory at 90008000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
		Address: fee0100c  Data: 41c1
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: ce4100_spi
	Kernel modules: spi_pxa2xx_pci

00:15.2 Serial bus controller [0c80]: Intel Corporation Device 0934 (rev 10)
	Subsystem: Intel Corporation Device 0934
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin C routed to IRQ 40
	Region 0: Memory at 90007000 (32-bit, non-prefetchable) [size=4K]
	Region 1: Memory at 90006000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable+ 64bit-
		Address: fee0100c  Data: 41a1
		Masking: 00000000  Pending: 00000000
	Kernel driver in use: intel_qrk_gip
	Kernel modules: intel_qrk_gip

00:17.0 PCI bridge: Intel Corporation Device 11c3 (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=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 00002000-00002fff
	Memory behind bridge: 10000000-101fffff
	Prefetchable memory behind bridge: 0000000010200000-00000000103fffff
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
		LnkCap:	Port #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <4us
			ClockPM- Surprise- LLActRep+ BwNot-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
			Slot #1, PowerLimit 10.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range BC, TimeoutDis+, LTR-, OBFF Not Supported ARIFwd-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Capabilities: [90] Subsystem: Intel Corporation Device 11c3
	Capabilities: [a0] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Kernel driver in use: pcieport

00:17.1 PCI bridge: Intel Corporation Device 11c4 (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=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: 00003000-00003fff
	Memory behind bridge: 10400000-105fffff
	Prefetchable memory behind bridge: 0000000010600000-00000000107fffff
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
		LnkCap:	Port #2, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <4us
			ClockPM- Surprise- LLActRep+ BwNot-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
			Slot #2, PowerLimit 10.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range BC, TimeoutDis+, LTR-, OBFF Not Supported ARIFwd-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Capabilities: [90] Subsystem: Intel Corporation Device 11c4
	Capabilities: [a0] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Kernel driver in use: pcieport

00:1f.0 ISA bridge: Intel Corporation Device 095e
	Subsystem: Intel Corporation Device 095e
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Kernel driver in use: lpc_sch
This very well may be handy:
root@galileo:~# lsmod
Module                  Size  Used by
bnep                   17673  2 
g_acm_ms               34390  5 
libcomposite           24064  1 g_acm_ms
usbhid                 23097  0 
usb_storage            46592  0 
stmmac                 48256  0 
pppoe                  17501  0 
pppox                  12980  1 pppoe
ppp_generic            23216  2 pppoe,pppox
slhc                   12965  1 ppp_generic
pch_udc                31342  0 
udc_core               14227  2 libcomposite,pch_udc
ohci_hcd               26434  0 
iwlwifi                81402  0 
cfg80211              432893  1 iwlwifi
gpio_sch               17990  1 
evdev                  17377  2 
ehci_pci               12656  0 
ehci_hcd               44417  1 ehci_pci
adc1x8s102             12766  0 
industrialio_triggered_buffer    12686  1 adc1x8s102
kfifo_buf              13032  1 industrialio_triggered_buffer
industrialio           43200  3 industrialio_triggered_buffer,adc1x8s102,kfifo_buf
spi_pxa2xx             21680  0 
spi_pxa2xx_pci         13049  1 spi_pxa2xx
efivars                22958  0 
spidev                 13053  0 
btusb                  17915  0 
i2c_dev                13142  0 
bluetooth             196274  8 bnep,btusb
pca9685                13582  0 
rfkill                 20731  4 cfg80211,bluetooth
regmap_i2c             12714  1 pca9685
gpio_pca953x           17384  6 
usbcore               144164  6 btusb,usb_storage,ohci_hcd,ehci_hcd,ehci_pci,usbhid
usb_common             12481  3 udc_core,libcomposite,usbcore
at24                   12949  0 
intel_qrk_gip          20101  3 
uio                    18508  2 intel_qrk_gip,gpio_sch
ipv6                  252405  24 
They say the above is just a nicely formatted version of what follows:
cat /proc/modules
bnep 17673 2 - Live 0xd27c1000
g_acm_ms 34390 5 - Live 0xd2845000
libcomposite 24064 1 g_acm_ms, Live 0xd27a4000
usbhid 23097 0 - Live 0xd27ac000
usb_storage 46592 0 - Live 0xd2878000
stmmac 48256 0 - Live 0xd27b4000
pppoe 17501 0 - Live 0xd279e000
pppox 12980 1 pppoe, Live 0xd2769000
ppp_generic 23216 2 pppoe,pppox, Live 0xd2792000
slhc 12965 1 ppp_generic, Live 0xd275c000
pch_udc 31342 0 - Live 0xd2789000
udc_core 14227 2 libcomposite,pch_udc, Live 0xd26fb000
ohci_hcd 26434 0 - Live 0xd2761000
iwlwifi 81402 0 - Live 0xd2774000
cfg80211 432893 1 iwlwifi, Live 0xd27da000
gpio_sch 17990 1 - Live 0xd2753000
evdev 17377 2 - Live 0xd274d000
ehci_pci 12656 0 - Live 0xd26f6000
ehci_hcd 44417 1 ehci_pci, Live 0xd2741000
adc1x8s102 12766 0 - Live 0xd26e5000 (C)
industrialio_triggered_buffer 12686 1 adc1x8s102, Live 0xd26e0000
kfifo_buf 13032 1 industrialio_triggered_buffer, Live 0xd26f1000
industrialio 43200 3 adc1x8s102,industrialio_triggered_buffer,kfifo_buf, Live 0xd2735000
spi_pxa2xx 21680 0 - Live 0xd26ea000
spi_pxa2xx_pci 13049 1 spi_pxa2xx, Live 0xd26d2000
efivars 22958 0 - Live 0xd26d9000
spidev 13053 0 - Live 0xd26c6000
btusb 17915 0 - Live 0xd26cc000
i2c_dev 13142 0 - Live 0xd26b3000
bluetooth 196274 8 bnep,btusb, Live 0xd2704000
pca9685 13582 0 - Live 0xd26c1000
rfkill 20731 4 cfg80211,bluetooth, Live 0xd26ba000
regmap_i2c 12714 1 pca9685, Live 0xd262b000
gpio_pca953x 17384 6 - Live 0xd26ad000
usbcore 144164 6 usbhid,usb_storage,ohci_hcd,ehci_pci,ehci_hcd,btusb, Live 0xd2645000
usb_common 12481 3 libcomposite,udc_core,usbcore, Live 0xd263e000
at24 12949 0 - Live 0xd2639000
intel_qrk_gip 20101 3 - Live 0xd2633000
uio 18508 2 gpio_sch,intel_qrk_gip, Live 0xd2625000
ipv6 252405 16 - Live 0xd266e000
cat /proc/interrupts
           CPU0       
  0:         43   IO-APIC-edge      timer
  7:          2   IO-APIC-edge    
  8:          1   IO-APIC-edge      rtc0
  9:          0   IO-APIC-fasteoi   acpi, gpio_sch
 16:       5653   IO-APIC-fasteoi   mmc0, ohci_hcd:usb2
 17:       1852   IO-APIC-fasteoi   serial
 19:          0   IO-APIC-fasteoi   ehci_hcd:usb1
 37:          0   pca953x  gpiolib
 40:        220   PCI-MSI-edge      intel_qrk_gip
 41:          0   PCI-MSI-edge      pxa2xx-spi.0
 42:          0   PCI-MSI-edge      pxa2xx-spi.1
 49:          2   PCI-MSI-edge      pch_udc
 50:        215   PCI-MSI-edge      enp0s20f6
 57:          0  intel_qrk_gip_gpio  0-0027
NMI:          0   Non-maskable interrupts
LOC:      50076   Local timer interrupts
SPU:          0   Spurious interrupts
PMI:          0   Performance monitoring interrupts
IWI:          0   IRQ work interrupts
RTR:          0   APIC ICR read retries
TRM:          0   Thermal event interrupts
THR:          0   Threshold APIC interrupts
MCE:          0   Machine check exceptions
MCP:          0   Machine check polls
ERR:          2
MIS:          0
And that is all for now.
Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org