[LinuxBIOS] r395 - in LinuxBIOSv3/mainboard: adl/msm800sev amd/norwich artecgroup/dbe61 emulation/qemu-x86

Uwe Hermann uwe at hermann-uwe.de
Thu Jun 28 23:17:18 CEST 2007


On Thu, Jun 28, 2007 at 06:48:40PM +0200, svn at openbios.org wrote:
> Modified: LinuxBIOSv3/mainboard/artecgroup/dbe61/initram.c
> ===================================================================
> --- LinuxBIOSv3/mainboard/artecgroup/dbe61/initram.c	2007-06-28 16:21:38 UTC (rev 394)
> +++ LinuxBIOSv3/mainboard/artecgroup/dbe61/initram.c	2007-06-28 16:48:40 UTC (rev 395)
> @@ -43,9 +43,15 @@
>    */
>  #define GPIO_BASE            0x6100
>  
> +/* empty function to always fail smbus reads */

Is this done because every board needs this function but this one
doesn't use it?


> +int smbus_read_byte(unsigned device, unsigned address)

No unsigned, please use u16 or something.


> +{
> +	return -1;
> +}
> +
>  static void init_gpio(void)
>  {
> -	msr_t msr;
> +	struct msr_struct msr;
>  	printk(BIOS_DEBUG, "Initializing GPIO module...\n");
>  
>  	// initialize the GPIO LBAR
> @@ -63,7 +69,7 @@
>  	 *                      width in bits (byte 6,7)
>  	 *                    = Density per side (byte 31) * number of sides (byte 5) */
>  	/* 1. Initialize GLMC registers base on SPD values, do one DIMM for now */
> -	msr_t msr;
> +	struct msr_struct  msr;
>  
>  	msr.hi = 0x10075012;
>  	msr.lo = 0x00000040;
> @@ -101,13 +107,21 @@
>  /* Hold Count - how long we will sit in reset */
>  #define PLLMSRlo 0x00DE0000
>  
> +struct wmsr {
> +	u32 reg;
> +	struct msr_struct  msr;
> +} dbe61_msr[] = {
> +	{.reg = 0x10000020, {.lo = 0xfff80, .hi = 0x20000000}},
> +	{.reg = 0x10000021, {.lo = 0x80fffe0, .hi = 0x20000000}},
> +	{.reg = 0x40000020, {.lo = 0xfff80, .hi = 0x20000000}},
> +	{.reg = 0x40000021, {.lo = 0x80fffe0, .hi = 0x20000000}},
> +};
> +
>  static void dbe61_msr_init(void)
>  {
> -	__builtin_wrmsr(0x10000020, 0xfff80, 0x20000000);
> -        __builtin_wrmsr(0x10000021, 0x80fffe0, 0x20000000);
> -
> -        __builtin_wrmsr(0x40000020, 0xfff80, 0x20000000);
> -        __builtin_wrmsr(0x40000021, 0x80fffe0, 0x20000000);
> +	int i;
> +	for(i = 0; i < sizeof(dbe61_msr)/sizeof(dbe61_msr[0]); i++)

We want an ARRAY_SIZE macro in some header file for this, it's even
recommnended by the coding guidelines.


> +		wrmsr(dbe61_msr[i].reg, dbe61_msr[i].msr);
>  }
>  
>  int main(void)


Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20070628/5fdbd4bc/attachment.sig>


More information about the coreboot mailing list