<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
We used pci_cf8_conf1.{read,write}{8,16,32} because the pci_read_config32 doesnt<BR>
work in mainboard stage according to our test result. I dont know the current status.<BR>
We havent merge the code from comunity in weeks.&nbsp;And I havent test the patch. But <BR>
I think, I just think&nbsp;it will not work.<BR>
&nbsp;<BR>
Zheng<BR><BR>&gt; Date: Fri, 13 Feb 2009 11:54:57 +0100<BR>&gt; From: c-d.hailfinger.devel.2006@gmx.net<BR>&gt; To: coreboot@coreboot.org<BR>&gt; Subject: [coreboot] [PATCH] Clean up DBM690T and Pistachio<BR>&gt; <BR>&gt; Clean up DBM690T and Pistachio targets:<BR>&gt; - Use MAINBOARD_VENDOR and MAINBOARD_PART_NUMBER wherever possible<BR>&gt; instead of filling out the strings by hand.<BR>&gt; - Avoid using the mainboard name in function names unless explicitly<BR>&gt; required by the build system.<BR>&gt; - Use pci_{read,write}_config{8,16,32} instead of<BR>&gt; pci_cf8_conf1.{read,write}{8,16,32} in mainboard.c.<BR>&gt; - Remove unused variables.<BR>&gt; - Improve accuracy of some thermal comments.<BR>&gt; - Improve formatting and formatting consistency.<BR>&gt; <BR>&gt; With this patch, porting to a new AMD 690/SB600 board becomes even<BR>&gt; easier because there is less stuff to replace. A nice side effect is<BR>&gt; that the mainboard directories of DBM690T and Pistachio are now almost<BR>&gt; identical.<BR>&gt; <BR>&gt; No functional changes. Compile tested. (You have to revert r3942 to get<BR>&gt; any 690/SB600 target to compile. Simply run "svn diff -c 3942|patch -p0<BR>&gt; -R" in the main source directory.)<BR>&gt; <BR>&gt; Signed-off-by: Carl-Daniel Hailfinger &lt;c-d.hailfinger.devel.2006@gmx.net&gt;<BR>&gt; <BR>&gt; Index: corebootv2/src/mainboard/amd/pistachio/resourcemap.c<BR>&gt; ===================================================================<BR>&gt; --- corebootv2/src/mainboard/amd/pistachio/resourcemap.c (revision 3943)<BR>&gt; +++ corebootv2/src/mainboard/amd/pistachio/resourcemap.c (working copy)<BR>&gt; @@ -17,7 +17,7 @@<BR>&gt; * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA<BR>&gt; */<BR>&gt; <BR>&gt; -static void setup_pistachio_resource_map(void)<BR>&gt; +static void setup_mb_resource_map(void)<BR>&gt; {<BR>&gt; static const unsigned int register_values[] = {<BR>&gt; /* Careful set limit registers before base registers which contain the enables */<BR>&gt; Index: corebootv2/src/mainboard/amd/pistachio/chip.h<BR>&gt; ===================================================================<BR>&gt; --- corebootv2/src/mainboard/amd/pistachio/chip.h (revision 3943)<BR>&gt; +++ corebootv2/src/mainboard/amd/pistachio/chip.h (working copy)<BR>&gt; @@ -21,6 +21,6 @@<BR>&gt; <BR>&gt; struct mainboard_amd_pistachio_config<BR>&gt; {<BR>&gt; - unsigned long uma_size; /* How many UMA should be used in memory for TOP. */<BR>&gt; + u32 uma_size; /* How many UMA should be used in memory for TOP. */<BR>&gt; };<BR>&gt; <BR>&gt; Index: corebootv2/src/mainboard/amd/pistachio/mainboard.c<BR>&gt; ===================================================================<BR>&gt; --- corebootv2/src/mainboard/amd/pistachio/mainboard.c (revision 3943)<BR>&gt; +++ corebootv2/src/mainboard/amd/pistachio/mainboard.c (working copy)<BR>&gt; @@ -83,7 +83,6 @@<BR>&gt; u16 word;<BR>&gt; u32 dword;<BR>&gt; device_t sm_dev;<BR>&gt; - struct bus pbus;<BR>&gt; <BR>&gt; /* set adt7475 */<BR>&gt; ADT7475_write_byte(0x40, 0x04);<BR>&gt; @@ -116,11 +115,11 @@<BR>&gt; /* remote 2 therm temp limit (95C) */<BR>&gt; ADT7475_write_byte(0x6c, 0x9f);<BR>&gt; <BR>&gt; - /* PWM 1 minimum duty cycle (37%) */<BR>&gt; + /* PWM 1 minimum duty cycle (37.6%) */<BR>&gt; ADT7475_write_byte(0x64, 0x60);<BR>&gt; /* PWM 1 Maximum duty cycle (100%) */<BR>&gt; ADT7475_write_byte(0x38, 0xff);<BR>&gt; - /* PWM 3 minimum duty cycle (37%) */<BR>&gt; + /* PWM 3 minimum duty cycle (37.6%) */<BR>&gt; ADT7475_write_byte(0x66, 0x60);<BR>&gt; /* PWM 3 Maximum Duty Cycle (100%) */<BR>&gt; ADT7475_write_byte(0x3a, 0xff);<BR>&gt; @@ -167,28 +166,19 @@<BR>&gt; <BR>&gt; /* GPM5 as GPIO not USB OC */<BR>&gt; sm_dev = dev_find_slot(0, PCI_DEVFN(0x14, 0));<BR>&gt; - dword =<BR>&gt; - pci_cf8_conf1.read32(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x64);<BR>&gt; + dword = pci_read_config32(sm_dev, 0x64);<BR>&gt; dword |= 1 &lt;&lt; 19;<BR>&gt; - pci_cf8_conf1.write32(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x64, dword);<BR>&gt; + pci_write_config32(sm_dev, 0x64, dword);<BR>&gt; <BR>&gt; /* Enable Client Management Index/Data registers */<BR>&gt; - dword =<BR>&gt; - pci_cf8_conf1.read32(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x78);<BR>&gt; + dword = pci_read_config32(sm_dev, 0x78);<BR>&gt; dword |= 1 &lt;&lt; 11; /* Cms_enable */<BR>&gt; - pci_cf8_conf1.write32(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x78, dword);<BR>&gt; + pci_write_config32(sm_dev, 0x78, dword);<BR>&gt; <BR>&gt; /* MiscfuncEnable */<BR>&gt; - byte =<BR>&gt; - pci_cf8_conf1.read8(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x41);<BR>&gt; + byte = pci_read_config8(sm_dev, 0x41);<BR>&gt; byte |= (1 &lt;&lt; 5);<BR>&gt; - pci_cf8_conf1.write8(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x41, byte);<BR>&gt; + pci_write_config8(sm_dev, 0x41, byte);<BR>&gt; <BR>&gt; /* set GPM5 as input */<BR>&gt; /* set index register 0C50h to 13h (miscellaneous control) */<BR>&gt; @@ -228,12 +218,9 @@<BR>&gt; pm2_iowrite(0x42, byte);<BR>&gt; <BR>&gt; /* set GPIO 64 to input */<BR>&gt; - word =<BR>&gt; - pci_cf8_conf1.read16(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x56);<BR>&gt; + word = pci_read_config16(sm_dev, 0x56);<BR>&gt; word |= 1 &lt;&lt; 7;<BR>&gt; - pci_cf8_conf1.write16(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x56, word);<BR>&gt; + pci_write_config16(sm_dev, 0x56, word);<BR>&gt; <BR>&gt; /* set GPIO 64 internal pull-up */<BR>&gt; byte = pm2_ioread(0xf0);<BR>&gt; @@ -269,12 +256,12 @@<BR>&gt; * enable the dedicated function in pistachio board.<BR>&gt; * This function called early than rs690_enable.<BR>&gt; *************************************************/<BR>&gt; -void pistachio_enable(device_t dev)<BR>&gt; +void mb_enable(device_t dev)<BR>&gt; {<BR>&gt; struct mainboard_amd_pistachio_config *mainboard =<BR>&gt; (struct mainboard_amd_pistachio_config *)dev-&gt;chip_info;<BR>&gt; <BR>&gt; - printk_info("Mainboard Pistachio Enable. dev=0x%x\n", dev);<BR>&gt; + printk_info("Mainboard " MAINBOARD_PART_NUMBER " Enable. dev=0x%x\n", dev);<BR>&gt; <BR>&gt; #if (CONFIG_GFXUMA == 1)<BR>&gt; msr_t msr, msr2;<BR>&gt; @@ -339,6 +326,6 @@<BR>&gt; * CONFIG_CHIP_NAME defined in Option.lb.<BR>&gt; */<BR>&gt; struct chip_operations mainboard_amd_pistachio_ops = {<BR>&gt; - CHIP_NAME("AMD Pistachio Mainboard")<BR>&gt; - .enable_dev = pistachio_enable,<BR>&gt; + CHIP_NAME(MAINBOARD_VENDOR " " MAINBOARD_PART_NUMBER " Mainboard")<BR>&gt; + .enable_dev = mb_enable,<BR>&gt; };<BR>&gt; Index: corebootv2/src/mainboard/amd/pistachio/cache_as_ram_auto.c<BR>&gt; ===================================================================<BR>&gt; --- corebootv2/src/mainboard/amd/pistachio/cache_as_ram_auto.c (revision 3943)<BR>&gt; +++ corebootv2/src/mainboard/amd/pistachio/cache_as_ram_auto.c (working copy)<BR>&gt; @@ -156,9 +156,8 @@<BR>&gt; u32 bsp_apicid = 0;<BR>&gt; msr_t msr;<BR>&gt; struct cpuid_result cpuid1;<BR>&gt; - struct sys_info *sysinfo =<BR>&gt; - (struct sys_info *)(DCACHE_RAM_BASE + DCACHE_RAM_SIZE -<BR>&gt; - DCACHE_RAM_GLOBAL_VAR_SIZE);<BR>&gt; + struct sys_info *sysinfo = (struct sys_info *)(DCACHE_RAM_BASE +<BR>&gt; + DCACHE_RAM_SIZE - DCACHE_RAM_GLOBAL_VAR_SIZE);<BR>&gt; <BR>&gt; if (bist == 0) {<BR>&gt; bsp_apicid = init_cpus(cpu_init_detectedx, sysinfo);<BR>&gt; @@ -178,7 +177,7 @@<BR>&gt; report_bist_failure(bist);<BR>&gt; printk_debug("bsp_apicid=0x%x\n", bsp_apicid);<BR>&gt; <BR>&gt; - setup_pistachio_resource_map();<BR>&gt; + setup_mb_resource_map();<BR>&gt; <BR>&gt; setup_coherent_ht_domain();<BR>&gt; <BR>&gt; Index: corebootv2/src/mainboard/amd/dbm690t/irq_tables.c<BR>&gt; ===================================================================<BR>&gt; --- corebootv2/src/mainboard/amd/dbm690t/irq_tables.c (revision 3943)<BR>&gt; +++ corebootv2/src/mainboard/amd/dbm690t/irq_tables.c (working copy)<BR>&gt; @@ -54,7 +54,7 @@<BR>&gt; extern u8 bus_isa;<BR>&gt; extern u8 bus_rs690[8];<BR>&gt; extern u8 bus_sb600[2];<BR>&gt; -extern unsigned long sbdn_sb600;<BR>&gt; +extern u32 sbdn_sb600;<BR>&gt; <BR>&gt; unsigned long write_pirq_routing_table(unsigned long addr)<BR>&gt; {<BR>&gt; Index: corebootv2/src/mainboard/amd/dbm690t/resourcemap.c<BR>&gt; ===================================================================<BR>&gt; --- corebootv2/src/mainboard/amd/dbm690t/resourcemap.c (revision 3943)<BR>&gt; +++ corebootv2/src/mainboard/amd/dbm690t/resourcemap.c (working copy)<BR>&gt; @@ -17,7 +17,7 @@<BR>&gt; * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA<BR>&gt; */<BR>&gt; <BR>&gt; -static void setup_dbm690t_resource_map(void)<BR>&gt; +static void setup_mb_resource_map(void)<BR>&gt; {<BR>&gt; static const unsigned int register_values[] = {<BR>&gt; /* Careful set limit registers before base registers which contain the enables */<BR>&gt; Index: corebootv2/src/mainboard/amd/dbm690t/mainboard.c<BR>&gt; ===================================================================<BR>&gt; --- corebootv2/src/mainboard/amd/dbm690t/mainboard.c (revision 3943)<BR>&gt; +++ corebootv2/src/mainboard/amd/dbm690t/mainboard.c (working copy)<BR>&gt; @@ -99,30 +99,21 @@<BR>&gt; u8 byte;<BR>&gt; /*u32 sm_dev, ide_dev; */<BR>&gt; device_t sm_dev, ide_dev;<BR>&gt; - struct bus pbus;<BR>&gt; <BR>&gt; sm_dev = dev_find_slot(0, PCI_DEVFN(0x14, 0));<BR>&gt; <BR>&gt; - byte =<BR>&gt; - pci_cf8_conf1.read8(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0xA9);<BR>&gt; + byte = pci_read_config8(sm_dev, 0xA9);<BR>&gt; byte |= (1 &lt;&lt; 5); /* Set Gpio9 as input */<BR>&gt; - pci_cf8_conf1.write8(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0xA9, byte);<BR>&gt; + pci_write_config8(sm_dev, 0xA9, byte);<BR>&gt; <BR>&gt; ide_dev = dev_find_slot(0, PCI_DEVFN(0x14, 1));<BR>&gt; - byte =<BR>&gt; - pci_cf8_conf1.read8(&amp;pbus, ide_dev-&gt;bus-&gt;secondary,<BR>&gt; - ide_dev-&gt;path.u.pci.devfn, 0x56);<BR>&gt; + byte = pci_read_config8(ide_dev, 0x56);<BR>&gt; byte &amp;= ~(7 &lt;&lt; 0);<BR>&gt; - if ((1 &lt;&lt; 5) &amp; pci_cf8_conf1.<BR>&gt; - read8(&amp;pbus, sm_dev-&gt;bus-&gt;secondary, sm_dev-&gt;path.u.pci.devfn,<BR>&gt; - 0xAA))<BR>&gt; + if ((1 &lt;&lt; 5) &amp; pci_read_config8(sm_dev, 0xAA))<BR>&gt; byte |= 2 &lt;&lt; 0; /* mode 2 */<BR>&gt; else<BR>&gt; byte |= 5 &lt;&lt; 0; /* mode 5 */<BR>&gt; - pci_cf8_conf1.write8(&amp;pbus, ide_dev-&gt;bus-&gt;secondary,<BR>&gt; - ide_dev-&gt;path.u.pci.devfn, 0x56, byte);<BR>&gt; + pci_write_config8(ide_dev, 0x56, byte);<BR>&gt; }<BR>&gt; <BR>&gt; /*<BR>&gt; @@ -133,7 +124,6 @@<BR>&gt; u8 byte;<BR>&gt; u16 word;<BR>&gt; device_t sm_dev;<BR>&gt; - struct bus pbus;<BR>&gt; <BR>&gt; /* set ADT 7461 */<BR>&gt; ADT7461_write_byte(0x0B, 0x50); /* Local Temperature Hight limit */<BR>&gt; @@ -156,12 +146,9 @@<BR>&gt; <BR>&gt; /* set GPIO 64 to input */<BR>&gt; sm_dev = dev_find_slot(0, PCI_DEVFN(0x14, 0));<BR>&gt; - word =<BR>&gt; - pci_cf8_conf1.read16(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x56);<BR>&gt; + word = pci_read_config16(sm_dev, 0x56);<BR>&gt; word |= 1 &lt;&lt; 7;<BR>&gt; - pci_cf8_conf1.write16(&amp;pbus, sm_dev-&gt;bus-&gt;secondary,<BR>&gt; - sm_dev-&gt;path.u.pci.devfn, 0x56, word);<BR>&gt; + pci_write_config16(sm_dev, 0x56, word);<BR>&gt; <BR>&gt; /* set GPIO 64 internal pull-up */<BR>&gt; byte = pm2_ioread(0xf0);<BR>&gt; @@ -197,12 +184,12 @@<BR>&gt; * enable the dedicated function in dbm690t board.<BR>&gt; * This function called early than rs690_enable.<BR>&gt; *************************************************/<BR>&gt; -void dbm690t_enable(device_t dev)<BR>&gt; +void mb_enable(device_t dev)<BR>&gt; {<BR>&gt; struct mainboard_amd_dbm690t_config *mainboard =<BR>&gt; (struct mainboard_amd_dbm690t_config *)dev-&gt;chip_info;<BR>&gt; <BR>&gt; - printk_info("Mainboard DBM690T Enable. dev=0x%x\n", dev);<BR>&gt; + printk_info("Mainboard " MAINBOARD_PART_NUMBER " Enable. dev=0x%x\n", dev);<BR>&gt; <BR>&gt; #if (CONFIG_GFXUMA == 1)<BR>&gt; msr_t msr, msr2;<BR>&gt; @@ -267,6 +254,6 @@<BR>&gt; * CONFIG_CHIP_NAME defined in Option.lb.<BR>&gt; */<BR>&gt; struct chip_operations mainboard_amd_dbm690t_ops = {<BR>&gt; - CHIP_NAME("AMD DBM690T Mainboard")<BR>&gt; - .enable_dev = dbm690t_enable,<BR>&gt; + CHIP_NAME(MAINBOARD_VENDOR " " MAINBOARD_PART_NUMBER " Mainboard")<BR>&gt; + .enable_dev = mb_enable,<BR>&gt; };<BR>&gt; Index: corebootv2/src/mainboard/amd/dbm690t/cache_as_ram_auto.c<BR>&gt; ===================================================================<BR>&gt; --- corebootv2/src/mainboard/amd/dbm690t/cache_as_ram_auto.c (revision 3943)<BR>&gt; +++ corebootv2/src/mainboard/amd/dbm690t/cache_as_ram_auto.c (working copy)<BR>&gt; @@ -137,7 +137,7 @@<BR>&gt; normal_image:<BR>&gt; post_code(0x23);<BR>&gt; __asm__ volatile ("jmp __normal_image": /* outputs */<BR>&gt; - :"a" (bist), "b"(cpu_init_detectedx) /* inputs */);<BR>&gt; + :"a" (bist), "b"(cpu_init_detectedx)); /* inputs */<BR>&gt; <BR>&gt; fallback_image:<BR>&gt; post_code(0x25);<BR>&gt; @@ -162,9 +162,9 @@<BR>&gt; u32 bsp_apicid = 0;<BR>&gt; msr_t msr;<BR>&gt; struct cpuid_result cpuid1;<BR>&gt; - struct sys_info *sysinfo = (struct sys_info *)(DCACHE_RAM_BASE + DCACHE_RAM_SIZE - DCACHE_RAM_GLOBAL_VAR_SIZE);<BR>&gt; + struct sys_info *sysinfo = (struct sys_info *)(DCACHE_RAM_BASE +<BR>&gt; + DCACHE_RAM_SIZE - DCACHE_RAM_GLOBAL_VAR_SIZE);<BR>&gt; <BR>&gt; -<BR>&gt; if (bist == 0) {<BR>&gt; bsp_apicid = init_cpus(cpu_init_detectedx, sysinfo);<BR>&gt; }<BR>&gt; @@ -181,7 +181,7 @@<BR>&gt; report_bist_failure(bist);<BR>&gt; printk_debug("bsp_apicid=0x%x\n", bsp_apicid);<BR>&gt; <BR>&gt; - setup_dbm690t_resource_map();<BR>&gt; + setup_mb_resource_map();<BR>&gt; <BR>&gt; setup_coherent_ht_domain();<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; -- <BR>&gt; http://www.hailfinger.org/<BR>&gt; <BR><BR><br /><hr />Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy! <a href='http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us' target='_new'>Try it!</a></body>
</html>