Merge tag 'dm-pull-30jan21' of https://gitlab.denx.de/u-boot/custodians/u-boot-dm
tpm fixes for coral binman fixes support for symbols in sub-sections support for additional cros_ec commands various minor fixes / tweaks
This commit is contained in:
@@ -234,11 +234,61 @@ int cros_ec_flash_update_rw(struct udevice *dev, const uint8_t *image,
|
||||
struct udevice *board_get_cros_ec_dev(void);
|
||||
|
||||
struct dm_cros_ec_ops {
|
||||
/**
|
||||
* check_version() - Check the protocol version being used (optional)
|
||||
*
|
||||
* If provided, this function should check that the EC can be supported
|
||||
* by the driver. If not provided, HELLO messages will be sent to try
|
||||
* to determine the protocol version.
|
||||
*
|
||||
* @dev: Device to check
|
||||
* @return 0 if the protocol is valid, -ve if not supported
|
||||
*/
|
||||
int (*check_version)(struct udevice *dev);
|
||||
|
||||
/**
|
||||
* command() - Old-style command interface
|
||||
*
|
||||
* This sends a command and receives a response (deprecated, use
|
||||
* packet())
|
||||
*
|
||||
* @dev: Device to use
|
||||
* @cmd: Command to send (only supports 0-0xff)
|
||||
* @cmd_version: Version of command to send (often 0)
|
||||
* @dout: Output data (may be NULL If dout_len=0)
|
||||
* @dout_len: Length of output data excluding 4-byte header
|
||||
* @dinp: On input, set to point to input data, often struct
|
||||
* cros_ec_dev->din - typically this is left alone but may be
|
||||
* updated by the driver
|
||||
* @din_len: Maximum length of response
|
||||
* @return number of bytes in response, or -ve on error
|
||||
*/
|
||||
int (*command)(struct udevice *dev, uint8_t cmd, int cmd_version,
|
||||
const uint8_t *dout, int dout_len,
|
||||
uint8_t **dinp, int din_len);
|
||||
|
||||
/**
|
||||
* packet() - New-style command interface
|
||||
*
|
||||
* This interface is preferred over command(), since it is typically
|
||||
* easier to implement.
|
||||
*
|
||||
* @dev: Device to use
|
||||
* @out_bytes: Number of bytes to send (from struct cros_ec_dev->dout)
|
||||
* @in_bytes: Maximum number of bytes to expect in response
|
||||
* @return number of bytes in response, or -ve on error
|
||||
*/
|
||||
int (*packet)(struct udevice *dev, int out_bytes, int in_bytes);
|
||||
|
||||
/**
|
||||
* get_switches() - Get value of EC switches
|
||||
*
|
||||
* This is currently supported on the LPC EC.
|
||||
*
|
||||
* @dev: Device to use
|
||||
* @return current switches value, or -ENOSYS if not supported
|
||||
*/
|
||||
int (*get_switches)(struct udevice *dev);
|
||||
};
|
||||
|
||||
#define dm_cros_ec_get_ops(dev) \
|
||||
@@ -329,6 +379,14 @@ int cros_ec_flash_write(struct udevice *dev, const uint8_t *data,
|
||||
int cros_ec_flash_offset(struct udevice *dev, enum ec_flash_region region,
|
||||
uint32_t *offset, uint32_t *size);
|
||||
|
||||
/**
|
||||
* cros_ec_get_sku_id() - Read the SKU ID
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* return SKU ID, or -ve on error
|
||||
*/
|
||||
int cros_ec_get_sku_id(struct udevice *dev);
|
||||
|
||||
/**
|
||||
* Read/write non-volatile data from/to a CROS-EC device.
|
||||
*
|
||||
@@ -497,4 +555,88 @@ int cros_ec_get_lid_shutdown_mask(struct udevice *dev);
|
||||
*/
|
||||
int cros_ec_set_lid_shutdown_mask(struct udevice *dev, int enable);
|
||||
|
||||
/**
|
||||
* cros_ec_hello() - Send a hello message
|
||||
*
|
||||
* Sends a message with a fixed input value and checks that the expected output
|
||||
* value is received
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* @handshakep: If non-NULL, returns received handshake value on error
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int cros_ec_hello(struct udevice *dev, uint *handshakep);
|
||||
|
||||
/**
|
||||
* cros_ec_get_features() - Get the set of features provided by the EC
|
||||
*
|
||||
* See enum ec_feature_code for the list of available features
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* @featuresp: Returns a bitmask of supported features
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int cros_ec_get_features(struct udevice *dev, u64 *featuresp);
|
||||
|
||||
/**
|
||||
* cros_ec_check_feature() - Check if a feature is supported
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* @feature: Feature number to check (enum ec_feature_code)
|
||||
* @return true if supported, false if not, -ve on error
|
||||
*/
|
||||
int cros_ec_check_feature(struct udevice *dev, uint feature);
|
||||
|
||||
/**
|
||||
* cros_ec_get_switches() - Get switches value
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* @return switches value, or -ENOSYS if not supported, or other -ve value on
|
||||
* other error
|
||||
*/
|
||||
int cros_ec_get_switches(struct udevice *dev);
|
||||
|
||||
/**
|
||||
* cros_ec_vstore_supported() - Check if vstore is supported
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* @return false if not supported, true if supported, -ve on error
|
||||
*/
|
||||
int cros_ec_vstore_supported(struct udevice *dev);
|
||||
|
||||
/**
|
||||
* cros_ec_vstore_info() - Get vstore information
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* @lockedp: mask of locked slots
|
||||
* @return number of vstore slots supported by the EC,, -ve on error
|
||||
*/
|
||||
int cros_ec_vstore_info(struct udevice *dev, u32 *lockedp);
|
||||
|
||||
/**
|
||||
* cros_ec_vstore_read() - Read data from EC vstore slot
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* @slot: vstore slot to read from
|
||||
* @data: buffer to store read data, must be EC_VSTORE_SLOT_SIZE bytes
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int cros_ec_vstore_read(struct udevice *dev, int slot, uint8_t *data);
|
||||
|
||||
/**
|
||||
* cros_ec_vstore_write() - Save data into EC vstore slot
|
||||
*
|
||||
* The maximum size of data is EC_VSTORE_SLOT_SIZE. It is the caller's
|
||||
* responsibility to check the number of implemented slots by querying the
|
||||
* vstore info.
|
||||
*
|
||||
* @dev: CROS-EC device
|
||||
* @slot: vstore slot to write into
|
||||
* @data: data to write
|
||||
* @size: size of data in bytes
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int cros_ec_vstore_write(struct udevice *dev, int slot, const uint8_t *data,
|
||||
size_t size);
|
||||
|
||||
#endif
|
||||
|
||||
1
include/ctype.h
Symbolic link
1
include/ctype.h
Symbolic link
@@ -0,0 +1 @@
|
||||
linux/ctype.h
|
||||
@@ -111,7 +111,7 @@ enum {
|
||||
* probe method if the device has a device tree node.
|
||||
*
|
||||
* All three of plat, priv and uclass_priv can be allocated by the
|
||||
* driver, or you can use the auto_alloc_size members of struct driver and
|
||||
* driver, or you can use the auto members of struct driver and
|
||||
* struct uclass_driver to have driver model do this automatically.
|
||||
*
|
||||
* @driver: The driver used by this device
|
||||
|
||||
@@ -30,8 +30,7 @@ static inline const struct device_node *dev_np(const struct udevice *dev)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_DM_DEV_READ_INLINE
|
||||
|
||||
#if !defined(CONFIG_DM_DEV_READ_INLINE) || CONFIG_IS_ENABLED(OF_PLATDATA)
|
||||
/**
|
||||
* dev_read_u32() - read a 32-bit integer from a device's DT property
|
||||
*
|
||||
@@ -1007,7 +1006,7 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev,
|
||||
|
||||
static inline int dev_read_alias_highest_id(const char *stem)
|
||||
{
|
||||
if (!CONFIG_IS_ENABLED(OF_LIBFDT))
|
||||
if (!CONFIG_IS_ENABLED(OF_LIBFDT) || !gd->fdt_blob)
|
||||
return -1;
|
||||
return fdtdec_get_alias_highest_id(gd->fdt_blob, stem);
|
||||
}
|
||||
|
||||
@@ -1101,13 +1101,50 @@ enum ec_feature_code {
|
||||
EC_FEATURE_DEVICE_EVENT = 31,
|
||||
/* EC supports the unified wake masks for LPC/eSPI systems */
|
||||
EC_FEATURE_UNIFIED_WAKE_MASKS = 32,
|
||||
/* EC supports 64-bit host events */
|
||||
EC_FEATURE_HOST_EVENT64 = 33,
|
||||
/* EC runs code in RAM (not in place, a.k.a. XIP) */
|
||||
EC_FEATURE_EXEC_IN_RAM = 34,
|
||||
/* EC supports CEC commands */
|
||||
EC_FEATURE_CEC = 35,
|
||||
/* EC supports tight sensor timestamping. */
|
||||
EC_FEATURE_MOTION_SENSE_TIGHT_TIMESTAMPS = 36,
|
||||
/*
|
||||
* EC supports tablet mode detection aligned to Chrome and allows
|
||||
* setting of threshold by host command using
|
||||
* MOTIONSENSE_CMD_TABLET_MODE_LID_ANGLE.
|
||||
*/
|
||||
EC_FEATURE_REFINED_TABLET_MODE_HYSTERESIS = 37,
|
||||
/*
|
||||
* Early Firmware Selection ver.2. Enabled by CONFIG_VBOOT_EFS2.
|
||||
* Note this is a RO feature. So, a query (EC_CMD_GET_FEATURES) should
|
||||
* be sent to RO to be precise.
|
||||
*/
|
||||
EC_FEATURE_EFS2 = 38,
|
||||
/* The MCU is a System Companion Processor (SCP). */
|
||||
EC_FEATURE_SCP = 39,
|
||||
/* The MCU is an Integrated Sensor Hub */
|
||||
EC_FEATURE_ISH = 40,
|
||||
/* New TCPMv2 TYPEC_ prefaced commands supported */
|
||||
EC_FEATURE_TYPEC_CMD = 41,
|
||||
/*
|
||||
* The EC will wait for direction from the AP to enter Type-C alternate
|
||||
* modes or USB4.
|
||||
*/
|
||||
EC_FEATURE_TYPEC_REQUIRE_AP_MODE_ENTRY = 42,
|
||||
/*
|
||||
* The EC will wait for an acknowledge from the AP after setting the
|
||||
* mux.
|
||||
*/
|
||||
EC_FEATURE_TYPEC_MUX_REQUIRE_AP_ACK = 43,
|
||||
};
|
||||
|
||||
#define EC_FEATURE_MASK_0(event_code) (1UL << (event_code % 32))
|
||||
#define EC_FEATURE_MASK_1(event_code) (1UL << (event_code - 32))
|
||||
struct __ec_align4 ec_response_get_features {
|
||||
#define EC_FEATURE_MASK_0(event_code) BIT(event_code % 32)
|
||||
#define EC_FEATURE_MASK_1(event_code) BIT(event_code - 32)
|
||||
|
||||
struct ec_response_get_features {
|
||||
uint32_t flags[2];
|
||||
};
|
||||
} __ec_align4;
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Get the board's SKU ID from EC */
|
||||
|
||||
18
include/os.h
18
include/os.h
@@ -424,4 +424,22 @@ int os_setup_signal_handlers(void);
|
||||
*/
|
||||
void os_signal_action(int sig, unsigned long pc);
|
||||
|
||||
/**
|
||||
* os_get_time_offset() - get time offset
|
||||
*
|
||||
* Get the time offset from environment variable UBOOT_SB_TIME_OFFSET.
|
||||
*
|
||||
* Return: offset in seconds
|
||||
*/
|
||||
long os_get_time_offset(void);
|
||||
|
||||
/**
|
||||
* os_set_time_offset() - set time offset
|
||||
*
|
||||
* Save the time offset in environment variable UBOOT_SB_TIME_OFFSET.
|
||||
*
|
||||
* @offset: offset in seconds
|
||||
*/
|
||||
void os_set_time_offset(long offset);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user