forked from mirrors/linux
		
	pwm: Ensure pwm_apply_state() doesn't modify the state argument
It is surprising for a PWM consumer when the variable holding the
requested state is modified by pwm_apply_state(). Consider for example a
driver doing:
        #define PERIOD 5000000
        #define DUTY_LITTLE 10
        ...
        struct pwm_state state = {
                .period = PERIOD,
                .duty_cycle = DUTY_LITTLE,
                .polarity = PWM_POLARITY_NORMAL,
                .enabled = true,
        };
        pwm_apply_state(mypwm, &state);
        ...
        state.duty_cycle = PERIOD / 2;
        pwm_apply_state(mypwm, &state);
For sure the second call to pwm_apply_state() should still have
state.period = PERIOD and not something the hardware driver chose for a
reason that doesn't necessarily apply to the second call.
So declare the state argument as a pointer to a const type and adapt all
drivers' .apply callbacks.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
			
			
This commit is contained in:
		
							parent
							
								
									c9675829ba
								
							
						
					
					
						commit
						71523d1812
					
				
					 22 changed files with 30 additions and 32 deletions
				
			
		| 
						 | 
					@ -694,7 +694,7 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			   struct pwm_state *state)
 | 
								   const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip);
 | 
						struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip);
 | 
				
			||||||
	struct mvebu_gpio_chip *mvchip = mvpwm->mvchip;
 | 
						struct mvebu_gpio_chip *mvchip = mvpwm->mvchip;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -448,11 +448,9 @@ EXPORT_SYMBOL_GPL(pwm_free);
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * pwm_apply_state() - atomically apply a new state to a PWM device
 | 
					 * pwm_apply_state() - atomically apply a new state to a PWM device
 | 
				
			||||||
 * @pwm: PWM device
 | 
					 * @pwm: PWM device
 | 
				
			||||||
 * @state: new state to apply. This can be adjusted by the PWM driver
 | 
					 * @state: new state to apply
 | 
				
			||||||
 *	   if the requested config is not achievable, for example,
 | 
					 | 
				
			||||||
 *	   ->duty_cycle and ->period might be approximated.
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
int pwm_apply_state(struct pwm_device *pwm, struct pwm_state *state)
 | 
					int pwm_apply_state(struct pwm_device *pwm, const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct pwm_chip *chip;
 | 
						struct pwm_chip *chip;
 | 
				
			||||||
	int err;
 | 
						int err;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,7 @@ static inline struct atmel_hlcdc_pwm *to_atmel_hlcdc_pwm(struct pwm_chip *chip)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int atmel_hlcdc_pwm_apply(struct pwm_chip *c, struct pwm_device *pwm,
 | 
					static int atmel_hlcdc_pwm_apply(struct pwm_chip *c, struct pwm_device *pwm,
 | 
				
			||||||
				 struct pwm_state *state)
 | 
									 const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct atmel_hlcdc_pwm *chip = to_atmel_hlcdc_pwm(c);
 | 
						struct atmel_hlcdc_pwm *chip = to_atmel_hlcdc_pwm(c);
 | 
				
			||||||
	struct atmel_hlcdc *hlcdc = chip->hlcdc;
 | 
						struct atmel_hlcdc *hlcdc = chip->hlcdc;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -209,7 +209,7 @@ static void atmel_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int atmel_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int atmel_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			   struct pwm_state *state)
 | 
								   const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct atmel_pwm_chip *atmel_pwm = to_atmel_pwm_chip(chip);
 | 
						struct atmel_pwm_chip *atmel_pwm = to_atmel_pwm_chip(chip);
 | 
				
			||||||
	struct pwm_state cstate;
 | 
						struct pwm_state cstate;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,7 +115,7 @@ static void iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int iproc_pwmc_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int iproc_pwmc_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			    struct pwm_state *state)
 | 
								    const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned long prescale = IPROC_PWM_PRESCALE_MIN;
 | 
						unsigned long prescale = IPROC_PWM_PRESCALE_MIN;
 | 
				
			||||||
	struct iproc_pwmc *ip = to_iproc_pwmc(chip);
 | 
						struct iproc_pwmc *ip = to_iproc_pwmc(chip);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,7 +93,7 @@ static int cros_ec_pwm_get_duty(struct cros_ec_device *ec, u8 index)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int cros_ec_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int cros_ec_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			     struct pwm_state *state)
 | 
								     const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct cros_ec_pwm_device *ec_pwm = pwm_to_cros_ec_pwm(chip);
 | 
						struct cros_ec_pwm_device *ec_pwm = pwm_to_cros_ec_pwm(chip);
 | 
				
			||||||
	int duty_cycle;
 | 
						int duty_cycle;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -227,7 +227,7 @@ static bool fsl_pwm_is_other_pwm_enabled(struct fsl_pwm_chip *fpc,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int fsl_pwm_apply_config(struct fsl_pwm_chip *fpc,
 | 
					static int fsl_pwm_apply_config(struct fsl_pwm_chip *fpc,
 | 
				
			||||||
				struct pwm_device *pwm,
 | 
									struct pwm_device *pwm,
 | 
				
			||||||
				struct pwm_state *newstate)
 | 
									const struct pwm_state *newstate)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned int duty;
 | 
						unsigned int duty;
 | 
				
			||||||
	u32 reg_polarity;
 | 
						u32 reg_polarity;
 | 
				
			||||||
| 
						 | 
					@ -298,7 +298,7 @@ static int fsl_pwm_apply_config(struct fsl_pwm_chip *fpc,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int fsl_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int fsl_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			 struct pwm_state *newstate)
 | 
								 const struct pwm_state *newstate)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct fsl_pwm_chip *fpc = to_fsl_chip(chip);
 | 
						struct fsl_pwm_chip *fpc = to_fsl_chip(chip);
 | 
				
			||||||
	struct pwm_state *oldstate = &pwm->state;
 | 
						struct pwm_state *oldstate = &pwm->state;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -149,7 +149,7 @@ static void hibvt_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int hibvt_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int hibvt_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
				struct pwm_state *state)
 | 
								   const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct hibvt_pwm_chip *hi_pwm_chip = to_hibvt_pwm_chip(chip);
 | 
						struct hibvt_pwm_chip *hi_pwm_chip = to_hibvt_pwm_chip(chip);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,7 @@ to_imx_tpm_pwm_chip(struct pwm_chip *chip)
 | 
				
			||||||
