Messages in this thread | | | Date | Wed, 23 Mar 2022 14:06:38 +0530 | Subject | Re: [Patch v5 2/4] memory: tegra: Add MC error logging on tegra186 onward | From | Ashish Mhetre <> |
| |
On 3/20/2022 6:23 PM, Dmitry Osipenko wrote: > External email: Use caution opening links or attachments > > > 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); >> + >> + 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; > > This won't work if multiple bits are set at once.
I talked with our HW team and they said that it's technically possible that interrupts can come at multiple channels at same time. SW can take care of this by logging interrupts at first channel and then clearing bit of that. Then take care of interrupts from next channel and so on. I'll update the patches accordingly in next version.
| |