clk: sunxi-ng: mux: Add support for mux tables
[cascardo/linux.git] / drivers / clk / sunxi-ng / ccu_mux.c
index 1329b9a..68b32f1 100644 (file)
@@ -107,6 +107,15 @@ u8 ccu_mux_helper_get_parent(struct ccu_common *common,
        parent = reg >> cm->shift;
        parent &= (1 << cm->width) - 1;
 
+       if (cm->table) {
+               int num_parents = clk_hw_get_num_parents(&common->hw);
+               int i;
+
+               for (i = 0; i < num_parents; i++)
+                       if (cm->table[i] == parent)
+                               return i;
+       }
+
        return parent;
 }
 
@@ -117,6 +126,9 @@ int ccu_mux_helper_set_parent(struct ccu_common *common,
        unsigned long flags;
        u32 reg;
 
+       if (cm->table)
+               index = cm->table[index];
+
        spin_lock_irqsave(common->lock, flags);
 
        reg = readl(common->base + common->reg);