pwm: rockchip: add pwm en for voppwm

voppwm is frame effect, so we need add vop pwm en to
indicate the pwm en state.

Change-Id: I1492322f99b638c8dc6cf03c87035f28dca3de8f
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
Sandy Huang
2018-01-29 17:18:18 +08:00
committed by Tao Huang
parent 91ae9813f5
commit 7c831dee39

View File

@@ -35,6 +35,7 @@ struct rockchip_pwm_chip {
struct clk *pclk;
const struct rockchip_pwm_data *data;
void __iomem *base;
bool vop_pwm_en; /* indicate voppwm mirror register state */
};
struct rockchip_pwm_regs {
@@ -49,6 +50,7 @@ struct rockchip_pwm_data {
unsigned int prescaler;
bool supports_polarity;
bool supports_lock;
bool vop_pwm;
u32 enable_conf;
};
@@ -120,6 +122,12 @@ static void rockchip_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
* change the duty and period, that would not be effective.
*/
ctrl = readl_relaxed(pc->base + pc->data->regs.ctrl);
if (pc->data->vop_pwm) {
if (pc->vop_pwm_en)
ctrl |= PWM_ENABLE;
else
ctrl &= ~PWM_ENABLE;
}
if (pc->data->supports_lock) {
ctrl |= PWM_LOCK_EN;
writel_relaxed(ctrl, pc->base + pc->data->regs.ctrl);
@@ -170,6 +178,8 @@ static int rockchip_pwm_enable(struct pwm_chip *chip,
val &= ~enable_conf;
writel_relaxed(val, pc->base + pc->data->regs.ctrl);
if (pc->data->vop_pwm)
pc->vop_pwm_en = enable;
if (!enable)
clk_disable(pc->clk);
@@ -229,6 +239,7 @@ static const struct rockchip_pwm_data pwm_data_v1 = {
.prescaler = 2,
.supports_polarity = false,
.supports_lock = false,
.vop_pwm = false,
.enable_conf = PWM_CTRL_OUTPUT_EN | PWM_CTRL_TIMER_EN,
};
@@ -242,6 +253,7 @@ static const struct rockchip_pwm_data pwm_data_v2 = {
.prescaler = 1,
.supports_polarity = true,
.supports_lock = false,
.vop_pwm = false,
.enable_conf = PWM_OUTPUT_LEFT | PWM_LP_DISABLE | PWM_ENABLE |
PWM_CONTINUOUS,
};
@@ -256,6 +268,7 @@ static const struct rockchip_pwm_data pwm_data_vop = {
.prescaler = 1,
.supports_polarity = true,
.supports_lock = false,
.vop_pwm = true,
.enable_conf = PWM_OUTPUT_LEFT | PWM_LP_DISABLE | PWM_ENABLE |
PWM_CONTINUOUS,
};
@@ -270,6 +283,7 @@ static const struct rockchip_pwm_data pwm_data_v3 = {
.prescaler = 1,
.supports_polarity = true,
.supports_lock = true,
.vop_pwm = false,
.enable_conf = PWM_OUTPUT_LEFT | PWM_LP_DISABLE | PWM_ENABLE |
PWM_CONTINUOUS,
};