16.03.2022 12:25, Ashish Mhetre пишет: > +static int tegra186_mc_get_channel(const struct tegra_mc *mc, int *mc_channel) > +{ > + u32 status; > + > + status = mc_ch_readl(mc, MC_BROADCAST_CHANNEL, MC_GLOBAL_INTSTATUS); This mc_ch_readl(MC_GLOBAL_INTSTATUS) is replicated by every tegraxxx_mc_get_channel(), it should be a part of common interrupt handler, IMO. And then I'd rename that callback to global_intstatus_to_channel(). > + switch (status & mc->soc->int_channel_mask) { > + case BIT(0): > + *mc_channel = 0; > + break; > + > + case BIT(1): > + *mc_channel = 1; > + break; > + > + case BIT(2): > + *mc_channel = 2; > + break; > + > + case BIT(3): > + *mc_channel = 3; > + break; > + > + case BIT(24): > + *mc_channel = MC_BROADCAST_CHANNEL; > + break; > + > + default: > + pr_err("Unknown interrupt source\n"); dev_err_ratelimited("unknown interrupt channel 0x%08x\n", status) and should be moved to the common interrupt handler.