Loading arch/arm/mach-msm/clock-generic.c +6 −4 Original line number Diff line number Diff line Loading @@ -222,11 +222,12 @@ static int mux_reg_enable(struct mux_clk *clk) { u32 regval; unsigned long flags; u32 offset = clk->en_reg ? clk->en_offset : clk->offset; spin_lock_irqsave(&mux_reg_lock, flags); regval = readl_relaxed(*clk->base + clk->offset); regval = readl_relaxed(*clk->base + offset); regval |= clk->en_mask; writel_relaxed(regval, *clk->base + clk->offset); writel_relaxed(regval, *clk->base + offset); /* Ensure enable request goes through before returning */ mb(); spin_unlock_irqrestore(&mux_reg_lock, flags); Loading @@ -238,11 +239,12 @@ static void mux_reg_disable(struct mux_clk *clk) { u32 regval; unsigned long flags; u32 offset = clk->en_reg ? clk->en_offset : clk->offset; spin_lock_irqsave(&mux_reg_lock, flags); regval = readl_relaxed(*clk->base + clk->offset); regval = readl_relaxed(*clk->base + offset); regval &= ~clk->en_mask; writel_relaxed(regval, *clk->base + clk->offset); writel_relaxed(regval, *clk->base + offset); spin_unlock_irqrestore(&mux_reg_lock, flags); } Loading arch/arm/mach-msm/include/mach/clock-generic.h +2 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ struct mux_clk { /* Fields not used by helper function. */ void *const __iomem *base; u32 offset; u32 en_offset; int en_reg; u32 mask; u32 shift; u32 en_mask; Loading Loading
arch/arm/mach-msm/clock-generic.c +6 −4 Original line number Diff line number Diff line Loading @@ -222,11 +222,12 @@ static int mux_reg_enable(struct mux_clk *clk) { u32 regval; unsigned long flags; u32 offset = clk->en_reg ? clk->en_offset : clk->offset; spin_lock_irqsave(&mux_reg_lock, flags); regval = readl_relaxed(*clk->base + clk->offset); regval = readl_relaxed(*clk->base + offset); regval |= clk->en_mask; writel_relaxed(regval, *clk->base + clk->offset); writel_relaxed(regval, *clk->base + offset); /* Ensure enable request goes through before returning */ mb(); spin_unlock_irqrestore(&mux_reg_lock, flags); Loading @@ -238,11 +239,12 @@ static void mux_reg_disable(struct mux_clk *clk) { u32 regval; unsigned long flags; u32 offset = clk->en_reg ? clk->en_offset : clk->offset; spin_lock_irqsave(&mux_reg_lock, flags); regval = readl_relaxed(*clk->base + clk->offset); regval = readl_relaxed(*clk->base + offset); regval &= ~clk->en_mask; writel_relaxed(regval, *clk->base + clk->offset); writel_relaxed(regval, *clk->base + offset); spin_unlock_irqrestore(&mux_reg_lock, flags); } Loading
arch/arm/mach-msm/include/mach/clock-generic.h +2 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ struct mux_clk { /* Fields not used by helper function. */ void *const __iomem *base; u32 offset; u32 en_offset; int en_reg; u32 mask; u32 shift; u32 en_mask; Loading