mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
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:
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user