forked from torvalds/linux
-
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.
Merge tag 'tag-chrome-platform-for-v5.3' of git://git.kernel.org/pub/…
…scm/linux/kernel/git/chrome-platform/linux Pull chrome platform updates from Benson Leung "CrOS EC: - Add new CrOS ISHTP transport protocol - Add proper documentation for debugfs entries and expose resume and uptime files - Select LPC transport protocol variant at runtime. - Add lid angle sensor driver - Fix oops on suspend/resume for lightbar driver - Set CrOS SPI transport protol in realtime Wilco EC: - Add telemetry char device interface - Add support for event handling - Add new sysfs attributes Misc: - Contains ib-mfd-cros-v5.3 immutable branch from mfd, with cros_ec_commands.h header freshly synced with Chrome OS's EC project" * tag 'tag-chrome-platform-for-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux: (54 commits) mfd / platform: cros_ec_debugfs: Expose resume result via debugfs platform/chrome: lightbar: Get drvdata from parent in suspend/resume iio: cros_ec: Add lid angle driver platform/chrome: wilco_ec: Add circular buffer as event queue platform/chrome: cros_ec_lpc_mec: Fix kernel-doc comment first line platform/chrome: cros_ec_lpc: Choose Microchip EC at runtime platform/chrome: cros_ec_lpc: Merge cros_ec_lpc and cros_ec_lpc_reg Input: cros_ec_keyb: mask out extra flags in event_type platform/chrome: wilco_ec: Fix unreleased lock in event_read() platform/chrome: cros_ec_debugfs: cros_ec_uptime_fops can be static platform/chrome: cros_ec_debugfs: Add debugfs ABI documentation platform/chrome: cros_ec_debugfs: Fix kernel-doc comment first line platform/chrome: cros_ec_debugfs: Add debugfs entry to retrieve EC uptime mfd: cros_ec: Update I2S API mfd: cros_ec: Add Management API entry points mfd: cros_ec: Add SKU ID and Secure storage API mfd: cros_ec: Add API for rwsig mfd: cros_ec: Add API for Fingerprint support mfd: cros_ec: Add API for Touchpad support mfd: cros_ec: Add API for EC-EC communication ...
- Loading branch information
Showing
33 changed files
with
5,666 additions
and
1,018 deletions.
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,56 @@ | ||
What: /sys/kernel/debug/<cros-ec-device>/console_log | ||
Date: September 2017 | ||
KernelVersion: 4.13 | ||
Description: | ||
If the EC supports the CONSOLE_READ command type, this file | ||
can be used to grab the EC logs. The kernel polls for the log | ||
and keeps its own buffer but userspace should grab this and | ||
write it out to some logs. | ||
|
||
What: /sys/kernel/debug/<cros-ec-device>/panicinfo | ||
Date: September 2017 | ||
KernelVersion: 4.13 | ||
Description: | ||
This file dumps the EC panic information from the previous | ||
reboot. This file will only exist if the PANIC_INFO command | ||
type is supported by the EC. | ||
|
||
What: /sys/kernel/debug/<cros-ec-device>/pdinfo | ||
Date: June 2018 | ||
KernelVersion: 4.17 | ||
Description: | ||
This file provides the port role, muxes and power debug | ||
information for all the USB PD/type-C ports available. If | ||
the are no ports available, this file will be just an empty | ||
file. | ||
|
||
What: /sys/kernel/debug/<cros-ec-device>/uptime | ||
Date: June 2019 | ||
KernelVersion: 5.3 | ||
Description: | ||
A u32 providing the time since EC booted in ms. This is | ||
is used for synchronizing the AP host time with the EC | ||
log. An error is returned if the command is not supported | ||
by the EC or there is a communication problem. | ||
|
||
What: /sys/kernel/debug/<cros-ec-device>/last_resume_result | ||
Date: June 2019 | ||
KernelVersion: 5.3 | ||
Description: | ||
Some ECs have a feature where they will track transitions to | ||
the (Intel) processor's SLP_S0 line, in order to detect cases | ||
where a system failed to go into S0ix. When the system resumes, | ||
an EC with this feature will return a summary of SLP_S0 | ||
transitions that occurred. The last_resume_result file returns | ||
the most recent response from the AP's resume message to the EC. | ||
|
||
The bottom 31 bits contain a count of the number of SLP_S0 | ||
transitions that occurred since the suspend message was | ||
received. Bit 31 is set if the EC attempted to wake the | ||
system due to a timeout when watching for SLP_S0 transitions. | ||
Callers can use this to detect a wake from the EC due to | ||
S0ix timeouts. The result will be zero if no suspend | ||
transitions have been attempted, or the EC does not support | ||
this feature. | ||
|
||
Output will be in the format: "0x%08x\n". |
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,40 @@ | ||
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. | ||
|
||
What: /sys/bus/platform/devices/GOOG000C\:00/build_date | ||
Date: May 2019 | ||
KernelVersion: 5.3 | ||
Description: | ||
Display Wilco Embedded Controller firmware build date. | ||
Output will a MM/DD/YY string. | ||
|
||
What: /sys/bus/platform/devices/GOOG000C\:00/build_revision | ||
Date: May 2019 | ||
KernelVersion: 5.3 | ||
Description: | ||
Display Wilco Embedded Controller build revision. | ||
Output will a version string be similar to the example below: | ||
d2592cae0 | ||
|
||
What: /sys/bus/platform/devices/GOOG000C\:00/model_number | ||
Date: May 2019 | ||
KernelVersion: 5.3 | ||
Description: | ||
Display Wilco Embedded Controller model number. | ||
Output will a version string be similar to the example below: | ||
08B6 | ||
|
||
What: /sys/bus/platform/devices/GOOG000C\:00/version | ||
Date: May 2019 | ||
KernelVersion: 5.3 | ||
Description: | ||
Display Wilco Embedded Controller firmware version. | ||
The format of the string is x.y.z. Where x is major, y is minor | ||
and z is the build number. For example: 95.00.06 |
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
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,139 @@ | ||
// SPDX-License-Identifier: GPL-2.0 | ||
|
||
/* | ||
* cros_ec_lid_angle - Driver for CrOS EC lid angle sensor. | ||
* | ||
* Copyright 2018 Google, Inc | ||
* | ||
* This driver uses the cros-ec interface to communicate with the Chrome OS | ||
* EC about counter sensors. Counters are presented through | ||
* iio sysfs. | ||
*/ | ||
|
||
#include <linux/delay.h> | ||
#include <linux/device.h> | ||
#include <linux/iio/buffer.h> | ||
#include <linux/iio/common/cros_ec_sensors_core.h> | ||
#include <linux/iio/iio.h> | ||
#include <linux/iio/kfifo_buf.h> | ||
#include <linux/iio/trigger.h> | ||
#include <linux/iio/triggered_buffer.h> | ||
#include <linux/iio/trigger_consumer.h> | ||
#include <linux/kernel.h> | ||
#include <linux/mfd/cros_ec.h> | ||
#include <linux/mfd/cros_ec_commands.h> | ||
#include <linux/module.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/slab.h> | ||
|
||
#define DRV_NAME "cros-ec-lid-angle" | ||
|
||
/* | ||
* One channel for the lid angle, the other for timestamp. | ||
*/ | ||
static const struct iio_chan_spec cros_ec_lid_angle_channels[] = { | ||
{ | ||
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
.scan_type.realbits = CROS_EC_SENSOR_BITS, | ||
.scan_type.storagebits = CROS_EC_SENSOR_BITS, | ||
.scan_type.sign = 'u', | ||
.type = IIO_ANGL | ||
}, | ||
IIO_CHAN_SOFT_TIMESTAMP(1) | ||
}; | ||
|
||
/* State data for ec_sensors iio driver. */ | ||
struct cros_ec_lid_angle_state { | ||
/* Shared by all sensors */ | ||
struct cros_ec_sensors_core_state core; | ||
}; | ||
|
||
static int cros_ec_sensors_read_lid_angle(struct iio_dev *indio_dev, | ||
unsigned long scan_mask, s16 *data) | ||
{ | ||
struct cros_ec_sensors_core_state *st = iio_priv(indio_dev); | ||
int ret; | ||
|
||
st->param.cmd = MOTIONSENSE_CMD_LID_ANGLE; | ||
ret = cros_ec_motion_send_host_cmd(st, sizeof(st->resp->lid_angle)); | ||
if (ret) { | ||
dev_warn(&indio_dev->dev, "Unable to read lid angle\n"); | ||
return ret; | ||
} | ||
|
||
*data = st->resp->lid_angle.value; | ||
return 0; | ||
} | ||
|
||
static int cros_ec_lid_angle_read(struct iio_dev *indio_dev, | ||
struct iio_chan_spec const *chan, | ||
int *val, int *val2, long mask) | ||
{ | ||
struct cros_ec_lid_angle_state *st = iio_priv(indio_dev); | ||
s16 data; | ||
int ret; | ||
|
||
mutex_lock(&st->core.cmd_lock); | ||
ret = cros_ec_sensors_read_lid_angle(indio_dev, 1, &data); | ||
if (ret == 0) { | ||
*val = data; | ||
ret = IIO_VAL_INT; | ||
} | ||
mutex_unlock(&st->core.cmd_lock); | ||
return ret; | ||
} | ||
|
||
static const struct iio_info cros_ec_lid_angle_info = { | ||
.read_raw = &cros_ec_lid_angle_read, | ||
}; | ||
|
||
static int cros_ec_lid_angle_probe(struct platform_device *pdev) | ||
{ | ||
struct device *dev = &pdev->dev; | ||
struct iio_dev *indio_dev; | ||
struct cros_ec_lid_angle_state *state; | ||
int ret; | ||
|
||
indio_dev = devm_iio_device_alloc(dev, sizeof(*state)); | ||
if (!indio_dev) | ||
return -ENOMEM; | ||
|
||
ret = cros_ec_sensors_core_init(pdev, indio_dev, false); | ||
if (ret) | ||
return ret; | ||
|
||
indio_dev->info = &cros_ec_lid_angle_info; | ||
state = iio_priv(indio_dev); | ||
indio_dev->channels = cros_ec_lid_angle_channels; | ||
indio_dev->num_channels = ARRAY_SIZE(cros_ec_lid_angle_channels); | ||
|
||
state->core.read_ec_sensors_data = cros_ec_sensors_read_lid_angle; | ||
|
||
ret = devm_iio_triggered_buffer_setup(dev, indio_dev, NULL, | ||
cros_ec_sensors_capture, NULL); | ||
if (ret) | ||
return ret; | ||
|
||
return devm_iio_device_register(dev, indio_dev); | ||
} | ||
|
||
static const struct platform_device_id cros_ec_lid_angle_ids[] = { | ||
{ | ||
.name = DRV_NAME, | ||
}, | ||
{ /* sentinel */ } | ||
}; | ||
MODULE_DEVICE_TABLE(platform, cros_ec_lid_angle_ids); | ||
|
||
static struct platform_driver cros_ec_lid_angle_platform_driver = { | ||
.driver = { | ||
.name = DRV_NAME, | ||
.pm = &cros_ec_sensors_pm_ops, | ||
}, | ||
.probe = cros_ec_lid_angle_probe, | ||
.id_table = cros_ec_lid_angle_ids, | ||
}; | ||
module_platform_driver(cros_ec_lid_angle_platform_driver); | ||
|
||
MODULE_DESCRIPTION("ChromeOS EC driver for reporting convertible lid angle."); | ||
MODULE_LICENSE("GPL v2"); |
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
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
Oops, something went wrong.