-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
platform/chrome: wilco_ec: Add Boot on AC support
Boot on AC is a policy which makes the device boot from S5 when AC power is connected. This is useful for users who want to run their device headless or with a dock. Signed-off-by: Nick Crews <ncrews@chromium.org> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
- Loading branch information
Nick Crews
authored and
Enric Balletbo i Serra
committed
May 20, 2019
1 parent
0c0b7ea
commit 4c1ca62
Showing
5 changed files
with
108 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
What: /sys/bus/platform/devices/GOOG000C\:00/boot_on_ac | ||
Date: April 2019 | ||
KernelVersion: 5.3 | ||
Description: | ||
Boot on AC is a policy which makes the device boot from S5 | ||
when AC power is connected. This is useful for users who | ||
want to run their device headless or with a dock. | ||
|
||
Input should be parseable by kstrtou8() to 0 or 1. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
|
||
wilco_ec-objs := core.o mailbox.o properties.o | ||
wilco_ec-objs := core.o mailbox.o properties.o sysfs.o | ||
obj-$(CONFIG_WILCO_EC) += wilco_ec.o | ||
wilco_ec_debugfs-objs := debugfs.o | ||
obj-$(CONFIG_WILCO_EC_DEBUGFS) += wilco_ec_debugfs.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
// SPDX-License-Identifier: GPL-2.0 | ||
/* | ||
* Copyright 2019 Google LLC | ||
* | ||
* Sysfs properties to view and modify EC-controlled features on Wilco devices. | ||
* The entries will appear under /sys/bus/platform/devices/GOOG000C:00/ | ||
* | ||
* See Documentation/ABI/testing/sysfs-platform-wilco-ec for more information. | ||
*/ | ||
|
||
#include <linux/platform_data/wilco-ec.h> | ||
#include <linux/sysfs.h> | ||
|
||
#define CMD_KB_CMOS 0x7C | ||
#define SUB_CMD_KB_CMOS_AUTO_ON 0x03 | ||
|
||
struct boot_on_ac_request { | ||
u8 cmd; /* Always CMD_KB_CMOS */ | ||
u8 reserved1; | ||
u8 sub_cmd; /* Always SUB_CMD_KB_CMOS_AUTO_ON */ | ||
u8 reserved3to5[3]; | ||
u8 val; /* Either 0 or 1 */ | ||
u8 reserved7; | ||
} __packed; | ||
|
||
static ssize_t boot_on_ac_store(struct device *dev, | ||
struct device_attribute *attr, | ||
const char *buf, size_t count) | ||
{ | ||
struct wilco_ec_device *ec = dev_get_drvdata(dev); | ||
struct boot_on_ac_request rq; | ||
struct wilco_ec_message msg; | ||
int ret; | ||
u8 val; | ||
|
||
ret = kstrtou8(buf, 10, &val); | ||
if (ret < 0) | ||
return ret; | ||
if (val > 1) | ||
return -EINVAL; | ||
|
||
memset(&rq, 0, sizeof(rq)); | ||
rq.cmd = CMD_KB_CMOS; | ||
rq.sub_cmd = SUB_CMD_KB_CMOS_AUTO_ON; | ||
rq.val = val; | ||
|
||
memset(&msg, 0, sizeof(msg)); | ||
msg.type = WILCO_EC_MSG_LEGACY; | ||
msg.request_data = &rq; | ||
msg.request_size = sizeof(rq); | ||
ret = wilco_ec_mailbox(ec, &msg); | ||
if (ret < 0) | ||
return ret; | ||
|
||
return count; | ||
} | ||
|
||
static DEVICE_ATTR_WO(boot_on_ac); | ||
|
||
static struct attribute *wilco_dev_attrs[] = { | ||
&dev_attr_boot_on_ac.attr, | ||
NULL, | ||
}; | ||
|
||
static struct attribute_group wilco_dev_attr_group = { | ||
.attrs = wilco_dev_attrs, | ||
}; | ||
|
||
int wilco_ec_add_sysfs(struct wilco_ec_device *ec) | ||
{ | ||
return sysfs_create_group(&ec->dev->kobj, &wilco_dev_attr_group); | ||
} | ||
|
||
void wilco_ec_remove_sysfs(struct wilco_ec_device *ec) | ||
{ | ||
sysfs_remove_group(&ec->dev->kobj, &wilco_dev_attr_group); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters