diff options
Diffstat (limited to 'drivers/clk/imx/clk-gate2.c')
-rw-r--r-- | drivers/clk/imx/clk-gate2.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/clk/imx/clk-gate2.c b/drivers/clk/imx/clk-gate2.c index 8935bff99fe7..db44a198a0d9 100644 --- a/drivers/clk/imx/clk-gate2.c +++ b/drivers/clk/imx/clk-gate2.c | |||
@@ -31,6 +31,7 @@ struct clk_gate2 { | |||
31 | struct clk_hw hw; | 31 | struct clk_hw hw; |
32 | void __iomem *reg; | 32 | void __iomem *reg; |
33 | u8 bit_idx; | 33 | u8 bit_idx; |
34 | u8 cgr_val; | ||
34 | u8 flags; | 35 | u8 flags; |
35 | spinlock_t *lock; | 36 | spinlock_t *lock; |
36 | unsigned int *share_count; | 37 | unsigned int *share_count; |
@@ -50,7 +51,8 @@ static int clk_gate2_enable(struct clk_hw *hw) | |||
50 | goto out; | 51 | goto out; |
51 | 52 | ||
52 | reg = readl(gate->reg); | 53 | reg = readl(gate->reg); |
53 | reg |= 3 << gate->bit_idx; | 54 | reg &= ~(3 << gate->bit_idx); |
55 | reg |= gate->cgr_val << gate->bit_idx; | ||
54 | writel(reg, gate->reg); | 56 | writel(reg, gate->reg); |
55 | 57 | ||
56 | out: | 58 | out: |
@@ -125,7 +127,7 @@ static struct clk_ops clk_gate2_ops = { | |||
125 | 127 | ||
126 | struct clk *clk_register_gate2(struct device *dev, const char *name, | 128 | struct clk *clk_register_gate2(struct device *dev, const char *name, |
127 | const char *parent_name, unsigned long flags, | 129 | const char *parent_name, unsigned long flags, |
128 | void __iomem *reg, u8 bit_idx, | 130 | void __iomem *reg, u8 bit_idx, u8 cgr_val, |
129 | u8 clk_gate2_flags, spinlock_t *lock, | 131 | u8 clk_gate2_flags, spinlock_t *lock, |
130 | unsigned int *share_count) | 132 | unsigned int *share_count) |
131 | { | 133 | { |
@@ -140,6 +142,7 @@ struct clk *clk_register_gate2(struct device *dev, const char *name, | |||
140 | /* struct clk_gate2 assignments */ | 142 | /* struct clk_gate2 assignments */ |
141 | gate->reg = reg; | 143 | gate->reg = reg; |
142 | gate->bit_idx = bit_idx; | 144 | gate->bit_idx = bit_idx; |
145 | gate->cgr_val = cgr_val; | ||
143 | gate->flags = clk_gate2_flags; | 146 | gate->flags = clk_gate2_flags; |
144 | gate->lock = lock; | 147 | gate->lock = lock; |
145 | gate->share_count = share_count; | 148 | gate->share_count = share_count; |