static int pwm_imx_tpm_round_state(struct pwm_chip *chip,
 | 
					static int pwm_imx_tpm_round_state(struct pwm_chip *chip,
 | 
				
			||||||
				   struct imx_tpm_pwm_param *p,
 | 
									   struct imx_tpm_pwm_param *p,
 | 
				
			||||||
				   struct pwm_state *real_state,
 | 
									   struct pwm_state *real_state,
 | 
				
			||||||
				   struct pwm_state *state)
 | 
									   const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct imx_tpm_pwm_chip *tpm = to_imx_tpm_pwm_chip(chip);
 | 
						struct imx_tpm_pwm_chip *tpm = to_imx_tpm_pwm_chip(chip);
 | 
				
			||||||
	u32 rate, prescale, period_count, clock_unit;
 | 
						u32 rate, prescale, period_count, clock_unit;
 | 
				
			||||||
| 
						 | 
					@ -289,7 +289,7 @@ static int pwm_imx_tpm_apply_hw(struct pwm_chip *chip,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int pwm_imx_tpm_apply(struct pwm_chip *chip,
 | 
					static int pwm_imx_tpm_apply(struct pwm_chip *chip,
 | 
				
			||||||
			     struct pwm_device *pwm,
 | 
								     struct pwm_device *pwm,
 | 
				
			||||||
			     struct pwm_state *state)
 | 
								     const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct imx_tpm_pwm_chip *tpm = to_imx_tpm_pwm_chip(chip);
 | 
						struct imx_tpm_pwm_chip *tpm = to_imx_tpm_pwm_chip(chip);
 | 
				
			||||||
	struct imx_tpm_pwm_param param;
 | 
						struct imx_tpm_pwm_param param;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -209,7 +209,7 @@ static void pwm_imx27_wait_fifo_slot(struct pwm_chip *chip,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int pwm_imx27_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int pwm_imx27_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			   struct pwm_state *state)
 | 
								   const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned long period_cycles, duty_cycles, prescale;
 | 
						unsigned long period_cycles, duty_cycles, prescale;
 | 
				
			||||||
	struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip);
 | 
						struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -88,7 +88,7 @@ static void jz4740_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int jz4740_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int jz4740_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			    struct pwm_state *state)
 | 
								    const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct jz4740_pwm_chip *jz4740 = to_jz4740(pwm->chip);
 | 
						struct jz4740_pwm_chip *jz4740 = to_jz4740(pwm->chip);
 | 
				
			||||||
	unsigned long long tmp;
 | 
						unsigned long long tmp;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -122,7 +122,7 @@ static inline void pwm_lpss_cond_enable(struct pwm_device *pwm, bool cond)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int pwm_lpss_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int pwm_lpss_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			  struct pwm_state *state)
 | 
								  const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct pwm_lpss_chip *lpwm = to_lpwm(chip);
 | 
						struct pwm_lpss_chip *lpwm = to_lpwm(chip);
 | 
				
			||||||
	int ret;
 | 
						int ret;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -159,7 +159,7 @@ static void meson_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int meson_pwm_calc(struct meson_pwm *meson, struct pwm_device *pwm,
 | 
					static int meson_pwm_calc(struct meson_pwm *meson, struct pwm_device *pwm,
 | 
				
			||||||
			  struct pwm_state *state)
 | 
								  const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct meson_pwm_channel *channel = pwm_get_chip_data(pwm);
 | 
						struct meson_pwm_channel *channel = pwm_get_chip_data(pwm);
 | 
				
			||||||
	unsigned int duty, period, pre_div, cnt, duty_cnt;
 | 
						unsigned int duty, period, pre_div, cnt, duty_cnt;
 | 
				
			||||||
| 
						 | 
					@ -265,7 +265,7 @@ static void meson_pwm_disable(struct meson_pwm *meson, struct pwm_device *pwm)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int meson_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int meson_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			   struct pwm_state *state)
 | 
								   const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct meson_pwm_channel *channel = pwm_get_chip_data(pwm);
 | 
						struct meson_pwm_channel *channel = pwm_get_chip_data(pwm);
 | 
				
			||||||
	struct meson_pwm *meson = to_meson_pwm(chip);
 | 
						struct meson_pwm *meson = to_meson_pwm(chip);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -158,7 +158,7 @@ static void rcar_pwm_disable(struct rcar_pwm_chip *rp)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int rcar_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int rcar_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			  struct pwm_state *state)
 | 
								  const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct rcar_pwm_chip *rp = to_rcar_pwm_chip(chip);
 | 
						struct rcar_pwm_chip *rp = to_rcar_pwm_chip(chip);
 | 
				
			||||||
	struct pwm_state cur_state;
 | 
						struct pwm_state cur_state;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -99,7 +99,7 @@ static void rockchip_pwm_get_state(struct pwm_chip *chip,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void rockchip_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static void rockchip_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			       struct pwm_state *state)
 | 
								       const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct rockchip_pwm_chip *pc = to_rockchip_pwm_chip(chip);
 | 
						struct rockchip_pwm_chip *pc = to_rockchip_pwm_chip(chip);
 | 
				
			||||||
	unsigned long period, duty;
 | 
						unsigned long period, duty;
 | 
				
			||||||
