[coreboot] first output: dbe62 and v3
Marc Jones
marc.jones at amd.com
Wed Mar 5 18:13:41 CET 2008
ron minnich wrote:
> attached. It dies and I'm sure it is bad ram settings, but it's a start.
>
> One thing I plan to change pretty soon: power button control can move
> from stage1 to stage2, and power button control will be managed in dts
> (another dts setting we would NOT want visible in Kconfig; you could
> render a board totally unbootable and unrepairable with the wrong
> setting. Kconfig should be for settings that are safe to change).
>
This would be great. It should be easy to add a dts item and call
cs5536_setup_power_button or not. Moving it to stage 2 should be fine
BUT until the power button is setup it won't work. Some people might not
like that if you hang or delay somewhere prior to it being setup.
You might be able to move a few of the following but most are needed to
do the ram init and the others are a chicken/egg problem.
> There are other things in stage1 for the lx that we should try to move
> to stage 2:
> cs5536_setup_extmsr();
cs5536_setup_extmsr() can't be moved. It is required to write the MSR in
the 5536 which is neeeded to setup the SMBus for RAM init.
> cs5536_setup_cis_mode();
>
These are the sideband signals from the 5536 to the LX. These include
int, smi, susp, and some others. You could move it BUT if you setup the
IRQ in the uart the 5536 could do an int and then you would miss it.
Doing it early avoids issues.
> msr = rdmsr(GLCP_SYS_RSTPLL);
> if (msr.lo & (0x3f << 26)) {
> /* PLL is already set and we are reboot from PLL reset. */
> return;
> }
>
> cs5536_setup_idsel();
Need this to do stage2. Without it the 5536 won't decode PCI.
> cs5536_usb_swapsif();
This can move but needs to be done before any the other usbsetup.
> cs5536_setup_iobase();
This is required before raminit. Specificly the smbus io bar but if you
set one you should probably just set them all. Once VSA loads these
settings are reflected in the BAR and then are changed during PCI
enumeration.
> cs5536_setup_smbus_gpio();
This is required to set SMBUS sda/scl lines. There is a question how
common this is in the function header. I have never seen these gpios
used for anything else. Their purpose is to be the smbus lines.
> /* cs5536_enable_smbus(); -- Leave this out for now. */
I just noticed that this code moved to smbus_initram which isn't really
correct. SMBus is important for reading the SPD but it isn't the only
device on the SMBus. Even if you don't have an SPD you still might like
SMBus setup (thermal, gpio expander, etc). If you need SMBus for RAM
init it needs to be done early, if not it can be done in stage2 but I
think that it being in two places would be confusing.
> // cs5536_setup_power_button();
>
Discussed it above.
Marc
--
Marc Jones
Senior Firmware Engineer
(970) 226-9684 Office
mailto:Marc.Jones at amd.com
http://www.amd.com/embeddedprocessors
More information about the coreboot
mailing list