Oprava ACPI DSDT?

Cejka Rudolf cejkar at fit.vutbr.cz
Sun Jan 26 14:30:12 CET 2014


Ahoj,
  vyzná se někdo trošku v popisu ACPI? Zkoušel jsem udělat upgrade
z 8.2-stable i386 na 9.2-stable amd64, a přestala fungovat PS/2
klávesnice. Po neúspěšných pokusech s
	nooptions NEW_PCIB
v konfiguraci jádra a s
	debug.acpi.disabled="hostres"
v /boot/loader.conf jsem se začal dívat na popis ACPI z acpidump -dt.
Kdyby se někdo chtěl podívat, celý výpis je tady:

ftp://ftp.FreeBSD.cz/pub/FreeBSD-local/acpi-ecg3510m/acpi-ecg3510m.asl

V ACPI DSDT je k PS/2 myši a PS/2 klávesnici zhruba toto, kde u PS2M
na rozdíl od jiných popisů, co jsem se díval, je alokace portů 0x60
až 0x64 v podstatě natvrdo bez podmínek:

Device (PS2M)
  ...
  Name (_CRS, ResourceTemplate ()
  { ... porty 0x60..0x64 a IRQ 12 }
  ...

Device (PS2K)
  ...
  Name (_CRS, ResourceTemplate ()
  { ... porty 0x60..0x64 a IRQ 1 }
  ...

V 8.2 to nevadí a vznikne očekávaný stav a atkbd0 a psm0 se najdou:

    psmcpnp0 pnpinfo _HID=PNP0F03 _UID=0 at handle=\_SB_.PCI0.LPC_.PS2M
        Interrupt request lines:
            12
    atkbdc0 pnpinfo _HID=PNP0303 _UID=0 at handle=\_SB_.PCI0.LPC_.PS2K
        I/O ports:
            0x60
            0x64
      atkbd0
          Interrupt request lines:
              1
      psm0
          Interrupt request lines:
              12

Jenže v 9.2 se porty 0x60 až 0x64 přidají už do PS2M a tím se asi seberou
PS2K, čímž se atkbdc0, atkbd0 ani psm0 nenajdou:

    psmcpnp0 pnpinfo _HID=PNP0F03 _UID=0 at handle=\_SB_.PCI0.LPC_.PS2M
        I/O ports:
            0x60
            0x64
    unknown pnpinfo _HID=PNP0303 _UID=0 at handle=\_SB_.PCI0.LPC_.PS2K

Zkusil jsem v popisu DSDT PS2M a PS2K prohodit, aby bylo PS2K jako první,
ale našla se jen klávesnice (i když aspoň to :o) (... iasl *.asl do
/boot/acpi_dsdt.aml a acpi_dsdt_load="YES" v /boot/loader.conf):

    atkbdc0 pnpinfo _HID=PNP0303 _UID=0 at handle=\_SB_.PCI0.LPC_.PS2K
        Interrupt request lines:
            1
        I/O ports:
            0x60
            0x64
      atkbd0
      psm0
    psmcpnp0 pnpinfo _HID=PNP0F03 _UID=0 at handle=\_SB_.PCI0.LPC_.PS2M

IRQ 1 pod atkbdc0 místo atkbd0 asi nevadí, ale chybějící IRQ 12 u psm0
nejspíš vadí, takže chybí myš.

Pak jsem zkusil místo prohození PS2K a PS2M jen z PS2M smazat alokaci portů
0x60 až 0x64, ale taky to není ono, klávesnice se najde, ale IRQ 12 a myš
zase chybí:

    psmcpnp0 pnpinfo _HID=PNP0F03 _UID=0 at handle=\_SB_.PCI0.LPC_.PS2M
    atkbdc0 pnpinfo _HID=PNP0303 _UID=0 at handle=\_SB_.PCI0.LPC_.PS2K
        Interrupt request lines:
            1
        I/O ports:
            0x60
            0x64
      atkbd0
      psm0

Tuší někdo, jak by se měl popis DSDT opravit, aby se detekovalo obojí,
PS/2 klávesnice i myš?

Děkuji.

-- 
Rudolf Cejka <cejkar at fit.vutbr.cz> http://www.fit.vutbr.cz/~cejkar
Brno University of Technology, Faculty of Information Technology
Bozetechova 2, 612 66  Brno, Czech Republic


More information about the Users-l mailing list