mirror of
https://github.com/linux-msm/debugcc.git
synced 2026-02-25 13:12:32 -08:00
debugcc: skip registers with no masks defined
Provide a way to skip programming enable/mux registers (as we do for div_reg) if the corresponding mask is zero. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
committed by
Bjorn Andersson
parent
360769b5fc
commit
a9e76e4f1b
26
debugcc.c
26
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)
|
||||
|
||||
Reference in New Issue
Block a user