<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div class="h5">
> Alternatively you could try if this works:<br>
><br>
> Index: src/southbridge/nvidia/mcp55/mcp55_early_setup_car.c<br>
> ===================================================================<br>
> --- src/southbridge/nvidia/mcp55/mcp55_early_setup_car.c (revision 5411)<br>
> +++ src/southbridge/nvidia/mcp55/mcp55_early_setup_car.c (working copy)<br>
> @@ -131,15 +131,9 @@<br>
><br>
><br>
> }<br>
> -static void delayx(uint8_t value) {<br>
> -#if 1<br>
> - int i;<br>
> - for(i=0;i<0x8000;i++) {<br>
> - outb(value, 0x80);<br>
> - }<br>
> -#endif<br>
> -}<br>
><br>
> +#include "pc80/udelay_io.c"<br>
> +<br>
> static void mcp55_early_pcie_setup(unsigned busnx, unsigned devnx,<br>
> unsigned anactrl_io_base, unsigned pci_e_x)<br>
> {<br>
> uint32_t tgio_ctrl;<br>
> @@ -170,14 +164,14 @@<br>
> outl(tgio_ctrl, anactrl_io_base + 0xcc);<br>
><br>
> // wait 100us<br>
> - delayx(1);<br>
> + udelay(100);<br>
><br>
> dword = pci_read_config32(dev, 0xe4);<br>
> dword &= ~(0x3f0); // enable<br>
> pci_write_config32(dev, 0xe4, dword);<br>
><br>
> // need to wait 100ms<br>
> - delayx(1000);<br>
> + udelay(100 * 1000);<br>
> }<br>
><br>
> static void mcp55_early_setup(unsigned mcp55_num, unsigned *busn,<br>
> unsigned *devn, unsigned *io_base, unsigned *pci_e_x)<br>
<br>
</div></div>Hmm, that generates a conflict:<br>
<br>
In file included from<br>
src/southbridge/nvidia/mcp55/mcp55_early_setup_car.c:143,<br>
                 from src/mainboard/gigabyte/m57sli/romstage.c:133:<br>
src/pc80/udelay_io.c:4: error: redefinition of 'udelay'<br>
src/cpu/amd/model_fxx/apic_timer.c:19: note: previous definition of 'udelay'<br>
was here<br>
<br>
We do indeed have 2 different functions called udelay.<br>
<br>
Ideas?<br></blockquote><div>You could just call udelay without including pc80/udelay.c.<br><br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div class="im"><br>
> > Index: src/mainboard/gigabyte/m57sli/fanctl.c<br>
> > ===================================================================<br>
> > --- src/mainboard/gigabyte/m57sli/fanctl.c  (revision 5411)<br>
> > +++ src/mainboard/gigabyte/m57sli/fanctl.c  (working copy)<br>
> > @@ -71,6 +71,7 @@<br>
> >  /*<br>
> >   * Called from superio.c<br>
> >   */<br>
> > +extern void init_ec(uint16_t base);<br>
> >  void init_ec(uint16_t base)<br>
> >  {<br>
> >     int i;<br>
> ><br>
><br>
> init_ec() is the API between the superio drivers and the mainboard<br>
> drivers...<br>
><br>
> If this is a single hack, it's fine as it is.. If we're going to have an<br>
> API here, we should create a src/include/superio.h or some such<br>
<br>
</div>It's only used on this particular board. </blockquote><div><br>Isn't there another init_ec function in the tree?  Could they use the same header file? <br><br>Acked-by: Myles Watson <<a href="mailto:mylesgw@gmail.com">mylesgw@gmail.com</a>><br>
<br>Thanks,<br>Myles<br></div></div><br>