Vorweg, ich bin Anwender, kein Programierer und habe eigentich gar keine Programierkenntnisse, dafür aber ein Problem mit meinem Acer Aspire 5110 Notebook. Zur Information, das Notebook ist bauglauch dem Acer Aspire 5100 bzw. 3100 und nutzt das gleiche Bios. Allerdings gibt es beim Modell 5110 zusätzlich Cardbus und Firewire und das Problem beschränkt sich wohl auf diese Modelle.
FreeBSD 8.1 konfiguriert beim starten eine RS480 PCI Bridge sowie den PCI SD/MMC Card Reader Controller nicht korrekt. Das Problem der RS480 PCI Bridge konnte ich analog http://lists.freebsd.org/pipermail/freebsd-acpi/2008-May/004905.html mit folgendem korrigierten dreckigen Patch lösen. Die Werte stammen vom Linux.
Bei dem zweiten SDHCI Problem weiß ich nicht mehr weiter:
Ausgabe von pciconf -lbv:
0xafe90000 ist aber laut Linux falsch. Linux lspci -vvv
Das führt dann in FreeBSD zu einem: dmesg | grep sdhci
Ich habe bereits in den Kernelquellen nachgesehen, habe aber keine Ahnung wie und wo ich die Adresse für das sdhci1 richtig setzen kann. Vielleich kann mir jemand einen Tip/Patch geben.
Und vielleicht gibt es jemanden, der mir sagen kann wie ich die Hacks für eine eventuelle Netbsd-current installation in die NetBSD Sourcen kriege.
FreeBSD 8.1 konfiguriert beim starten eine RS480 PCI Bridge sowie den PCI SD/MMC Card Reader Controller nicht korrekt. Das Problem der RS480 PCI Bridge konnte ich analog http://lists.freebsd.org/pipermail/freebsd-acpi/2008-May/004905.html mit folgendem korrigierten dreckigen Patch lösen. Die Werte stammen vom Linux.
Code:
*** acpi_pcib_pci.c.orig 2009-08-03 10:13:06.000000000 +0200
--- acpi_pcib_pci.c 2010-05-13 14:59:50.000000000 +0200
***************
*** 133,142 ****
--- 133,150 ----
{
struct acpi_pcib_softc *sc;
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
+ if (device_get_unit(dev)==2){
+ pci_write_config(dev, PCIR_COMMAND, PCIM_CMD_MEMEN | PCIM_CMD_PORTEN, 1);
+ pci_enable_busmaster(dev);
+ pci_write_config(dev, PCIR_IOBASEL_1, 0xc0, 1);
+ pci_write_config(dev, PCIR_MEMBASE_1, 0xc020, 2);
+ pci_write_config(dev, PCIR_MEMLIMIT_1, 0xc020, 2);
+ pci_write_config(dev, PCIR_PMBASEL_1, 0xfff1, 2);
+ }
pcib_attach_common(dev);
sc = device_get_softc(dev);
sc->ap_handle = acpi_get_handle(dev);
return (acpi_pcib_attach(dev, &sc->ap_prt, sc->ap_pcibsc.secbus));
}
Bei dem zweiten SDHCI Problem weiß ich nicht mehr weiter:
Ausgabe von pciconf -lbv:
Code:
....
sdhci1@pci0:6:4:4: class=0x050100 card=0x009f1025 chip=0x05511524 rev=0x01 hdr=0x00
vendor = 'ENE Technology Inc'
device = 'PCI SD/MMC Card Reader Controller'
class = memory
subclass = flash
bar [10] = type Memory, range 32, base [B]0xafe90000[/B], size 256, enabled
0xafe90000 ist aber laut Linux falsch. Linux lspci -vvv
Code:
...
sdhci1@pci0:6:4:4: class=0x050100 card=0x009f1025 chip=0x05511524 rev=0x01 hdr=0x00
vendor = 'ENE Technology Inc'
device = 'PCI SD/MMC Card Reader Controller'
class = memory
subclass = flash
bar [10] = type Memory, range 32, 06:04.4 FLASH memory: ENE Technology Inc SD/MMC Card Reader Controller (rev 01)
Subsystem: Acer Incorporated [ALI] Device 009f
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin B routed to IRQ 23
Region 0: Memory at [B]c0811900[/B] (32-bit, non-prefetchable) [size=256]
Capabilities: [80] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: sdhci-pci, size 256, enabled
Das führt dann in FreeBSD zu einem: dmesg | grep sdhci
Code:
sdhci0: <ENE CB712 SD> mem 0xc0812000-0xc08120ff irq 23 at device 4.2 on pci6
sdhci0: 1 slot(s) allocated
sdhci0: [ITHREAD]
sdhci1: <ENE CB712 SD 2> mem 0xafe90000-0xafe900ff irq 23 at device 4.4 on pci6
sdhci1-slot0: Reset 0x1 never completed - 0x1.
sdhci1-slot0: ============== REGISTER DUMP ==============
sdhci1-slot0: Sys addr: 0x00000000 | Version: 0x00000000
sdhci1-slot0: Blk size: 0x00000000 | Blk cnt: 0x00000000
sdhci1-slot0: Argument: 0x00000000 | Trn mode: 0x00000000
sdhci1-slot0: Present: 0x00000000 | Host ctl: 0x00000000
sdhci1-slot0: Power: 0x00000000 | Blk gap: 0x00000000
sdhci1-slot0: Wake-up: 0x00000000 | Clock: 0x00000000
sdhci1-slot0: Timeout: 0x00000000 | Int stat: 0x00000000
sdhci1-slot0: Int enab: 0x01ff00fb | Sig enab: 0x01ff00fb
sdhci1-slot0: AC12 err: 0x00000000 | Slot int: 0x00000000
sdhci1-slot0: Caps: 0x00000000 | Max curr: 0x00000000
sdhci1-slot0: ===========================================
sdhci1: Hardware doesn't specify base clock frequency.
sdhci1: Hardware doesn't specify timeout clock frequency.
sdhci1: Hardware doesn't report any support voltages.
sdhci1: 1 slot(s) allocated
sdhci1: [ITHREAD]
Ich habe bereits in den Kernelquellen nachgesehen, habe aber keine Ahnung wie und wo ich die Adresse für das sdhci1 richtig setzen kann. Vielleich kann mir jemand einen Tip/Patch geben.
Und vielleicht gibt es jemanden, der mir sagen kann wie ich die Hacks für eine eventuelle Netbsd-current installation in die NetBSD Sourcen kriege.