On Tue, 28 Apr 2009 22:46:54 -0700, ron minnich rminnich@gmail.com wrote:
On Tue, Apr 28, 2009 at 8:38 PM, Joseph Smith joe@settoplinux.org
wrote:
On Mon, 27 Apr 2009 10:14:02 +0200, Stefan Reinauer
wrote:
On 27.04.2009 9:55 Uhr, Joseph Smith wrote:
Well, I have confirmed the problem. Looks there is something crazy
about
how the ethernet and modem (even though the IP1000 doesn't actually
have
a
modem) are setup. If I disable the ICH4 ethernet and enable the AC97
ICH4
modem, sure as shit it boots up everytime (VGA too) and all IRQS look great. If I enable both of them EVERYTHING gets IRQ 0, and I have
issues.
If I enable ethernet and disable the modem (this is the way it should
be)
EVERYTHING gets IRQ 0, and I have issues.....
Anyone seen this kind of thing before? I have no idea how to fix this one....
Well now were getting somewhere. It is as I thought. The modem and
Ethernet
were not playing nice causing io read/write issues under 0x200, hence
the
unexpected exception errors. The IRQ 0 problems also make sense because
the
interrupt controllers live in that io area correct? I guess on this
board
they were not designed to coincide...there isn't an actual on-board
modem
anyways.
So here is what I did to get it working, and this is the part I need
help
with.
- In auto.c I disabled the modem right off through the LPC device:
/* Set the LPC device statically. */ dev = PCI_DEV(0x0, 0x1f, 0x0);
/* Disable Modem. */ pci_write_config8(dev, 0xf2, 0x40);
- I completely removed the modem code from
src/mainboard/thomson/ip1000/Config.lb
- device pci 1f.6 off end # AC'97 modem
- Then I completely removed the modem code from
src/southbridge/intel/i82801xx/i82801xx_ac97.c
-static const struct pci_driver i82801db_ac97_modem __pci_driver = {
- .ops = &ac97_ops,
- .vendor = PCI_VENDOR_ID_INTEL,
- .device = PCI_DEVICE_ID_INTEL_82801DB_AC97_MODEM,
-};
And boom :-) I am booting like a rocket ship in action:-)
I have tried Just step 1 with no luck, and step 1 & 2 with no luck. So even with the device disabled via the LPC and coreboot something from
the
i82801db_ac97_modem() is still partially initializing causing this io crazyness. I can submit a patch for steps 1-2 but....my question is how
can
I completely disable the i82801db_ac97_modem() driver without having to manually delete code every time I use a new revision???
Maybe a #ifdef to global disable modem define???
You've got this working but you are kind of abusing the build system, esp. if you are modifying files like i82801xx_ac97.c. I will leave it to someone else to discuss why you don't want to do step 3 ... I'm gonna go sleep now :-)
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....