CHROMIUM: Add EC-based keyboard backlight driver

This patch adds a Chrome OS keyboard backlight driver to
drivers/video/backlight.  This driver sends commands to the EC to
control the keyboard backlight.  The EC interface code is based on
platform/ec/util/ectool.c.

When successfully installed, the driver will show up under
/sys/class/backlight/keyboard_backlight.

BUG=chrome-os-partner:9204
TEST=kernel builds successfully.

Change-Id: Iefd2598ef0fd6468334524f233419bf26078ce63
Signed-off-by: Simon Que <sque@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/24543
Reviewed-by: Benson Leung <bleung@chromium.org>

Conflicts:
	drivers/video/backlight/Makefile
CHROMIUM: backlight: fixes for chromeos_keyboard_bl

Explicitly include linux/io.h for inb() and outb().

Put includes in alphabetical order.

BUG=chrome-os-partner:9204
TEST=Apply https://gerrit.chromium.org/gerrit/#change,24736, build
on x86, arm, and amd64.

Change-Id: Icf2825f53d8f40eb566093fb9485c0e723c6c9d3
Signed-off-by: Simon Que <sque@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/24752
Reviewed-by: Benson Leung <bleung@chromium.org>
CHROMIUM: backlight: ACPI interface for chromeos_keyboard_bl

In order to shield the kernel from EC interface changes we added
an ACPI abstraction to the keyboard backlight.  The firmware defines
a new top-level ACPI device called "KBLT" which has methods to
get (KBQC) and set (KBCM) the backlight value.

This driver is changed to use the ACPI interface instead of
talking to the EC directly.

When the firmware does not support this interface the backlight
driver will not load.  When the firmware does support this
interface but the EC does not then the ACPI methods will fail
but nothing else.

I also added a KConfig dependency on ACPI since it is now required
for this driver to operate.

BUG=chromium-os:33054
TEST=manual

1) install EC with support for EC RAM and that exports the
keyboard backlight via EC RAM byte 3
2) install coreboot with this change to add keyboard backlight
interface via acpi
3) install kernel with keyboard backlight driver that uses
the new acpi interface
4) ensure the kernel driver loads
5) ensure the backlight can be read in sysfs:
> cat /sys/class/backlight/keyboard_backlight/actual_brightness
100
6) ensure the backlight can be set via sysfs:
> echo 50 > /sys/class/backlight/keyboard_backlight/brightness
> cat /sys/class/backlight/keyboard_backlight/actual_brightness
50
7) test with firmware that does not have this device to ensure
that the driver notices this and does not load
8) test with EC that does not support this interface to ensure
that the driver can cope with the ACPI methods failing to talk
to the EC properly.  In this setup the EC state machine can get
unhappy as it does not support the ACPI protocol fully and the
device power sequencing can get confused.  The EC and BIOS update
will be released together so this should not be an issue.

Change-Id: I6bfa58563dc1da5ade458e90929cd5c2985548e6
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/28723
Reviewed-by: Olof Johansson <olofj@chromium.org>