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 ...
This commit is contained in:
@@ -155,6 +155,7 @@ struct cros_ec_device {
|
||||
struct ec_response_get_next_event_v1 event_data;
|
||||
int event_size;
|
||||
u32 host_event_wake_mask;
|
||||
u32 last_resume_result;
|
||||
};
|
||||
|
||||
/**
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -13,12 +13,9 @@
|
||||
|
||||
/* Message flags for using the mailbox() interface */
|
||||
#define WILCO_EC_FLAG_NO_RESPONSE BIT(0) /* EC does not respond */
|
||||
#define WILCO_EC_FLAG_EXTENDED_DATA BIT(1) /* EC returns 256 data bytes */
|
||||
|
||||
/* Normal commands have a maximum 32 bytes of data */
|
||||
#define EC_MAILBOX_DATA_SIZE 32
|
||||
/* Extended commands have 256 bytes of response data */
|
||||
#define EC_MAILBOX_DATA_SIZE_EXTENDED 256
|
||||
|
||||
/**
|
||||
* struct wilco_ec_device - Wilco Embedded Controller handle.
|
||||
@@ -32,6 +29,7 @@
|
||||
* @data_size: Size of the data buffer used for EC communication.
|
||||
* @debugfs_pdev: The child platform_device used by the debugfs sub-driver.
|
||||
* @rtc_pdev: The child platform_device used by the RTC sub-driver.
|
||||
* @telem_pdev: The child platform_device used by the telemetry sub-driver.
|
||||
*/
|
||||
struct wilco_ec_device {
|
||||
struct device *dev;
|
||||
@@ -43,6 +41,7 @@ struct wilco_ec_device {
|
||||
size_t data_size;
|
||||
struct platform_device *debugfs_pdev;
|
||||
struct platform_device *rtc_pdev;
|
||||
struct platform_device *telem_pdev;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -85,14 +84,12 @@ struct wilco_ec_response {
|
||||
* enum wilco_ec_msg_type - Message type to select a set of command codes.
|
||||
* @WILCO_EC_MSG_LEGACY: Legacy EC messages for standard EC behavior.
|
||||
* @WILCO_EC_MSG_PROPERTY: Get/Set/Sync EC controlled NVRAM property.
|
||||
* @WILCO_EC_MSG_TELEMETRY_SHORT: 32 bytes of telemetry data provided by the EC.
|
||||
* @WILCO_EC_MSG_TELEMETRY_LONG: 256 bytes of telemetry data provided by the EC.
|
||||
* @WILCO_EC_MSG_TELEMETRY: Request telemetry data from the EC.
|
||||
*/
|
||||
enum wilco_ec_msg_type {
|
||||
WILCO_EC_MSG_LEGACY = 0x00f0,
|
||||
WILCO_EC_MSG_PROPERTY = 0x00f2,
|
||||
WILCO_EC_MSG_TELEMETRY_SHORT = 0x00f5,
|
||||
WILCO_EC_MSG_TELEMETRY_LONG = 0x00f6,
|
||||
WILCO_EC_MSG_TELEMETRY = 0x00f5,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -123,4 +120,87 @@ struct wilco_ec_message {
|
||||
*/
|
||||
int wilco_ec_mailbox(struct wilco_ec_device *ec, struct wilco_ec_message *msg);
|
||||
|
||||
/*
|
||||
* A Property is typically a data item that is stored to NVRAM
|
||||
* by the EC. Each of these data items has an index associated
|
||||
* with it, known as the Property ID (PID). Properties may have
|
||||
* variable lengths, up to a max of WILCO_EC_PROPERTY_MAX_SIZE
|
||||
* bytes. Properties can be simple integers, or they may be more
|
||||
* complex binary data.
|
||||
*/
|
||||
|
||||
#define WILCO_EC_PROPERTY_MAX_SIZE 4
|
||||
|
||||
/**
|
||||
* struct ec_property_set_msg - Message to get or set a property.
|
||||
* @property_id: Which property to get or set.
|
||||
* @length: Number of bytes of |data| that are used.
|
||||
* @data: Actual property data.
|
||||
*/
|
||||
struct wilco_ec_property_msg {
|
||||
u32 property_id;
|
||||
int length;
|
||||
u8 data[WILCO_EC_PROPERTY_MAX_SIZE];
|
||||
};
|
||||
|
||||
/**
|
||||
* wilco_ec_get_property() - Retrieve a property from the EC.
|
||||
* @ec: Embedded Controller device.
|
||||
* @prop_msg: Message for request and response.
|
||||
*
|
||||
* The property_id field of |prop_msg| should be filled before calling this
|
||||
* function. The result will be stored in the data and length fields.
|
||||
*
|
||||
* Return: 0 on success, negative error code on failure.
|
||||
*/
|
||||
int wilco_ec_get_property(struct wilco_ec_device *ec,
|
||||
struct wilco_ec_property_msg *prop_msg);
|
||||
|
||||
/**
|
||||
* wilco_ec_set_property() - Store a property on the EC.
|
||||
* @ec: Embedded Controller device.
|
||||
* @prop_msg: Message for request and response.
|
||||
*
|
||||
* The property_id, length, and data fields of |prop_msg| should be
|
||||
* filled before calling this function.
|
||||
*
|
||||
* Return: 0 on success, negative error code on failure.
|
||||
*/
|
||||
int wilco_ec_set_property(struct wilco_ec_device *ec,
|
||||
struct wilco_ec_property_msg *prop_msg);
|
||||
|
||||
/**
|
||||
* wilco_ec_get_byte_property() - Retrieve a byte-size property from the EC.
|
||||
* @ec: Embedded Controller device.
|
||||
* @property_id: Which property to retrieve.
|
||||
* @val: The result value, will be filled by this function.
|
||||
*
|
||||
* Return: 0 on success, negative error code on failure.
|
||||
*/
|
||||
int wilco_ec_get_byte_property(struct wilco_ec_device *ec, u32 property_id,
|
||||
u8 *val);
|
||||
|
||||
/**
|
||||
* wilco_ec_get_byte_property() - Store a byte-size property on the EC.
|
||||
* @ec: Embedded Controller device.
|
||||
* @property_id: Which property to store.
|
||||
* @val: Value to store.
|
||||
*
|
||||
* Return: 0 on success, negative error code on failure.
|
||||
*/
|
||||
int wilco_ec_set_byte_property(struct wilco_ec_device *ec, u32 property_id,
|
||||
u8 val);
|
||||
|
||||
/**
|
||||
* wilco_ec_add_sysfs() - Create sysfs entries
|
||||
* @ec: Wilco EC device
|
||||
*
|
||||
* wilco_ec_remove_sysfs() needs to be called afterwards
|
||||
* to perform the necessary cleanup.
|
||||
*
|
||||
* Return: 0 on success or negative error code on failure.
|
||||
*/
|
||||
int wilco_ec_add_sysfs(struct wilco_ec_device *ec);
|
||||
void wilco_ec_remove_sysfs(struct wilco_ec_device *ec);
|
||||
|
||||
#endif /* WILCO_EC_H */
|
||||
|
Reference in New Issue
Block a user