Sunday, October 14, 2012

Benq S6 ACPI EC (Embedded Controller)


The Benq S6 MID uses an ACPI compliant Embedded Controller to control several functions of its hardware:
  • Enable/disable wireless lan, bluetooth and hsdpa modem (also gps, but at least on my model is not present)
  • Control leds
  • Control brightness
  • Keylock

EC protocol

The EC allows to write/read 8 bit data in 256 registers.
The Benq S6 MID use a protocol with only two registers for all the functions.
The protocol to read the hardware status is:
  • Read the register 0x60, must read 0x0
  • Write in the register 0x60 the opcode for the hardware to query
  • Read the register 0x60, must read 0x0
  • Read the register 0x61, the value in this register is the result of the query
The protocol to change the hardware status is:
  • Read the register 0x60, must read 0x0
  • Write in the register 0x61 the data to change the hardware status
  • Write in the register 0x60 the opcode for the hardware to change
  • Read the register 0x60, must read 0x0
There are two special registers for the status of the power button: 0x46 and 0x47.

opcodes

Query opcodes:
  • 0x15 : get_brightness
  • 0x17 : get_keylock
  • 0x19 : get_sd_cd
  • 0x28 : get_hsdpa
  • 0x2a : get_wireless
  • 0x2c : get_gps
Write opcodes (for most of them 0 is off, 1 is on):
  • 0x16 : set_keylock
  • 0x18 : set_sd_cd (the meaning of this opcode is not yet fully understood)
  • 0x22 : set_brightness (accepts data from 0 to 7)
  • 0x27 : set_hsdpa
  • 0x29 : set_wireless (enable both wlan and bluetooth)
  • 0x2b : set_gps
  • 0x40 : set_wirelesslanled
  • 0x41 : set_wwanled
  • 0x42 : set_sysled (0 off, 1 on still, 2 on flashing)
  • 0x43 : set_chargingled

No comments:

Post a Comment