Lines Matching refs:gate
233 static u32 get_reset_reg(struct aspeed_clk_gate *gate) in get_reset_reg() argument
235 if (gate->reset_idx < 32) in get_reset_reg()
241 static u32 get_clock_reg(struct aspeed_clk_gate *gate) in get_clock_reg() argument
243 if (gate->clock_idx < 32) in get_clock_reg()
251 struct aspeed_clk_gate *gate = to_aspeed_clk_gate(hw); in aspeed_g6_clk_is_enabled() local
252 u32 clk = get_bit(gate->clock_idx); in aspeed_g6_clk_is_enabled()
253 u32 rst = get_bit(gate->reset_idx); in aspeed_g6_clk_is_enabled()
263 if (gate->reset_idx >= 0) { in aspeed_g6_clk_is_enabled()
264 regmap_read(gate->map, get_reset_reg(gate), ®); in aspeed_g6_clk_is_enabled()
270 regmap_read(gate->map, get_clock_reg(gate), ®); in aspeed_g6_clk_is_enabled()
272 enval = (gate->flags & CLK_GATE_SET_TO_DISABLE) ? 0 : clk; in aspeed_g6_clk_is_enabled()
279 struct aspeed_clk_gate *gate = to_aspeed_clk_gate(hw); in aspeed_g6_clk_enable() local
281 u32 clk = get_bit(gate->clock_idx); in aspeed_g6_clk_enable()
282 u32 rst = get_bit(gate->reset_idx); in aspeed_g6_clk_enable()
284 spin_lock_irqsave(gate->lock, flags); in aspeed_g6_clk_enable()
287 spin_unlock_irqrestore(gate->lock, flags); in aspeed_g6_clk_enable()
291 if (gate->reset_idx >= 0) { in aspeed_g6_clk_enable()
293 regmap_write(gate->map, get_reset_reg(gate), rst); in aspeed_g6_clk_enable()
299 if (gate->flags & CLK_GATE_SET_TO_DISABLE) { in aspeed_g6_clk_enable()
301 regmap_write(gate->map, get_clock_reg(gate) + 0x04, clk); in aspeed_g6_clk_enable()
304 regmap_write(gate->map, get_clock_reg(gate), clk); in aspeed_g6_clk_enable()
307 if (gate->reset_idx >= 0) { in aspeed_g6_clk_enable()
311 regmap_write(gate->map, get_reset_reg(gate) + 0x4, rst); in aspeed_g6_clk_enable()
314 spin_unlock_irqrestore(gate->lock, flags); in aspeed_g6_clk_enable()
321 struct aspeed_clk_gate *gate = to_aspeed_clk_gate(hw); in aspeed_g6_clk_disable() local
323 u32 clk = get_bit(gate->clock_idx); in aspeed_g6_clk_disable()
325 spin_lock_irqsave(gate->lock, flags); in aspeed_g6_clk_disable()
327 if (gate->flags & CLK_GATE_SET_TO_DISABLE) { in aspeed_g6_clk_disable()
328 regmap_write(gate->map, get_clock_reg(gate), clk); in aspeed_g6_clk_disable()
331 regmap_write(gate->map, get_clock_reg(gate) + 0x4, clk); in aspeed_g6_clk_disable()
334 spin_unlock_irqrestore(gate->lock, flags); in aspeed_g6_clk_disable()
391 struct aspeed_clk_gate *gate; in aspeed_g6_clk_hw_register_gate() local
396 gate = kzalloc(sizeof(*gate), GFP_KERNEL); in aspeed_g6_clk_hw_register_gate()
397 if (!gate) in aspeed_g6_clk_hw_register_gate()
406 gate->map = map; in aspeed_g6_clk_hw_register_gate()
407 gate->clock_idx = clock_idx; in aspeed_g6_clk_hw_register_gate()
408 gate->reset_idx = reset_idx; in aspeed_g6_clk_hw_register_gate()
409 gate->flags = clk_gate_flags; in aspeed_g6_clk_hw_register_gate()
410 gate->lock = lock; in aspeed_g6_clk_hw_register_gate()
411 gate->hw.init = &init; in aspeed_g6_clk_hw_register_gate()
413 hw = &gate->hw; in aspeed_g6_clk_hw_register_gate()
416 kfree(gate); in aspeed_g6_clk_hw_register_gate()