Re: [PATCH v3 2/4] mfd: cros_ec: add EC_PWM function definitions

From: Lee Jones
Date: Tue Jun 28 2016 - 11:30:55 EST


On Fri, 17 Jun 2016, Brian Norris wrote:

> The EC_CMD_PWM_{GET,SET}_DUTY commands allow us to control a PWM that is
> attached to the EC, rather than the main host SoC. The API provides
> functionality-based (e.g., keyboard light, backlight) or index-based
> addressing of the PWM(s). Duty cycles are represented by a 16-bit value,
> where 0 maps to 0% duty cycle and U16_MAX maps to 100%. The period
> cannot be controlled.
>
> This command set is more generic than, e.g.,
> EC_CMD_PWM_{GET,SET}_KEYBOARD_BACKLIGHT and could possibly used to
> replace it on future products.
>
> Let's update the command header to include the definitions.
>
> Signed-off-by: Brian Norris <briannorris@xxxxxxxxxxxx>
> ---
> v3:
> * convert from 65535 to 0xffff
>
> v2:
> * no changes
> ---
> include/linux/mfd/cros_ec_commands.h | 31 +++++++++++++++++++++++++++++++
> 1 file changed, 31 insertions(+)

For my own reference:
Acked-by: Lee Jones <lee.jones@xxxxxxxxxx>

> diff --git a/include/linux/mfd/cros_ec_commands.h b/include/linux/mfd/cros_ec_commands.h
> index 13b630c10d4c..7e7a8d4b4551 100644
> --- a/include/linux/mfd/cros_ec_commands.h
> +++ b/include/linux/mfd/cros_ec_commands.h
> @@ -949,6 +949,37 @@ struct ec_params_pwm_set_fan_duty {
> uint32_t percent;
> } __packed;
>
> +#define EC_CMD_PWM_SET_DUTY 0x25
> +/* 16 bit duty cycle, 0xffff = 100% */
> +#define EC_PWM_MAX_DUTY 0xffff
> +
> +enum ec_pwm_type {
> + /* All types, indexed by board-specific enum pwm_channel */
> + EC_PWM_TYPE_GENERIC = 0,
> + /* Keyboard backlight */
> + EC_PWM_TYPE_KB_LIGHT,
> + /* Display backlight */
> + EC_PWM_TYPE_DISPLAY_LIGHT,
> + EC_PWM_TYPE_COUNT,
> +};
> +
> +struct ec_params_pwm_set_duty {
> + uint16_t duty; /* Duty cycle, EC_PWM_MAX_DUTY = 100% */
> + uint8_t pwm_type; /* ec_pwm_type */
> + uint8_t index; /* Type-specific index, or 0 if unique */
> +} __packed;
> +
> +#define EC_CMD_PWM_GET_DUTY 0x26
> +
> +struct ec_params_pwm_get_duty {
> + uint8_t pwm_type; /* ec_pwm_type */
> + uint8_t index; /* Type-specific index, or 0 if unique */
> +} __packed;
> +
> +struct ec_response_pwm_get_duty {
> + uint16_t duty; /* Duty cycle, EC_PWM_MAX_DUTY = 100% */
> +} __packed;
> +
> /*****************************************************************************/
> /*
> * Lightbar commands. This looks worse than it is. Since we only use one HOST

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org â Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog