Lines Matching refs:gate
3 * mmp gate clock operation source file
26 struct mmp_clk_gate *gate = to_clk_mmp_gate(hw);
31 if (gate->lock)
32 spin_lock_irqsave(gate->lock, flags);
34 tmp = readl(gate->reg);
35 tmp &= ~gate->mask;
36 tmp |= gate->val_enable;
37 writel(tmp, gate->reg);
39 if (gate->lock)
40 spin_unlock_irqrestore(gate->lock, flags);
42 if (gate->flags & MMP_CLK_GATE_NEED_DELAY) {
53 struct mmp_clk_gate *gate = to_clk_mmp_gate(hw);
57 if (gate->lock)
58 spin_lock_irqsave(gate->lock, flags);
60 tmp = readl(gate->reg);
61 tmp &= ~gate->mask;
62 tmp |= gate->val_disable;
63 writel(tmp, gate->reg);
65 if (gate->lock)
66 spin_unlock_irqrestore(gate->lock, flags);
71 struct mmp_clk_gate *gate = to_clk_mmp_gate(hw);
75 if (gate->lock)
76 spin_lock_irqsave(gate->lock, flags);
78 tmp = readl(gate->reg);
80 if (gate->lock)
81 spin_unlock_irqrestore(gate->lock, flags);
83 return (tmp & gate->mask) == gate->val_enable;
97 struct mmp_clk_gate *gate;
101 /* allocate the gate */
102 gate = kzalloc(sizeof(*gate), GFP_KERNEL);
103 if (!gate)
113 gate->reg = reg;
114 gate->mask = mask;
115 gate->val_enable = val_enable;
116 gate->val_disable = val_disable;
117 gate->flags = gate_flags;
118 gate->lock = lock;
119 gate->hw.init = &init;
121 clk = clk_register(dev, &gate->hw);
124 kfree(gate);