clk: meson: add peripheral gate macro
authorMichael Turquette <mturquette@baylibre.com>
Tue, 7 Jun 2016 23:00:55 +0000 (16:00 -0700)
committerMichael Turquette <mturquette@baylibre.com>
Thu, 23 Jun 2016 01:02:56 +0000 (18:02 -0700)
There are a series of peripheral and system gate clocks that fan out
from the clk81 signal. Add a helper macro to statically initialize these
gate clocks.

Tested-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Michael Turquette <mturquette@baylibre.com>
drivers/clk/meson/clkc.h

index f3f396168ba4f3fe939f237b3763b9851988b7ff..9436932880c0b9c23c31f56f88cf7871fa500f20 100644 (file)
@@ -73,6 +73,20 @@ struct meson_clk_cpu {
 int meson_clk_cpu_notifier_cb(struct notifier_block *nb, unsigned long event,
                void *data);
 
+#define MESON_GATE(_name, _reg, _bit)                                  \
+struct clk_gate gxbb_##_name = {                                               \
+       .reg = (void __iomem *) _reg,                                   \
+       .bit_idx = (_bit),                                              \
+       .lock = &clk_lock,                                              \
+       .hw.init = &(struct clk_init_data) {                            \
+               .name = #_name,                                 \
+               .ops = &clk_gate_ops,                                   \
+               .parent_names = (const char *[]){ "clk81" },            \
+               .num_parents = 1,                                       \
+               .flags = (CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED),     \
+       },                                                              \
+};
+
 /* clk_ops */
 extern const struct clk_ops meson_clk_pll_ro_ops;
 extern const struct clk_ops meson_clk_pll_ops;