| 
						 | 
					@ -183,7 +183,7 @@ static int rockchip_pwm_enable(struct pwm_chip *chip,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int rockchip_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int rockchip_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			      struct pwm_state *state)
 | 
								      const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct rockchip_pwm_chip *pc = to_rockchip_pwm_chip(chip);
 | 
						struct rockchip_pwm_chip *pc = to_rockchip_pwm_chip(chip);
 | 
				
			||||||
	struct pwm_state curstate;
 | 
						struct pwm_state curstate;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -147,7 +147,7 @@ static int pwm_sifive_enable(struct pwm_chip *chip, bool enable)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int pwm_sifive_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int pwm_sifive_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			    struct pwm_state *state)
 | 
								    const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct pwm_sifive_ddata *ddata = pwm_sifive_chip_to_ddata(chip);
 | 
						struct pwm_sifive_ddata *ddata = pwm_sifive_chip_to_ddata(chip);
 | 
				
			||||||
	struct pwm_state cur_state;
 | 
						struct pwm_state cur_state;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -156,7 +156,7 @@ static int sprd_pwm_config(struct sprd_pwm_chip *spc, struct pwm_device *pwm,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int sprd_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int sprd_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			  struct pwm_state *state)
 | 
								  const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct sprd_pwm_chip *spc =
 | 
						struct sprd_pwm_chip *spc =
 | 
				
			||||||
		container_of(chip, struct sprd_pwm_chip, chip);
 | 
							container_of(chip, struct sprd_pwm_chip, chip);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ static inline struct stm32_pwm_lp *to_stm32_pwm_lp(struct pwm_chip *chip)
 | 
				
			||||||
