Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
[linux-2.6-microblaze.git] / drivers / clk / mediatek / clk-mux.h
index f194616..27841d6 100644 (file)
@@ -33,12 +33,13 @@ struct mtk_mux {
        u8 gate_shift;
        s8 upd_shift;
 
+       const struct clk_ops *ops;
        signed char num_parents;
 };
 
 #define GATE_CLR_SET_UPD_FLAGS(_id, _name, _parents, _mux_ofs,         \
                        _mux_set_ofs, _mux_clr_ofs, _shift, _width,     \
-                       _gate, _upd_ofs, _upd, _flags) {                \
+                       _gate, _upd_ofs, _upd, _flags, _ops) {          \
                .id = _id,                                              \
                .name = _name,                                          \
                .mux_ofs = _mux_ofs,                                    \
@@ -52,14 +53,19 @@ struct mtk_mux {
                .parent_names = _parents,                               \
                .num_parents = ARRAY_SIZE(_parents),                    \
                .flags = _flags,                                        \
+               .ops = &_ops,                                           \
        }
 
+extern const struct clk_ops mtk_mux_clr_set_upd_ops;
+extern const struct clk_ops mtk_mux_gate_clr_set_upd_ops;
+
 #define MUX_GATE_CLR_SET_UPD_FLAGS(_id, _name, _parents, _mux_ofs,     \
                        _mux_set_ofs, _mux_clr_ofs, _shift, _width,     \
                        _gate, _upd_ofs, _upd, _flags)                  \
                GATE_CLR_SET_UPD_FLAGS(_id, _name, _parents, _mux_ofs,  \
                        _mux_set_ofs, _mux_clr_ofs, _shift, _width,     \
-                       _gate, _upd_ofs, _upd, _flags)                  \
+                       _gate, _upd_ofs, _upd, _flags,                  \
+                       mtk_mux_gate_clr_set_upd_ops)
 
 #define MUX_GATE_CLR_SET_UPD(_id, _name, _parents, _mux_ofs,           \
                        _mux_set_ofs, _mux_clr_ofs, _shift, _width,     \
@@ -69,6 +75,14 @@ struct mtk_mux {
                        _width, _gate, _upd_ofs, _upd,                  \
                        CLK_SET_RATE_PARENT)
 
+#define MUX_CLR_SET_UPD(_id, _name, _parents, _mux_ofs,                        \
+                       _mux_set_ofs, _mux_clr_ofs, _shift, _width,     \
+                       _upd_ofs, _upd)                                 \
+               GATE_CLR_SET_UPD_FLAGS(_id, _name, _parents, _mux_ofs,  \
+                       _mux_set_ofs, _mux_clr_ofs, _shift, _width,     \
+                       0, _upd_ofs, _upd, CLK_SET_RATE_PARENT,         \
+                       mtk_mux_clr_set_upd_ops)
+
 int mtk_clk_register_muxes(const struct mtk_mux *muxes,
                           int num, struct device_node *node,
                           spinlock_t *lock,