External email: Use caution opening links or attachmentsOkay, I'll do that in next version.
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().
So return just error from default case and handle error in common+ 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.