Need info about ACPI - implementing acer_acpi, amilo 1650g
Nate Lawson
nate at root.org
Tue Jan 29 11:13:03 PST 2008
Artur Bać wrote:
> Abstract: I implement via acpi, a HotKey switch for enabling WiFi antena
> In linux community there is acerhk and acer_acpi module wich does this for
> linux. It works even on FujitsuSiemens Amilo1650G when on linux.
>
> So, i dumped DSDT , then corrected errors and I try to find namespace and
> method in acpi which is responsible for enablig such radio antena.
>
> Digging in acerhk i found :
>
> #define EC_STATUS_REG 0x66 /* Status register of EC (R) */
> #define EC_CNTL_REG 0x66 /* Controller command register of EC (W) */
> #define EC_DATA_REG 0x62 /* EC data register (R/W) */
>
> and in acer_acpi
>
> /*
> * Magic Number
> * Meaning is unknown - this number is required for writing to ACPI for AMW0
> * (it's also used in acerhk when directly accessing the EC)
> */
> #define ACER_AMW0_WRITE 0x9610
FreeBSD tries to offer generic methods of accessing driver resources
instead of direct bit-banging (and contention) by multiple drivers.
You can call the EC via the ACPI_EC_READ and WRITE functions:
#
# Read embedded controller (EC) address space
#
# device_t dev: EC device
# u_int addr: Address to read from in EC space
# ACPI_INTEGER *val: Location to store read value
# int width: Size of area to read in bytes
#
METHOD int ec_read {
device_t dev;
u_int addr;
ACPI_INTEGER *val;
int width;
};
#
# Write embedded controller (EC) address space
#
# device_t dev: EC device
# u_int addr: Address to write to in EC space
# ACPI_INTEGER val: Value to write
# int width: Size of value to write in bytes
#
METHOD int ec_write {
device_t dev;
u_int addr;
ACPI_INTEGER val;
int width;
};
An example driver that uses these methods is in sys/dev/acpica/acpi_smbat.c
> Questions:
> 2) Could any one give me hints/help how to move forward since there are
> registers and normaly there should be some method to call, is the Method
> (_REG, 2, NotSerialized) the one that schould be called by me, or maybe i
> should use AMW0 methods ?
_REG is already handled by acpi-ca, don't touch it. AMW0 seems more
promising.
> 3)the FreeBSD module acpi_fujitsu will not work since it has different OMEID,
> FujitsuSiemens AMilo has got "FUJ ", "W37 "
You can try modifying acpi_fujitsu to have the IDs for your particular
laptop, then see what features work or not.
--
Nate
More information about the freebsd-acpi
mailing list