Lines Matching refs:gate
2 * mmp gate clock operation source file
29 struct mmp_clk_gate *gate = to_clk_mmp_gate(hw);
34 if (gate->lock)
35 spin_lock_irqsave(gate->lock, flags);
37 tmp = readl(gate->reg);
38 tmp &= ~gate->mask;
39 tmp |= gate->val_enable;
40 writel(tmp, gate->reg);
42 if (gate->lock)
43 spin_unlock_irqrestore(gate->lock, flags);
45 if (gate->flags & MMP_CLK_GATE_NEED_DELAY) {
56 struct mmp_clk_gate *gate = to_clk_mmp_gate(hw);
60 if (gate->lock)
61 spin_lock_irqsave(gate->lock, flags);
63 tmp = readl(gate->reg);
64 tmp &= ~gate->mask;
65 tmp |= gate->val_disable;
66 writel(tmp, gate->reg);
68 if (gate->lock)
69 spin_unlock_irqrestore(gate->lock, flags);
74 struct mmp_clk_gate *gate = to_clk_mmp_gate(hw);
78 if (gate->lock)
79 spin_lock_irqsave(gate->lock, flags);
81 tmp = readl(gate->reg);
83 if (gate->lock)
84 spin_unlock_irqrestore(gate->lock, flags);
86 return (tmp & gate->mask) == gate->val_enable;
100 struct mmp_clk_gate *gate;
104 /* allocate the gate */
105 gate = kzalloc(sizeof(*gate), GFP_KERNEL);
106 if (!gate)
116 gate->reg = reg;
117 gate->mask = mask;
118 gate->val_enable = val_enable;
119 gate->val_disable = val_disable;
120 gate->flags = gate_flags;
121 gate->lock = lock;
122 gate->hw.init = &init;
124 clk = clk_register(dev, &gate->hw);
127 kfree(gate);