diff --git a/debugcc.c b/debugcc.c index 80aa48c..7ecfe94 100644 --- a/debugcc.c +++ b/debugcc.c @@ -91,10 +91,12 @@ static void mux_prepare_enable(struct debug_mux *mux, int selector) { uint32_t val; - val = readl(mux->base + mux->mux_reg); - val &= ~mux->mux_mask; - val |= selector << mux->mux_shift; - writel(val, mux->base + mux->mux_reg); + if (mux->mux_mask) { + val = readl(mux->base + mux->mux_reg); + val &= ~mux->mux_mask; + val |= selector << mux->mux_shift; + writel(val, mux->base + mux->mux_reg); + } if (mux->div_mask) { val = readl(mux->base + mux->div_reg); @@ -110,9 +112,11 @@ void mux_enable(struct debug_mux *mux) { uint32_t val; - val = readl(mux->base + mux->enable_reg); - val |= mux->enable_mask; - writel(val, mux->base + mux->enable_reg); + if (mux->enable_mask) { + val = readl(mux->base + mux->enable_reg); + val |= mux->enable_mask; + writel(val, mux->base + mux->enable_reg); + } if (mux->premeasure) mux->premeasure(mux); @@ -125,9 +129,11 @@ void mux_disable(struct debug_mux *mux) if (mux->postmeasure) mux->postmeasure(mux); - val = readl(mux->base + mux->enable_reg); - val &= ~mux->enable_mask; - writel(val, mux->base + mux->enable_reg); + if (mux->enable_mask) { + val = readl(mux->base + mux->enable_reg); + val &= ~mux->enable_mask; + writel(val, mux->base + mux->enable_reg); + } } static bool leaf_enabled(struct debug_mux *mux, struct debug_mux *leaf)