16.03.2022 12:25, Ashish Mhetre пишет: > +irqreturn_t tegra30_mc_handle_irq(int irq, void *data) > { > struct tegra_mc *mc = data; > unsigned long status; > + bool mc_has_channels; > unsigned int bit; > + int channel; unsigned int > + mc_has_channels = mc->soc->num_channels && mc->soc->get_int_channel; > + if (mc_has_channels) { > + int err; > + > + err = mc->soc->get_int_channel(mc, &channel); > + if (err < 0) > + return IRQ_NONE; > + > + /* mask all interrupts to avoid flooding */ > + status = mc_ch_readl(mc, channel, MC_INTSTATUS) & mc->soc->intmask; > + } else { > + status = mc_readl(mc, MC_INTSTATUS) & mc->soc->intmask; > + } So if mc_has_channels=false, while it should be true, then you're going to handle interrupt incorrectly?