Platform: OLPC: Add XO-1.75 EC driver

It's based off the driver from the OLPC kernel sources. Somewhat
modernized and cleaned up, for better or worse.

Modified to plug into the olpc-ec driver infrastructure (so that battery
interface and debugfs could be reused) and the SPI slave framework.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
Lubomir Rintel
2019-05-13 09:56:37 +02:00
committed by Andy Shevchenko
parent 8097548f3a
commit 0c3d931b3a
7 changed files with 774 additions and 4 deletions

View File

@@ -2698,6 +2698,7 @@ config OLPC
select OF
select OF_PROMTREE
select IRQ_DOMAIN
select OLPC_EC
---help---
Add support for detecting the unique features of the OLPC
XO hardware.

View File

@@ -10,3 +10,5 @@ source "drivers/platform/goldfish/Kconfig"
source "drivers/platform/chrome/Kconfig"
source "drivers/platform/mellanox/Kconfig"
source "drivers/platform/olpc/Kconfig"

View File

@@ -6,6 +6,6 @@
obj-$(CONFIG_X86) += x86/
obj-$(CONFIG_MELLANOX_PLATFORM) += mellanox/
obj-$(CONFIG_MIPS) += mips/
obj-$(CONFIG_OLPC) += olpc/
obj-$(CONFIG_OLPC_EC) += olpc/
obj-$(CONFIG_GOLDFISH) += goldfish/
obj-$(CONFIG_CHROME_PLATFORMS) += chrome/

View File

@@ -0,0 +1,14 @@
config OLPC_EC
bool
config OLPC_XO175_EC
tristate "OLPC XO 1.75 Embedded Controller"
depends on ARCH_MMP || COMPILE_TEST
select SPI_SLAVE
select OLPC_EC
help
Include support for the OLPC XO Embedded Controller (EC). The EC
provides various platform services, including support for the power,
button, restart, shutdown and battery charging status.
Unless you have an OLPC XO laptop, you will want to say N.

View File

@@ -1,4 +1,5 @@
#
# OLPC XO platform-specific drivers
#
obj-$(CONFIG_OLPC) += olpc-ec.o
obj-$(CONFIG_OLPC_EC) += olpc-ec.o
obj-$(CONFIG_OLPC_XO175_EC) += olpc-xo175-ec.o

File diff suppressed because it is too large Load Diff

View File

@@ -41,7 +41,7 @@ struct olpc_ec_driver {
bool wakeup_available;
};
#ifdef CONFIG_OLPC
#ifdef CONFIG_OLPC_EC
extern void olpc_ec_driver_register(struct olpc_ec_driver *drv, void *arg);
@@ -69,6 +69,6 @@ static inline bool olpc_ec_wakeup_available(void)
return false;
}
#endif /* CONFIG_OLPC */
#endif /* CONFIG_OLPC_EC */
#endif /* _LINUX_OLPC_EC_H */