Hello, pmbase_value = pci_read_long(LPCBridge, 0x40);
This neads to read
>pmbase_value = pci_read_long(LPCBridge, 0x40) & 0xfffffffe ;
I have not checked the data sheets but I would bet the lowest bit is enable.
From datasheet ICH3M, according to PMBASE:
31:16 -- reserved 15:7 -- Base address 6:1 -- reserved 0 -- Resource Indicator -- RO. tied to 1 to indicate I/O space
Should it be pmbase_value = pci_read_long(LPCBridge, 0x40) & 0xff80; ?
Is shifting necessary, too (see attached file)?
On my machine, output from my variant: Extracted address from PMBASE: 0x00000800 Offset to SMI_EN (PMBASE + 0x30): 0x00000830 Offset to SMI_STS (PMBASE + 0x34): 0x00000834 Value in SMI_EN: 0xffffffff Value in SMI_STS: 0xffffffff
Output from Stefans variant: the same as from above
Output from my variant with shift: Extracted address from PMBASE: 0x00000010 Offset to SMI_EN (PMBASE + 0x30): 0x00000040 Offset to SMI_STS (PMBASE + 0x34): 0x00000044 Value in SMI_EN: 0x00000801 Value in SMI_STS: 0x00000010
Output from Stefans variant with shift: the same as from above
Which of these four variants is correct?
Regards
Andon
--------------------------------- Building a website is a piece of cake. Yahoo! Small Business gives you all the tools to get online.