Lines Matching refs:mc

55 static inline u32 mc_readl(struct tegra20_mc *mc, u32 offs)  in mc_readl()  argument
60 val = readl(mc->regs[0] + offs); in mc_readl()
62 val = readl(mc->regs[1] + offs - 0x3c); in mc_readl()
67 static inline void mc_writel(struct tegra20_mc *mc, u32 val, u32 offs) in mc_writel() argument
70 writel(val, mc->regs[0] + offs); in mc_writel()
72 writel(val, mc->regs[1] + offs - 0x3c); in mc_writel()
130 static void tegra20_mc_decode(struct tegra20_mc *mc, int n) in tegra20_mc_decode() argument
161 dev_err_ratelimited(mc->dev, "Unknown interrupt status %08lx\n", in tegra20_mc_decode()
166 req = mc_readl(mc, reg[idx].offset); in tegra20_mc_decode()
171 addr = mc_readl(mc, reg[idx].offset + sizeof(u32)); in tegra20_mc_decode()
173 dev_err_ratelimited(mc->dev, "%s (0x%08x): 0x%08x %s (%s %s)\n", in tegra20_mc_decode()
189 struct tegra20_mc *mc = data; in tegra20_mc_isr() local
191 stat = mc_readl(mc, MC_INTSTATUS); in tegra20_mc_isr()
192 mask = mc_readl(mc, MC_INTMASK); in tegra20_mc_isr()
197 tegra20_mc_decode(mc, bit - 1); in tegra20_mc_isr()
201 mc_writel(mc, stat, MC_INTSTATUS); in tegra20_mc_isr()
208 struct tegra20_mc *mc; in tegra20_mc_probe() local
212 mc = devm_kzalloc(&pdev->dev, sizeof(*mc), GFP_KERNEL); in tegra20_mc_probe()
213 if (!mc) in tegra20_mc_probe()
215 mc->dev = &pdev->dev; in tegra20_mc_probe()
217 for (i = 0; i < ARRAY_SIZE(mc->regs); i++) { in tegra20_mc_probe()
221 mc->regs[i] = devm_ioremap_resource(&pdev->dev, res); in tegra20_mc_probe()
222 if (IS_ERR(mc->regs[i])) in tegra20_mc_probe()
223 return PTR_ERR(mc->regs[i]); in tegra20_mc_probe()
230 IRQF_SHARED, dev_name(&pdev->dev), mc); in tegra20_mc_probe()
234 platform_set_drvdata(pdev, mc); in tegra20_mc_probe()
238 mc_writel(mc, intmask, MC_INTMASK); in tegra20_mc_probe()