On Wed, 29 Apr 2009 15:11:23 +0200, Stefan Reinauer stepan@coresystems.de wrote:
On 29.04.2009 14:27 Uhr, Joseph Smith wrote:
Yes, in a perfect world I should just have to turn the device off in src/mainboard/thomson/ip1000/Config.lb and I would never see any traces
of
the device.
Quote from the 82801DB datasheet LPC register 0xF2: "Software sets this bit to disable the AC ’97 modem controller
function.
BIOS must not enable I/O or memory address space decode, interrupt generation, or any other functionality of functions that are to be disabled."
But just turning the device off is not performing all of the above functions required by the southbridge. If anyone has any suggestions on
how
to really disable this device without touching src/southbridge/intel/i82801xx/i82801xx_ac97.c I would be glad to hear them....
The code in src/southbridhe/i82801xx/i82801xx.c tries to take care of the F2 register settings. So, if you don't have a device pci 1f.6 off end in your config.lb it might just get enabled by i82801xx.c again
Right and i82801xx_enable() works ok for me but it apears to do it backwards...in each device file. For example in i82801xx_ac97.c ac97_ops:
static const struct device_operations ac97_ops = { .read_resources = pci_dev_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .init = 0, .scan_bus = 0, .enable = i82801xx_enable,
It appears the .enable = i82801xx_enable, is happening last. Therefore up to this point coreboot is pci_dev_read_resources, pci_dev_set_resources, and pci_dev_enable_resources. Just because it is turned off in the mainboard Config.lb The LPC device (not coreboot) is still allocating resources because it doesn't know the device is disabled until the end (at this point it is too late). You might not see the device in Linux but the resources are still allocated to it. Am I correct in this theory? It should be setup so that if the device is indeed turned off in mainboard Config.lb that the i82801xx_enable() is set first and then if the device is indeed turned off ignores the resource functions.
I will test this theory tonight and post back the results, but I think this is what is happening here.