mstop
struct mstop *mstop;
struct mstop *mstop = clock->mstop;
if (!mstop)
value = MSTOP_MASK(mstop->conf) << 16;
if (criticals && criticals == atomic_read(&mstop->usecnt))
value |= MSTOP_MASK(mstop->conf);
if (!atomic_read(&mstop->usecnt))
update = atomic_dec_and_test(&mstop->usecnt);
if (!atomic_read(&mstop->usecnt))
atomic_inc(&mstop->usecnt);
writel(value, priv->base + MSTOP_OFF(mstop->conf));
if (!clk->mstop)
val = readl(priv->base + MSTOP_OFF(clk->mstop->conf)) &
MSTOP_MASK(clk->mstop->conf);
__clk_get_enable_count(hw->clk), atomic_read(&clk->mstop->usecnt),
MSTOP_OFF(clk->mstop->conf), val);
static struct mstop *rzg2l_mod_clock_get_mstop(struct rzg2l_cpg_priv *priv, u32 conf)
if (!clk->mstop)
if (clk->mstop->conf == conf)
return clk->mstop;
if (clk->mstop)
if (!clk->mstop)
if (!clock->mstop)
if (clk->mstop != clock->mstop)
struct mstop *mstop = rzg2l_mod_clock_get_mstop(priv, mod->mstop_conf);
if (!mstop) {
mstop = devm_kzalloc(dev, sizeof(*mstop), GFP_KERNEL);
if (!mstop) {
mstop->conf = mod->mstop_conf;
atomic_set(&mstop->usecnt, 0);
clock->mstop = mstop;
atomic_t *mstop = &priv->mstop_count[mstop_index * 16];
if (!atomic_read(&mstop[i]))
atomic_inc(&mstop[i]);
atomic_t *mstop = &priv->mstop_count[mstop_index * 16];
if (!atomic_read(&mstop[i]) ||
atomic_dec_and_test(&mstop[i]))
atomic_t *mstop = &priv->mstop_count[mstop_index * 16];
if (atomic_read(&mstop[i]))
atomic_inc(&mstop[i]);