diff options
Diffstat (limited to 'drivers/pwm/pwm-meson.c')
| -rw-r--r-- | drivers/pwm/pwm-meson.c | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/pwm/pwm-meson.c b/drivers/pwm/pwm-meson.c index 16d79ca5d8f5..5732300eb004 100644 --- a/drivers/pwm/pwm-meson.c +++ b/drivers/pwm/pwm-meson.c @@ -162,6 +162,12 @@ static int meson_pwm_calc(struct meson_pwm *meson, struct pwm_device *pwm,  	duty = state->duty_cycle;  	period = state->period; +	/* +	 * Note this is wrong. The result is an output wave that isn't really +	 * inverted and so is wrongly identified by .get_state as normal. +	 * Fixing this needs some care however as some machines might rely on +	 * this. +	 */  	if (state->polarity == PWM_POLARITY_INVERSED)  		duty = period - duty; @@ -358,6 +364,8 @@ static int meson_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,  		state->duty_cycle = 0;  	} +	state->polarity = PWM_POLARITY_NORMAL; +  	return 0;  } @@ -410,7 +418,7 @@ static const struct meson_pwm_data pwm_axg_ee_data = {  };  static const char * const pwm_axg_ao_parent_names[] = { -	"aoclk81", "xtal", "fclk_div4", "fclk_div5" +	"xtal", "axg_ao_clk81", "fclk_div4", "fclk_div5"  };  static const struct meson_pwm_data pwm_axg_ao_data = { @@ -419,7 +427,7 @@ static const struct meson_pwm_data pwm_axg_ao_data = {  };  static const char * const pwm_g12a_ao_ab_parent_names[] = { -	"xtal", "aoclk81", "fclk_div4", "fclk_div5" +	"xtal", "g12a_ao_clk81", "fclk_div4", "fclk_div5"  };  static const struct meson_pwm_data pwm_g12a_ao_ab_data = { @@ -428,7 +436,7 @@ static const struct meson_pwm_data pwm_g12a_ao_ab_data = {  };  static const char * const pwm_g12a_ao_cd_parent_names[] = { -	"xtal", "aoclk81", +	"xtal", "g12a_ao_clk81",  };  static const struct meson_pwm_data pwm_g12a_ao_cd_data = {  |