If you want to look at the GPIOs, from the 82801DB datasheet, it looks like you should look at:
9.1.14 GPIOBASE—GPIO Base Address (LPC I/F—D31:F0) and 9.1.15 GPIO_CNTL—GPIO Control (LPC I/F—D31:F0) (offsets 58 and 5c in D31:f0, lspci -xxx as root is one way to dump)
What value is in those registers? Check to see if an address is assigned, and if the decode is enabled. If so, you have something to dump.
That register is not a real PCI BAR, so it may not show up in /proc/ioports
Once you have the base address, you can read the GPIO control registers from /dev/port, with the seek equal to the base address. It looks like the register set is described in:
9.10 General Purpose I/O Registers (D31:F0)
and Table 9-12 in the 82801DB datasheet.
On Feb 18, 2008 8:15 AM, joe@smittys.pointclark.net wrote:
Quoting Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net:
On 18.02.2008 02:45, joe@smittys.pointclark.net wrote:
Quoting Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net:
On 16.02.2008 17:57, joe@smittys.pointclark.net wrote:
Hello, How do I dump the GPIO I/O Registers in linux. I need to dump the GPIO's from the southbridge. Anyone?
Depends on the southbridge. It could be directly/indirectly memory-mapped or port-based. Simply tell us what the data sheet says about reading the GPIO state and we can help.
The southbridge is the Intel 82801DB ICH4. I don't see anything in the datasheet about reading the GPIO state....just says:
The control for the general purpose I/O signals is handled through a separate 64-byte I/O space.
I can find out the base offset address from the LPC pci configuration registers, but how do I dump it into human readable form??
Is this a memory address or I/O port number? Once you know that, you can modify existing utilities for your purpose. If you have no idea, tell us the values and we can guess. Having /proc/ioports and /proc/iomem contents would help guessing.
Here is /proc/ioports: 0000-001f : dma1 0020-0021 : pic1 0040-0043 : timer0 0050-0053 : timer1 0060-006f : keyboard 0070-0077 : rtc 0080-008f : dma page reg 00a0-00a1 : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 0376-0376 : ide1 03c0-03df : vga+ 03f8-03ff : serial 0400-047f : 0000:00:1f.0 0400-0403 : ACPI PM1a_EVT_BLK 0404-0405 : ACPI PM1a_CNT_BLK 0408-040b : ACPI PM_TMR 0410-0415 : ACPI CPU throttle 0420-0420 : ACPI PM2_CNT_BLK 0428-042f : ACPI GPE0_BLK 0460-047f : iTCO_wdt 0500-053f : 0000:00:1f.0 0a00-0a3f : pnp 00:0b 0cf8-0cff : PCI conf1 c000-cfff : PCI Bus #01 cc00-cc3f : 0000:01:08.0 cc00-cc3f : e100 d800-d81f : 0000:00:1d.0 d800-d81f : uhci_hcd d880-d89f : 0000:00:1d.1 d880-d89f : uhci_hcd dc00-dc1f : 0000:00:1d.2 dc00-dc1f : uhci_hcd e000-e01f : 0000:00:1f.3 e000-e01f : i801_smbus e080-e0bf : 0000:00:1f.5 e080-e0bf : Intel 82801DB-ICH4 e400-e4ff : 0000:00:1f.5 e400-e4ff : Intel 82801DB-ICH4 e800-e8ff : 0000:00:1f.6 ec00-ec7f : 0000:00:1f.6 ffa0-ffaf : 0000:00:1f.1 ffa0-ffa7 : ide0 ffa8-ffaf : ide1
Here is /proc/iomem: 00000000-0009fbff : System RAM 00000000-00000000 : Crash kernel 0009fc00-0009ffff : reserved 000a0000-000bffff : Video RAM area 000c0000-000c7fff : Video ROM 000f0000-000fffff : System ROM 00100000-077cffff : System RAM 00400000-006200ec : Kernel code 006200ed-00736543 : Kernel data 077d0000-077defff : ACPI Tables 077df000-077fffff : ACPI Non-volatile Storage 10000000-100003ff : 0000:00:1f.1 e8000000-efffffff : 0000:00:02.1 f0000000-f7ffffff : 0000:00:02.0 ff700000-ff7fffff : PCI Bus #01 ff7ff000-ff7fffff : 0000:01:08.0 ff7ff000-ff7fffff : e100 ff980000-ff9fffff : 0000:00:02.1 ffa7f400-ffa7f7ff : 0000:00:1d.7 ffa7f400-ffa7f7ff : ehci_hcd ffa7f800-ffa7f8ff : 0000:00:1f.5 ffa7f800-ffa7f8ff : Intel 82801DB-ICH4 ffa7fc00-ffa7fdff : 0000:00:1f.5 ffa7fc00-ffa7fdff : Intel 82801DB-ICH4 ffa80000-ffafffff : 0000:00:02.0 ffc00000-fff7ffff : pnp 00:08
According to the original bios I think the 64 bytes of I/O space for GPIO is 0x14. Does that make sense???
Thanks - Joe
-- coreboot mailing list coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot