Acer Aspire 5672 and FreeBSD 6.2-beta1
John Baldwin
jhb at freebsd.org
Mon Oct 9 15:53:45 PDT 2006
On Saturday 07 October 2006 15:03, Bruno Ducrot wrote:
> On Sat, Oct 07, 2006 at 06:46:42PM +0200, Torfinn Ingolfsen wrote:
> > On Sat, 07 Oct 2006 17:01:03 +0200
> > Bruno Ducrot <ducrot at poupinou.org> wrote:
> >
> > > Thanks. The device do not have a BAR when acpi is enabled. We
> > > therefore have to enable one. I think just by poking aroud some pci
> > > config registers onto the pci bridge will do the trick. Your
> >
> > Ok. I'm wondering; will output from lspci under Linux help you get at
> > the info more easily? I have Xubuntu installed on a partition on this
> > machine, so it is easy for me to do that, if you wish.
>
> Well, I don't know if that will be helpful. Humm, maybe a dmesg?
>
> > > Looking at this datasheet I think we have to look more carrefully to
> > > register 0x04 (halfword), 0x20h, 0x24, 0x28 and 0x2c.
> > > Looking them both with and without acpi and comparing them will allows
> > > us to know hopefully how to enable the first BAR to the correct adress
> > > for your ethernet card. In short, if you can first boot without ACPI,
> > > then perform
> > > pciconf -r -h pci0:28:2 4
> > > pciconf -r pci0:28:2 0x20
> > > pciconf -r pci0:28:2 0x24
> > > pciconf -r pci0:28:2 0x28
> > > pciconf -r pci0:28:2 0x2c
> > >
> > > Also do a dump in order to check if something else might be needed:
> > > pciconf -r -b pci0:28:2 0:256
> > >
> > > Boot with ACPI enabled:
> > > do the same pciconf stuff, then send me the output.
> >
> > Done. I've sent you the files via email, and also uploaded them to the
> > web page, in case anyone else wants them for some reason. Webpage:
> > http://tingox.googlepages.com/aceraspireas5672andfreebsd
> >
> > > After that, we should be able to correct your problem, either by
> > > 1- hacking the DSDT,
> > > OR
> > > 2- hacking pcib.c.
> > > (at your option).
> >
> > I think hacking the DSDT is the more politically correct option, but
> > either one will work for me.
>
> Ok. First remove device bge in your kernel config. For example create a
> config file with:
>
> >>> BEGIN
> include GENERIC
> ident MYKERNEL (or what you like)
> nodevice bge
> <<< END
>
> After rebuilding and installing your kernel,
> you can do something like that:
>
> pciconf -w pci0:28:2 0xd8 0x04110008
>
> pciconf -w -h pci0:28:2 0x58 0x0000
>
> pciconf -w pci0:28:2 0x24 0x0001fff1
> pciconf -w pci0:28:2 0x20 0xc830c830
>
> pciconf -w -h pci0:28:2 0x04 0x0007
>
>
> After that, you should be able to kldload if_bge and report back if
> this work. In that case I will modify the DSDT so that you won't to
> worry about all of those pciconf stuff.
You really shouldn't change BAR registers directly. First of all, the PCI
bus driver already knows how to allocate resources for a BAR if it is set
to 0 and when doing so will make sure to not allocate an address that
conflicts with another device. Secondly, a lot of PCI config registers are
cached in the ivars by the PCI bus, so it may not even read the values you
write into it (though writing those values will turn on the address decode
for the device, and if another device is using that address things will go
downhill quick).
--
John Baldwin
More information about the freebsd-mobile
mailing list