struct ccu_common       common;
 };
 
-#define SUNXI_CCU_MUX(_struct, _name, _parents, _reg, _shift, _width, _flags) \
+#define SUNXI_CCU_MUX_TABLE_WITH_GATE(_struct, _name, _parents, _table,        \
+                                    _reg, _shift, _width, _gate,       \
+                                    _flags)                            \
        struct ccu_mux _struct = {                                      \
-               .mux    = _SUNXI_CCU_MUX(_shift, _width),               \
+               .enable = _gate,                                        \
+               .mux    = _SUNXI_CCU_MUX_TABLE(_shift, _width, _table), \
                .common = {                                             \
                        .reg            = _reg,                         \
                        .hw.init        = CLK_HW_INIT_PARENTS(_name,    \
 
 #define SUNXI_CCU_MUX_WITH_GATE(_struct, _name, _parents, _reg,                \
                                _shift, _width, _gate, _flags)          \
-       struct ccu_mux _struct = {                                      \
-               .enable = _gate,                                        \
-               .mux    = _SUNXI_CCU_MUX(_shift, _width),               \
-               .common = {                                             \
-                       .reg            = _reg,                         \
-                       .hw.init        = CLK_HW_INIT_PARENTS(_name,    \
-                                                             _parents, \
-                                                             &ccu_mux_ops, \
-                                                             _flags),  \
-               }                                                       \
-       }
+       SUNXI_CCU_MUX_TABLE_WITH_GATE(_struct, _name, _parents, NULL,   \
+                                     _reg, _shift, _width, _gate,      \
+                                     _flags)
+
+#define SUNXI_CCU_MUX(_struct, _name, _parents, _reg, _shift, _width,  \
+                     _flags)                                           \
+       SUNXI_CCU_MUX_TABLE_WITH_GATE(_struct, _name, _parents, NULL,   \
+                                     _reg, _shift, _width, 0, _flags)
 
 static inline struct ccu_mux *hw_to_ccu_mux(struct clk_hw *hw)
 {