Lines Matching +full:1 +full:- +full:cell
1 // SPDX-License-Identifier: GPL-2.0
6 #include <linux/reset-controller.h>
16 struct mmp_clk_reset_cell *cell; in mmp_of_reset_xlate() local
19 if (WARN_ON(reset_spec->args_count != rcdev->of_reset_n_cells)) in mmp_of_reset_xlate()
20 return -EINVAL; in mmp_of_reset_xlate()
22 for (i = 0; i < rcdev->nr_resets; i++) { in mmp_of_reset_xlate()
23 cell = &unit->cells[i]; in mmp_of_reset_xlate()
24 if (cell->clk_id == reset_spec->args[0]) in mmp_of_reset_xlate()
28 if (i == rcdev->nr_resets) in mmp_of_reset_xlate()
29 return -EINVAL; in mmp_of_reset_xlate()
38 struct mmp_clk_reset_cell *cell; in mmp_clk_reset_assert() local
42 cell = &unit->cells[id]; in mmp_clk_reset_assert()
43 if (cell->lock) in mmp_clk_reset_assert()
44 spin_lock_irqsave(cell->lock, flags); in mmp_clk_reset_assert()
46 val = readl(cell->reg); in mmp_clk_reset_assert()
47 val |= cell->bits; in mmp_clk_reset_assert()
48 writel(val, cell->reg); in mmp_clk_reset_assert()
50 if (cell->lock) in mmp_clk_reset_assert()
51 spin_unlock_irqrestore(cell->lock, flags); in mmp_clk_reset_assert()
60 struct mmp_clk_reset_cell *cell; in mmp_clk_reset_deassert() local
64 cell = &unit->cells[id]; in mmp_clk_reset_deassert()
65 if (cell->lock) in mmp_clk_reset_deassert()
66 spin_lock_irqsave(cell->lock, flags); in mmp_clk_reset_deassert()
68 val = readl(cell->reg); in mmp_clk_reset_deassert()
69 val &= ~cell->bits; in mmp_clk_reset_deassert()
70 writel(val, cell->reg); in mmp_clk_reset_deassert()
72 if (cell->lock) in mmp_clk_reset_deassert()
73 spin_unlock_irqrestore(cell->lock, flags); in mmp_clk_reset_deassert()
92 unit->cells = cells; in mmp_clk_reset_register()
93 unit->rcdev.of_reset_n_cells = 1; in mmp_clk_reset_register()
94 unit->rcdev.nr_resets = nr_resets; in mmp_clk_reset_register()
95 unit->rcdev.ops = &mmp_clk_reset_ops; in mmp_clk_reset_register()
96 unit->rcdev.of_node = np; in mmp_clk_reset_register()
97 unit->rcdev.of_xlate = mmp_of_reset_xlate; in mmp_clk_reset_register()
99 reset_controller_register(&unit->rcdev); in mmp_clk_reset_register()