#define STM32_LPTIM_MAX_PRESCALER	128
 | 
					#define STM32_LPTIM_MAX_PRESCALER	128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int stm32_pwm_lp_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int stm32_pwm_lp_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			      struct pwm_state *state)
 | 
								      const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct stm32_pwm_lp *priv = to_stm32_pwm_lp(chip);
 | 
						struct stm32_pwm_lp *priv = to_stm32_pwm_lp(chip);
 | 
				
			||||||
	unsigned long long prd, div, dty;
 | 
						unsigned long long prd, div, dty;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -440,7 +440,7 @@ static void stm32_pwm_disable(struct stm32_pwm *priv, int ch)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int stm32_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int stm32_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			   struct pwm_state *state)
 | 
								   const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	bool enabled;
 | 
						bool enabled;
 | 
				
			||||||
	struct stm32_pwm *priv = to_stm32_pwm_dev(chip);
 | 
						struct stm32_pwm *priv = to_stm32_pwm_dev(chip);
 | 
				
			||||||
| 
						 | 
					@ -468,7 +468,7 @@ static int stm32_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int stm32_pwm_apply_locked(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int stm32_pwm_apply_locked(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
				  struct pwm_state *state)
 | 
									  const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct stm32_pwm *priv = to_stm32_pwm_dev(chip);
 | 
						struct stm32_pwm *priv = to_stm32_pwm_dev(chip);
 | 
				
			||||||
	int ret;
 | 
						int ret;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -145,7 +145,7 @@ static void sun4i_pwm_get_state(struct pwm_chip *chip,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int sun4i_pwm_calculate(struct sun4i_pwm_chip *sun4i_pwm,
 | 
					static int sun4i_pwm_calculate(struct sun4i_pwm_chip *sun4i_pwm,
 | 
				
			||||||
			       struct pwm_state *state,
 | 
								       const struct pwm_state *state,
 | 
				
			||||||
			       u32 *dty, u32 *prd, unsigned int *prsclr)
 | 
								       u32 *dty, u32 *prd, unsigned int *prsclr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u64 clk_rate, div = 0;
 | 
						u64 clk_rate, div = 0;
 | 
				
			||||||
| 
						 | 
					@ -196,7 +196,7 @@ static int sun4i_pwm_calculate(struct sun4i_pwm_chip *sun4i_pwm,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int sun4i_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int sun4i_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			   struct pwm_state *state)
 | 
								   const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct sun4i_pwm_chip *sun4i_pwm = to_sun4i_pwm_chip(chip);
 | 
						struct sun4i_pwm_chip *sun4i_pwm = to_sun4i_pwm_chip(chip);
 | 
				
			||||||
	struct pwm_state cstate;
 | 
						struct pwm_state cstate;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,7 +148,7 @@ static int zx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int zx_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
					static int zx_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			struct pwm_state *state)
 | 
								const struct pwm_state *state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct zx_pwm_chip *zpc = to_zx_pwm_chip(chip);
 | 
						struct zx_pwm_chip *zpc = to_zx_pwm_chip(chip);
 | 
				
			||||||
	struct pwm_state cstate;
 | 
						struct pwm_state cstate;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -262,7 +262,7 @@ struct pwm_ops {
 | 
				
			||||||
	int (*capture)(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
						int (*capture)(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
		       struct pwm_capture *result, unsigned long timeout);
 | 
							       struct pwm_capture *result, unsigned long timeout);
 | 
				
			||||||
	int (*apply)(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
						int (*apply)(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
		     struct pwm_state *state);
 | 
							     const struct pwm_state *state);
 | 
				
			||||||
	void (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
						void (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm,
 | 
				
			||||||
			  struct pwm_state *state);
 | 
								  struct pwm_state *state);
 | 
				
			||||||
	struct module *owner;
 | 
						struct module *owner;
 | 
				
			||||||
| 
						 | 
					@ -316,7 +316,7 @@ struct pwm_capture {
 | 
				
			||||||
/* PWM user APIs */
 | 
					/* PWM user APIs */
 | 
				
			||||||
struct pwm_device *pwm_request(int pwm_id, const char *label);
 | 
					struct pwm_device *pwm_request(int pwm_id, const char *label);
 | 
				
			||||||
void pwm_free(struct pwm_device *pwm);
 | 
					void pwm_free(struct pwm_device *pwm);
 | 
				
			||||||
int pwm_apply_state(struct pwm_device *pwm, struct pwm_state *state);
 | 
					int pwm_apply_state(struct pwm_device *pwm, const struct pwm_state *state);
 | 
				
			||||||
int pwm_adjust_config(struct pwm_device *pwm);
 | 
					int pwm_adjust_config(struct pwm_device *pwm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue