Skip to content

Commit

Permalink
mfd: cros-ec: Introduce CEC commands and events definitions.
Browse files Browse the repository at this point in the history
The EC can expose a CEC bus, this patch adds the CEC related definitions
needed by the cros-ec-cec driver.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
  • Loading branch information
Neil Armstrong authored and Lee Jones committed Jul 13, 2018
1 parent 57e94c8 commit f47674e
Showing 1 changed file with 81 additions and 0 deletions.
81 changes: 81 additions & 0 deletions include/linux/mfd/cros_ec_commands.h
Original file line number Diff line number Diff line change
Expand Up @@ -804,6 +804,8 @@ enum ec_feature_code {
EC_FEATURE_MOTION_SENSE_FIFO = 24,
/* EC has RTC feature that can be controlled by host commands */
EC_FEATURE_RTC = 27,
/* EC supports CEC commands */
EC_FEATURE_CEC = 35,
};

#define EC_FEATURE_MASK_0(event_code) (1UL << (event_code % 32))
Expand Down Expand Up @@ -2078,6 +2080,12 @@ enum ec_mkbp_event {
/* EC sent a sysrq command */
EC_MKBP_EVENT_SYSRQ = 6,

/* Notify the AP that something happened on CEC */
EC_MKBP_EVENT_CEC_EVENT = 8,

/* Send an incoming CEC message to the AP */
EC_MKBP_EVENT_CEC_MESSAGE = 9,

/* Number of MKBP events */
EC_MKBP_EVENT_COUNT,
};
Expand Down Expand Up @@ -2845,6 +2853,79 @@ struct ec_params_reboot_ec {
#define EC_ACPI_MEM_VERSION_CURRENT 1


/*****************************************************************************/
/*
* HDMI CEC commands
*
* These commands are for sending and receiving message via HDMI CEC
*/
#define EC_MAX_CEC_MSG_LEN 16

/* CEC message from the AP to be written on the CEC bus */
#define EC_CMD_CEC_WRITE_MSG 0x00B8

/**
* struct ec_params_cec_write - Message to write to the CEC bus
* @msg: message content to write to the CEC bus
*/
struct ec_params_cec_write {
uint8_t msg[EC_MAX_CEC_MSG_LEN];
} __packed;

/* Set various CEC parameters */
#define EC_CMD_CEC_SET 0x00BA

/**
* struct ec_params_cec_set - CEC parameters set
* @cmd: parameter type, can be CEC_CMD_ENABLE or CEC_CMD_LOGICAL_ADDRESS
* @val: in case cmd is CEC_CMD_ENABLE, this field can be 0 to disable CEC
* or 1 to enable CEC functionality, in case cmd is CEC_CMD_LOGICAL_ADDRESS,
* this field encodes the requested logical address between 0 and 15
* or 0xff to unregister
*/
struct ec_params_cec_set {
uint8_t cmd; /* enum cec_command */
uint8_t val;
} __packed;

/* Read various CEC parameters */
#define EC_CMD_CEC_GET 0x00BB

/**
* struct ec_params_cec_get - CEC parameters get
* @cmd: parameter type, can be CEC_CMD_ENABLE or CEC_CMD_LOGICAL_ADDRESS
*/
struct ec_params_cec_get {
uint8_t cmd; /* enum cec_command */
} __packed;

/**
* struct ec_response_cec_get - CEC parameters get response
* @val: in case cmd was CEC_CMD_ENABLE, this field will 0 if CEC is
* disabled or 1 if CEC functionality is enabled,
* in case cmd was CEC_CMD_LOGICAL_ADDRESS, this will encode the
* configured logical address between 0 and 15 or 0xff if unregistered
*/
struct ec_response_cec_get {
uint8_t val;
} __packed;

/* CEC parameters command */
enum ec_cec_command {
/* CEC reading, writing and events enable */
CEC_CMD_ENABLE,
/* CEC logical address */
CEC_CMD_LOGICAL_ADDRESS,
};

/* Events from CEC to AP */
enum mkbp_cec_event {
/* Outgoing message was acknowledged by a follower */
EC_MKBP_CEC_SEND_OK = BIT(0),
/* Outgoing message was not acknowledged */
EC_MKBP_CEC_SEND_FAILED = BIT(1),
};

/*****************************************************************************/
/*
* Special commands
Expand Down

0 comments on commit f47674e

Please sign in to comment.