diff options
Diffstat (limited to 'include/linux/platform_data')
| -rw-r--r-- | include/linux/platform_data/cros_ec_commands.h | 285 | ||||
| -rw-r--r-- | include/linux/platform_data/cros_ec_proto.h | 138 | ||||
| -rw-r--r-- | include/linux/platform_data/cros_ec_sensorhub.h | 30 | ||||
| -rw-r--r-- | include/linux/platform_data/gpio_backlight.h | 3 | ||||
| -rw-r--r-- | include/linux/platform_data/hsmmc-omap.h | 3 | ||||
| -rw-r--r-- | include/linux/platform_data/i2c-pxa.h | 4 | ||||
| -rw-r--r-- | include/linux/platform_data/intel-spi.h | 1 | ||||
| -rw-r--r-- | include/linux/platform_data/pixcir_i2c_ts.h | 64 | ||||
| -rw-r--r-- | include/linux/platform_data/spi-mt65xx.h | 1 | ||||
| -rw-r--r-- | include/linux/platform_data/st_sensors_pdata.h | 2 | ||||
| -rw-r--r-- | include/linux/platform_data/ti-prm.h | 21 | ||||
| -rw-r--r-- | include/linux/platform_data/ti-sysc.h | 2 | ||||
| -rw-r--r-- | include/linux/platform_data/wilco-ec.h | 15 | 
13 files changed, 318 insertions, 251 deletions
diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index 98415686cbfa..69210881ebac 100644 --- a/include/linux/platform_data/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h @@ -556,6 +556,9 @@ enum host_event_code {  	/* Keyboard recovery combo with hardware reinitialization */  	EC_HOST_EVENT_KEYBOARD_RECOVERY_HW_REINIT = 30, +	/* WoV */ +	EC_HOST_EVENT_WOV = 31, +  	/*  	 * The high bit of the event mask is not used as a host event code.  If  	 * it reads back as set, then the entire event mask should be @@ -1277,8 +1280,6 @@ enum ec_feature_code {  	 * MOTIONSENSE_CMD_TABLET_MODE_LID_ANGLE.  	 */  	EC_FEATURE_REFINED_TABLET_MODE_HYSTERESIS = 37, -	/* EC supports audio codec. */ -	EC_FEATURE_AUDIO_CODEC = 38,  	/* The MCU is a System Companion Processor (SCP). */  	EC_FEATURE_SCP = 39,  	/* The MCU is an Integrated Sensor Hub */ @@ -4468,92 +4469,246 @@ enum mkbp_cec_event {  /*****************************************************************************/ -/* Commands for I2S recording on audio codec. */ +/* Commands for audio codec. */ +#define EC_CMD_EC_CODEC 0x00BC -#define EC_CMD_CODEC_I2S 0x00BC -#define EC_WOV_I2S_SAMPLE_RATE 48000 +enum ec_codec_subcmd { +	EC_CODEC_GET_CAPABILITIES = 0x0, +	EC_CODEC_GET_SHM_ADDR = 0x1, +	EC_CODEC_SET_SHM_ADDR = 0x2, +	EC_CODEC_SUBCMD_COUNT, +}; -enum ec_codec_i2s_subcmd { -	EC_CODEC_SET_SAMPLE_DEPTH = 0x0, -	EC_CODEC_SET_GAIN = 0x1, -	EC_CODEC_GET_GAIN = 0x2, -	EC_CODEC_I2S_ENABLE = 0x3, -	EC_CODEC_I2S_SET_CONFIG = 0x4, -	EC_CODEC_I2S_SET_TDM_CONFIG = 0x5, -	EC_CODEC_I2S_SET_BCLK = 0x6, -	EC_CODEC_I2S_SUBCMD_COUNT = 0x7, +enum ec_codec_cap { +	EC_CODEC_CAP_WOV_AUDIO_SHM = 0, +	EC_CODEC_CAP_WOV_LANG_SHM = 1, +	EC_CODEC_CAP_LAST = 32,  }; -enum ec_sample_depth_value { -	EC_CODEC_SAMPLE_DEPTH_16 = 0, -	EC_CODEC_SAMPLE_DEPTH_24 = 1, +enum ec_codec_shm_id { +	EC_CODEC_SHM_ID_WOV_AUDIO = 0x0, +	EC_CODEC_SHM_ID_WOV_LANG = 0x1, +	EC_CODEC_SHM_ID_LAST,  }; -enum ec_i2s_config { -	EC_DAI_FMT_I2S = 0, -	EC_DAI_FMT_RIGHT_J = 1, -	EC_DAI_FMT_LEFT_J = 2, -	EC_DAI_FMT_PCM_A = 3, -	EC_DAI_FMT_PCM_B = 4, -	EC_DAI_FMT_PCM_TDM = 5, +enum ec_codec_shm_type { +	EC_CODEC_SHM_TYPE_EC_RAM = 0x0, +	EC_CODEC_SHM_TYPE_SYSTEM_RAM = 0x1,  }; -/* - * For subcommand EC_CODEC_GET_GAIN. - */ -struct __ec_align1 ec_codec_i2s_gain { +struct __ec_align1 ec_param_ec_codec_get_shm_addr { +	uint8_t shm_id; +	uint8_t reserved[3]; +}; + +struct __ec_align4 ec_param_ec_codec_set_shm_addr { +	uint64_t phys_addr; +	uint32_t len; +	uint8_t shm_id; +	uint8_t reserved[3]; +}; + +struct __ec_align4 ec_param_ec_codec { +	uint8_t cmd; /* enum ec_codec_subcmd */ +	uint8_t reserved[3]; + +	union { +		struct ec_param_ec_codec_get_shm_addr +				get_shm_addr_param; +		struct ec_param_ec_codec_set_shm_addr +				set_shm_addr_param; +	}; +}; + +struct __ec_align4 ec_response_ec_codec_get_capabilities { +	uint32_t capabilities; +}; + +struct __ec_align4 ec_response_ec_codec_get_shm_addr { +	uint64_t phys_addr; +	uint32_t len; +	uint8_t type; +	uint8_t reserved[3]; +}; + +/*****************************************************************************/ + +/* Commands for DMIC on audio codec. */ +#define EC_CMD_EC_CODEC_DMIC 0x00BD + +enum ec_codec_dmic_subcmd { +	EC_CODEC_DMIC_GET_MAX_GAIN = 0x0, +	EC_CODEC_DMIC_SET_GAIN_IDX = 0x1, +	EC_CODEC_DMIC_GET_GAIN_IDX = 0x2, +	EC_CODEC_DMIC_SUBCMD_COUNT, +}; + +enum ec_codec_dmic_channel { +	EC_CODEC_DMIC_CHANNEL_0 = 0x0, +	EC_CODEC_DMIC_CHANNEL_1 = 0x1, +	EC_CODEC_DMIC_CHANNEL_2 = 0x2, +	EC_CODEC_DMIC_CHANNEL_3 = 0x3, +	EC_CODEC_DMIC_CHANNEL_4 = 0x4, +	EC_CODEC_DMIC_CHANNEL_5 = 0x5, +	EC_CODEC_DMIC_CHANNEL_6 = 0x6, +	EC_CODEC_DMIC_CHANNEL_7 = 0x7, +	EC_CODEC_DMIC_CHANNEL_COUNT, +}; + +struct __ec_align1 ec_param_ec_codec_dmic_set_gain_idx { +	uint8_t channel; /* enum ec_codec_dmic_channel */ +	uint8_t gain; +	uint8_t reserved[2]; +}; + +struct __ec_align1 ec_param_ec_codec_dmic_get_gain_idx { +	uint8_t channel; /* enum ec_codec_dmic_channel */ +	uint8_t reserved[3]; +}; + +struct __ec_align4 ec_param_ec_codec_dmic { +	uint8_t cmd; /* enum ec_codec_dmic_subcmd */ +	uint8_t reserved[3]; + +	union { +		struct ec_param_ec_codec_dmic_set_gain_idx +				set_gain_idx_param; +		struct ec_param_ec_codec_dmic_get_gain_idx +				get_gain_idx_param; +	}; +}; + +struct __ec_align1 ec_response_ec_codec_dmic_get_max_gain { +	uint8_t max_gain; +}; + +struct __ec_align1 ec_response_ec_codec_dmic_get_gain_idx { +	uint8_t gain; +}; + +/*****************************************************************************/ + +/* Commands for I2S RX on audio codec. */ + +#define EC_CMD_EC_CODEC_I2S_RX 0x00BE + +enum ec_codec_i2s_rx_subcmd { +	EC_CODEC_I2S_RX_ENABLE = 0x0, +	EC_CODEC_I2S_RX_DISABLE = 0x1, +	EC_CODEC_I2S_RX_SET_SAMPLE_DEPTH = 0x2, +	EC_CODEC_I2S_RX_SET_DAIFMT = 0x3, +	EC_CODEC_I2S_RX_SET_BCLK = 0x4, +	EC_CODEC_I2S_RX_SUBCMD_COUNT, +}; + +enum ec_codec_i2s_rx_sample_depth { +	EC_CODEC_I2S_RX_SAMPLE_DEPTH_16 = 0x0, +	EC_CODEC_I2S_RX_SAMPLE_DEPTH_24 = 0x1, +	EC_CODEC_I2S_RX_SAMPLE_DEPTH_COUNT, +}; + +enum ec_codec_i2s_rx_daifmt { +	EC_CODEC_I2S_RX_DAIFMT_I2S = 0x0, +	EC_CODEC_I2S_RX_DAIFMT_RIGHT_J = 0x1, +	EC_CODEC_I2S_RX_DAIFMT_LEFT_J = 0x2, +	EC_CODEC_I2S_RX_DAIFMT_COUNT, +}; + +struct __ec_align1 ec_param_ec_codec_i2s_rx_set_sample_depth { +	uint8_t depth; +	uint8_t reserved[3]; +}; + +struct __ec_align1 ec_param_ec_codec_i2s_rx_set_gain {  	uint8_t left;  	uint8_t right; +	uint8_t reserved[2];  }; -struct __ec_todo_unpacked ec_param_codec_i2s_tdm { -	int16_t ch0_delay; /* 0 to 496 */ -	int16_t ch1_delay; /* -1 to 496 */ -	uint8_t adjacent_to_ch0; -	uint8_t adjacent_to_ch1; +struct __ec_align1 ec_param_ec_codec_i2s_rx_set_daifmt { +	uint8_t daifmt; +	uint8_t reserved[3];  }; -struct __ec_todo_packed ec_param_codec_i2s { -	/* enum ec_codec_i2s_subcmd */ -	uint8_t cmd; +struct __ec_align4 ec_param_ec_codec_i2s_rx_set_bclk { +	uint32_t bclk; +}; + +struct __ec_align4 ec_param_ec_codec_i2s_rx { +	uint8_t cmd; /* enum ec_codec_i2s_rx_subcmd */ +	uint8_t reserved[3]; +  	union { -		/* -		 * EC_CODEC_SET_SAMPLE_DEPTH -		 * Value should be one of ec_sample_depth_value. -		 */ -		uint8_t depth; +		struct ec_param_ec_codec_i2s_rx_set_sample_depth +				set_sample_depth_param; +		struct ec_param_ec_codec_i2s_rx_set_daifmt +				set_daifmt_param; +		struct ec_param_ec_codec_i2s_rx_set_bclk +				set_bclk_param; +	}; +}; -		/* -		 * EC_CODEC_SET_GAIN -		 * Value should be 0~43 for both channels. -		 */ -		struct ec_codec_i2s_gain gain; +/*****************************************************************************/ +/* Commands for WoV on audio codec. */ + +#define EC_CMD_EC_CODEC_WOV 0x00BF + +enum ec_codec_wov_subcmd { +	EC_CODEC_WOV_SET_LANG = 0x0, +	EC_CODEC_WOV_SET_LANG_SHM = 0x1, +	EC_CODEC_WOV_GET_LANG = 0x2, +	EC_CODEC_WOV_ENABLE = 0x3, +	EC_CODEC_WOV_DISABLE = 0x4, +	EC_CODEC_WOV_READ_AUDIO = 0x5, +	EC_CODEC_WOV_READ_AUDIO_SHM = 0x6, +	EC_CODEC_WOV_SUBCMD_COUNT, +}; -		/* -		 * EC_CODEC_I2S_ENABLE -		 * 1 to enable, 0 to disable. -		 */ -		uint8_t i2s_enable; +/* + * @hash is SHA256 of the whole language model. + * @total_len indicates the length of whole language model. + * @offset is the cursor from the beginning of the model. + * @buf is the packet buffer. + * @len denotes how many bytes in the buf. + */ +struct __ec_align4 ec_param_ec_codec_wov_set_lang { +	uint8_t hash[32]; +	uint32_t total_len; +	uint32_t offset; +	uint8_t buf[128]; +	uint32_t len; +}; -		/* -		 * EC_CODEC_I2S_SET_CONFIG -		 * Value should be one of ec_i2s_config. -		 */ -		uint8_t i2s_config; +struct __ec_align4 ec_param_ec_codec_wov_set_lang_shm { +	uint8_t hash[32]; +	uint32_t total_len; +}; -		/* -		 * EC_CODEC_I2S_SET_TDM_CONFIG -		 * Value should be one of ec_i2s_config. -		 */ -		struct ec_param_codec_i2s_tdm tdm_param; +struct __ec_align4 ec_param_ec_codec_wov { +	uint8_t cmd; /* enum ec_codec_wov_subcmd */ +	uint8_t reserved[3]; -		/* -		 * EC_CODEC_I2S_SET_BCLK -		 */ -		uint32_t bclk; +	union { +		struct ec_param_ec_codec_wov_set_lang +				set_lang_param; +		struct ec_param_ec_codec_wov_set_lang_shm +				set_lang_shm_param;  	};  }; +struct __ec_align4 ec_response_ec_codec_wov_get_lang { +	uint8_t hash[32]; +}; + +struct __ec_align4 ec_response_ec_codec_wov_read_audio { +	uint8_t buf[128]; +	uint32_t len; +}; + +struct __ec_align4 ec_response_ec_codec_wov_read_audio_shm { +	uint32_t offset; +	uint32_t len; +};  /*****************************************************************************/  /* System commands */ diff --git a/include/linux/platform_data/cros_ec_proto.h b/include/linux/platform_data/cros_ec_proto.h index eab7036cda09..30098a551523 100644 --- a/include/linux/platform_data/cros_ec_proto.h +++ b/include/linux/platform_data/cros_ec_proto.h @@ -12,6 +12,7 @@  #include <linux/mutex.h>  #include <linux/notifier.h> +#include <linux/mfd/cros_ec.h>  #include <linux/platform_data/cros_ec_commands.h>  #define CROS_EC_DEV_NAME	"cros_ec" @@ -115,12 +116,16 @@ struct cros_ec_command {   *            code.   * @pkt_xfer: Send packet to EC and get response.   * @lock: One transaction at a time. - * @mkbp_event_supported: True if this EC supports the MKBP event protocol. + * @mkbp_event_supported: 0 if MKBP not supported. Otherwise its value is + *                        the maximum supported version of the MKBP host event + *                        command + 1.   * @host_sleep_v1: True if this EC supports the sleep v1 command.   * @event_notifier: Interrupt event notifier for transport devices.   * @event_data: Raw payload transferred with the MKBP event.   * @event_size: Size in bytes of the event data.   * @host_event_wake_mask: Mask of host events that cause wake from suspend. + * @last_event_time: exact time from the hard irq when we got notified of + *     a new event.   * @ec: The platform_device used by the mfd driver to interface with the   *      main EC.   * @pd: The platform_device used by the mfd driver to interface with the @@ -153,7 +158,7 @@ struct cros_ec_device {  	int (*pkt_xfer)(struct cros_ec_device *ec,  			struct cros_ec_command *msg);  	struct mutex lock; -	bool mkbp_event_supported; +	u8 mkbp_event_supported;  	bool host_sleep_v1;  	struct blocking_notifier_head event_notifier; @@ -161,6 +166,7 @@ struct cros_ec_device {  	int event_size;  	u32 host_event_wake_mask;  	u32 last_resume_result; +	ktime_t last_event_time;  	/* The platform devices used by the mfd driver */  	struct platform_device *ec; @@ -168,14 +174,6 @@ struct cros_ec_device {  };  /** - * struct cros_ec_sensor_platform - ChromeOS EC sensor platform information. - * @sensor_num: Id of the sensor, as reported by the EC. - */ -struct cros_ec_sensor_platform { -	u8 sensor_num; -}; - -/**   * struct cros_ec_platform - ChromeOS EC platform information.   * @ec_name: Name of EC device (e.g. 'cros-ec', 'cros-pd', ...)   *           used in /dev/ and sysfs. @@ -187,133 +185,51 @@ struct cros_ec_platform {  	u16 cmd_offset;  }; -/** - * cros_ec_suspend() - Handle a suspend operation for the ChromeOS EC device. - * @ec_dev: Device to suspend. - * - * This can be called by drivers to handle a suspend event. - * - * Return: 0 on success or negative error code. - */  int cros_ec_suspend(struct cros_ec_device *ec_dev); -/** - * cros_ec_resume() - Handle a resume operation for the ChromeOS EC device. - * @ec_dev: Device to resume. - * - * This can be called by drivers to handle a resume event. - * - * Return: 0 on success or negative error code. - */  int cros_ec_resume(struct cros_ec_device *ec_dev); -/** - * cros_ec_prepare_tx() - Prepare an outgoing message in the output buffer. - * @ec_dev: Device to register. - * @msg: Message to write. - * - * This is intended to be used by all ChromeOS EC drivers, but at present - * only SPI uses it. Once LPC uses the same protocol it can start using it. - * I2C could use it now, with a refactor of the existing code. - * - * Return: 0 on success or negative error code. - */  int cros_ec_prepare_tx(struct cros_ec_device *ec_dev,  		       struct cros_ec_command *msg); -/** - * cros_ec_check_result() - Check ec_msg->result. - * @ec_dev: EC device. - * @msg: Message to check. - * - * This is used by ChromeOS EC drivers to check the ec_msg->result for - * errors and to warn about them. - * - * Return: 0 on success or negative error code. - */  int cros_ec_check_result(struct cros_ec_device *ec_dev,  			 struct cros_ec_command *msg); -/** - * cros_ec_cmd_xfer() - Send a command to the ChromeOS EC. - * @ec_dev: EC device. - * @msg: Message to write. - * - * Call this to send a command to the ChromeOS EC.  This should be used - * instead of calling the EC's cmd_xfer() callback directly. - * - * Return: 0 on success or negative error code. - */  int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev,  		     struct cros_ec_command *msg); -/** - * cros_ec_cmd_xfer_status() - Send a command to the ChromeOS EC. - * @ec_dev: EC device. - * @msg: Message to write. - * - * This function is identical to cros_ec_cmd_xfer, except it returns success - * status only if both the command was transmitted successfully and the EC - * replied with success status. It's not necessary to check msg->result when - * using this function. - * - * Return: The number of bytes transferred on success or negative error code. - */  int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev,  			    struct cros_ec_command *msg); -/** - * cros_ec_register() - Register a new ChromeOS EC, using the provided info. - * @ec_dev: Device to register. - * - * Before calling this, allocate a pointer to a new device and then fill - * in all the fields up to the --private-- marker. - * - * Return: 0 on success or negative error code. - */  int cros_ec_register(struct cros_ec_device *ec_dev); -/** - * cros_ec_unregister() - Remove a ChromeOS EC. - * @ec_dev: Device to unregister. - * - * Call this to deregister a ChromeOS EC, then clean up any private data. - * - * Return: 0 on success or negative error code. - */  int cros_ec_unregister(struct cros_ec_device *ec_dev); -/** - * cros_ec_query_all() -  Query the protocol version supported by the - *         ChromeOS EC. - * @ec_dev: Device to register. - * - * Return: 0 on success or negative error code. - */  int cros_ec_query_all(struct cros_ec_device *ec_dev); -/** - * cros_ec_get_next_event() - Fetch next event from the ChromeOS EC. - * @ec_dev: Device to fetch event from. - * @wake_event: Pointer to a bool set to true upon return if the event might be - *              treated as a wake event. Ignored if null. - * - * Return: negative error code on errors; 0 for no data; or else number of - * bytes received (i.e., an event was retrieved successfully). Event types are - * written out to @ec_dev->event_data.event_type on success. - */ -int cros_ec_get_next_event(struct cros_ec_device *ec_dev, bool *wake_event); +int cros_ec_get_next_event(struct cros_ec_device *ec_dev, +			   bool *wake_event, +			   bool *has_more_events); + +u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev); + +int cros_ec_check_features(struct cros_ec_dev *ec, int feature); + +int cros_ec_get_sensor_count(struct cros_ec_dev *ec); + +bool cros_ec_handle_event(struct cros_ec_device *ec_dev);  /** - * cros_ec_get_host_event() - Return a mask of event set by the ChromeOS EC. - * @ec_dev: Device to fetch event from. + * cros_ec_get_time_ns() - Return time in ns.   * - * When MKBP is supported, when the EC raises an interrupt, we collect the - * events raised and call the functions in the ec notifier. This function - * is a helper to know which events are raised. + * This is the function used to record the time for last_event_time in struct + * cros_ec_device during the hard irq.   * - * Return: 0 on error or non-zero bitmask of one or more EC_HOST_EVENT_*. + * Return: ktime_t format since boot.   */ -u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev); +static inline ktime_t cros_ec_get_time_ns(void) +{ +	return ktime_get_boottime_ns(); +}  #endif /* __LINUX_CROS_EC_PROTO_H */ diff --git a/include/linux/platform_data/cros_ec_sensorhub.h b/include/linux/platform_data/cros_ec_sensorhub.h new file mode 100644 index 000000000000..bef7ffc7fce1 --- /dev/null +++ b/include/linux/platform_data/cros_ec_sensorhub.h @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Chrome OS EC MEMS Sensor Hub driver. + * + * Copyright 2019 Google LLC + */ + +#ifndef __LINUX_PLATFORM_DATA_CROS_EC_SENSORHUB_H +#define __LINUX_PLATFORM_DATA_CROS_EC_SENSORHUB_H + +#include <linux/platform_data/cros_ec_commands.h> + +/** + * struct cros_ec_sensor_platform - ChromeOS EC sensor platform information. + * @sensor_num: Id of the sensor, as reported by the EC. + */ +struct cros_ec_sensor_platform { +	u8 sensor_num; +}; + +/** + * struct cros_ec_sensorhub - Sensor Hub device data. + * + * @ec: Embedded Controller where the hub is located. + */ +struct cros_ec_sensorhub { +	struct cros_ec_dev *ec; +}; + +#endif   /* __LINUX_PLATFORM_DATA_CROS_EC_SENSORHUB_H */ diff --git a/include/linux/platform_data/gpio_backlight.h b/include/linux/platform_data/gpio_backlight.h index 34179d600360..1a8b5b1946fe 100644 --- a/include/linux/platform_data/gpio_backlight.h +++ b/include/linux/platform_data/gpio_backlight.h @@ -9,9 +9,6 @@ struct device;  struct gpio_backlight_platform_data {  	struct device *fbdev; -	int gpio; -	int def_value; -	const char *name;  };  #endif diff --git a/include/linux/platform_data/hsmmc-omap.h b/include/linux/platform_data/hsmmc-omap.h index e79d238ff18f..7124a5f4bf06 100644 --- a/include/linux/platform_data/hsmmc-omap.h +++ b/include/linux/platform_data/hsmmc-omap.h @@ -67,9 +67,6 @@ struct omap_hsmmc_platform_data {  	/* string specifying a particular variant of hardware */  	char *version; -	/* if we have special card, init it using this callback */ -	void (*init_card)(struct mmc_card *card); -  	const char *name;  	u32 ocr_mask;  }; diff --git a/include/linux/platform_data/i2c-pxa.h b/include/linux/platform_data/i2c-pxa.h index cb290092599c..6a9b28399b39 100644 --- a/include/linux/platform_data/i2c-pxa.h +++ b/include/linux/platform_data/i2c-pxa.h @@ -55,11 +55,7 @@   */  #define I2C_ISR_INIT	0x7FF  /* status register init */ -struct i2c_slave_client; -  struct i2c_pxa_platform_data { -	unsigned int		slave_addr; -	struct i2c_slave_client	*slave;  	unsigned int		class;  	unsigned int		use_pio :1;  	unsigned int		fast_mode :1; diff --git a/include/linux/platform_data/intel-spi.h b/include/linux/platform_data/intel-spi.h index ebb4f332588b..7f53a5c6f35e 100644 --- a/include/linux/platform_data/intel-spi.h +++ b/include/linux/platform_data/intel-spi.h @@ -13,6 +13,7 @@ enum intel_spi_type {  	INTEL_SPI_BYT = 1,  	INTEL_SPI_LPT,  	INTEL_SPI_BXT, +	INTEL_SPI_CNL,  };  /** diff --git a/include/linux/platform_data/pixcir_i2c_ts.h b/include/linux/platform_data/pixcir_i2c_ts.h deleted file mode 100644 index 4ab3cd6f1cc2..000000000000 --- a/include/linux/platform_data/pixcir_i2c_ts.h +++ /dev/null @@ -1,64 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef	_PIXCIR_I2C_TS_H -#define	_PIXCIR_I2C_TS_H - -/* - * Register map - */ -#define PIXCIR_REG_POWER_MODE	51 -#define PIXCIR_REG_INT_MODE	52 - -/* - * Power modes: - * active: max scan speed - * idle: lower scan speed with automatic transition to active on touch - * halt: datasheet says sleep but this is more like halt as the chip - *       clocks are cut and it can only be brought out of this mode - *	 using the RESET pin. - */ -enum pixcir_power_mode { -	PIXCIR_POWER_ACTIVE, -	PIXCIR_POWER_IDLE, -	PIXCIR_POWER_HALT, -}; - -#define PIXCIR_POWER_MODE_MASK	0x03 -#define PIXCIR_POWER_ALLOW_IDLE (1UL << 2) - -/* - * Interrupt modes: - * periodical: interrupt is asserted periodicaly - * diff coordinates: interrupt is asserted when coordinates change - * level on touch: interrupt level asserted during touch - * pulse on touch: interrupt pulse asserted druing touch - * - */ -enum pixcir_int_mode { -	PIXCIR_INT_PERIODICAL, -	PIXCIR_INT_DIFF_COORD, -	PIXCIR_INT_LEVEL_TOUCH, -	PIXCIR_INT_PULSE_TOUCH, -}; - -#define PIXCIR_INT_MODE_MASK	0x03 -#define PIXCIR_INT_ENABLE	(1UL << 3) -#define PIXCIR_INT_POL_HIGH	(1UL << 2) - -/** - * struct pixcir_irc_chip_data - chip related data - * @max_fingers:	Max number of fingers reported simultaneously by h/w - * @has_hw_ids:		Hardware supports finger tracking IDs - * - */ -struct pixcir_i2c_chip_data { -	u8 max_fingers; -	bool has_hw_ids; -}; - -struct pixcir_ts_platform_data { -	int x_max; -	int y_max; -	struct pixcir_i2c_chip_data chip; -}; - -#endif diff --git a/include/linux/platform_data/spi-mt65xx.h b/include/linux/platform_data/spi-mt65xx.h index f0e6d6483e62..65fd5ffd257c 100644 --- a/include/linux/platform_data/spi-mt65xx.h +++ b/include/linux/platform_data/spi-mt65xx.h @@ -11,7 +11,6 @@  /* Board specific platform_data */  struct mtk_chip_config { -	u32 cs_pol;  	u32 sample_sel;  };  #endif diff --git a/include/linux/platform_data/st_sensors_pdata.h b/include/linux/platform_data/st_sensors_pdata.h index 30929c22227d..e40b28ca892e 100644 --- a/include/linux/platform_data/st_sensors_pdata.h +++ b/include/linux/platform_data/st_sensors_pdata.h @@ -18,12 +18,14 @@   * @open_drain: set the interrupt line to be open drain if possible.   * @spi_3wire: enable spi-3wire mode.   * @pullups: enable/disable i2c controller pullup resistors. + * @wakeup_source: enable/disable device as wakeup generator.   */  struct st_sensors_platform_data {  	u8 drdy_int_pin;  	bool open_drain;  	bool spi_3wire;  	bool pullups; +	bool wakeup_source;  };  #endif /* ST_SENSORS_PDATA_H */ diff --git a/include/linux/platform_data/ti-prm.h b/include/linux/platform_data/ti-prm.h new file mode 100644 index 000000000000..28154c3226c2 --- /dev/null +++ b/include/linux/platform_data/ti-prm.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * TI PRM (Power & Reset Manager) platform data + * + * Copyright (C) 2019 Texas Instruments, Inc. + * + * Tero Kristo <[email protected]> + */ + +#ifndef _LINUX_PLATFORM_DATA_TI_PRM_H +#define _LINUX_PLATFORM_DATA_TI_PRM_H + +struct clockdomain; + +struct ti_prm_platform_data { +	void (*clkdm_deny_idle)(struct clockdomain *clkdm); +	void (*clkdm_allow_idle)(struct clockdomain *clkdm); +	struct clockdomain * (*clkdm_lookup)(const char *name); +}; + +#endif /* _LINUX_PLATFORM_DATA_TI_PRM_H */ diff --git a/include/linux/platform_data/ti-sysc.h b/include/linux/platform_data/ti-sysc.h index b5b7a3423ca8..8cfe570fdece 100644 --- a/include/linux/platform_data/ti-sysc.h +++ b/include/linux/platform_data/ti-sysc.h @@ -49,6 +49,8 @@ struct sysc_regbits {  	s8 emufree_shift;  }; +#define SYSC_QUIRK_FORCE_MSTANDBY	BIT(20) +#define SYSC_MODULE_QUIRK_AESS		BIT(19)  #define SYSC_MODULE_QUIRK_SGX		BIT(18)  #define SYSC_MODULE_QUIRK_HDQ1W		BIT(17)  #define SYSC_MODULE_QUIRK_I2C		BIT(16) diff --git a/include/linux/platform_data/wilco-ec.h b/include/linux/platform_data/wilco-ec.h index ad03b586a095..afede15a95bf 100644 --- a/include/linux/platform_data/wilco-ec.h +++ b/include/linux/platform_data/wilco-ec.h @@ -29,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. + * @charger_pdev: Child platform_device used by the charger config sub-driver.   * @telem_pdev: The child platform_device used by the telemetry sub-driver.   */  struct wilco_ec_device { @@ -41,6 +42,7 @@ struct wilco_ec_device {  	size_t data_size;  	struct platform_device *debugfs_pdev;  	struct platform_device *rtc_pdev; +	struct platform_device *charger_pdev;  	struct platform_device *telem_pdev;  }; @@ -120,6 +122,19 @@ struct wilco_ec_message {   */  int wilco_ec_mailbox(struct wilco_ec_device *ec, struct wilco_ec_message *msg); +/** + * wilco_keyboard_leds_init() - Set up the keyboard backlight LEDs. + * @ec: EC device to query. + * + * After this call, the keyboard backlight will be exposed through a an LED + * device at /sys/class/leds. + * + * This may sleep because it uses wilco_ec_mailbox(). + * + * Return: 0 on success, negative error code on failure. + */ +int wilco_keyboard_leds_init(struct wilco_ec_device *ec); +  /*   * A Property is typically a data item that is stored to NVRAM   * by the EC. Each of these data items has an index associated  |