[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 

>         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 Jones
Senior Firmware Engineer
(970) 226-9684 Office
mailto:Marc.Jones at amd.com

More information about the coreboot mailing list