Lines Matching refs:msi_data

71 static void imx_mu_write(struct imx_mu_msi *msi_data, u32 val, u32 offs)  in imx_mu_write()  argument
73 iowrite32(val, msi_data->regs + offs); in imx_mu_write()
76 static u32 imx_mu_read(struct imx_mu_msi *msi_data, u32 offs) in imx_mu_read() argument
78 return ioread32(msi_data->regs + offs); in imx_mu_read()
81 static u32 imx_mu_xcr_rmw(struct imx_mu_msi *msi_data, enum imx_mu_xcr type, u32 set, u32 clr) in imx_mu_xcr_rmw() argument
86 raw_spin_lock_irqsave(&msi_data->lock, flags); in imx_mu_xcr_rmw()
87 val = imx_mu_read(msi_data, msi_data->cfg->xCR[type]); in imx_mu_xcr_rmw()
90 imx_mu_write(msi_data, val, msi_data->cfg->xCR[type]); in imx_mu_xcr_rmw()
91 raw_spin_unlock_irqrestore(&msi_data->lock, flags); in imx_mu_xcr_rmw()
98 struct imx_mu_msi *msi_data = irq_data_get_irq_chip_data(data); in imx_mu_msi_parent_mask_irq() local
100 imx_mu_xcr_rmw(msi_data, IMX_MU_RCR, 0, IMX_MU_xCR_RIEn(msi_data, data->hwirq)); in imx_mu_msi_parent_mask_irq()
105 struct imx_mu_msi *msi_data = irq_data_get_irq_chip_data(data); in imx_mu_msi_parent_unmask_irq() local
107 imx_mu_xcr_rmw(msi_data, IMX_MU_RCR, IMX_MU_xCR_RIEn(msi_data, data->hwirq), 0); in imx_mu_msi_parent_unmask_irq()
112 struct imx_mu_msi *msi_data = irq_data_get_irq_chip_data(data); in imx_mu_msi_parent_ack_irq() local
114 imx_mu_read(msi_data, msi_data->cfg->xRR + data->hwirq * 4); in imx_mu_msi_parent_ack_irq()
134 struct imx_mu_msi *msi_data = irq_data_get_irq_chip_data(data); in imx_mu_msi_parent_compose_msg() local
135 u64 addr = msi_data->msiir_addr + 4 * data->hwirq; in imx_mu_msi_parent_compose_msg()
162 struct imx_mu_msi *msi_data = domain->host_data; in imx_mu_msi_domain_irq_alloc() local
168 raw_spin_lock_irqsave(&msi_data->lock, flags); in imx_mu_msi_domain_irq_alloc()
169 pos = find_first_zero_bit(&msi_data->used, IMX_MU_CHANS); in imx_mu_msi_domain_irq_alloc()
171 __set_bit(pos, &msi_data->used); in imx_mu_msi_domain_irq_alloc()
174 raw_spin_unlock_irqrestore(&msi_data->lock, flags); in imx_mu_msi_domain_irq_alloc()
180 &imx_mu_msi_parent_chip, msi_data, in imx_mu_msi_domain_irq_alloc()
189 struct imx_mu_msi *msi_data = irq_data_get_irq_chip_data(d); in imx_mu_msi_domain_irq_free() local
192 raw_spin_lock_irqsave(&msi_data->lock, flags); in imx_mu_msi_domain_irq_free()
193 __clear_bit(d->hwirq, &msi_data->used); in imx_mu_msi_domain_irq_free()
194 raw_spin_unlock_irqrestore(&msi_data->lock, flags); in imx_mu_msi_domain_irq_free()
204 struct imx_mu_msi *msi_data = irq_desc_get_handler_data(desc); in imx_mu_msi_irq_handler() local
209 status = imx_mu_read(msi_data, msi_data->cfg->xSR[IMX_MU_RSR]); in imx_mu_msi_irq_handler()
213 if (status & IMX_MU_xSR_RFn(msi_data, i)) in imx_mu_msi_irq_handler()
214 generic_handle_domain_irq(msi_data->msi_domain, i); in imx_mu_msi_irq_handler()
219 static int imx_mu_msi_domains_init(struct imx_mu_msi *msi_data, struct device *dev) in imx_mu_msi_domains_init() argument
228 msi_data); in imx_mu_msi_domains_init()
236 msi_data->msi_domain = platform_msi_create_irq_domain(fwnodes, in imx_mu_msi_domains_init()
240 if (!msi_data->msi_domain) { in imx_mu_msi_domains_init()
246 irq_domain_set_pm_device(msi_data->msi_domain, dev); in imx_mu_msi_domains_init()
313 struct imx_mu_msi *msi_data; in imx_mu_of_init() local
323 msi_data = devm_kzalloc(&pdev->dev, sizeof(*msi_data), GFP_KERNEL); in imx_mu_of_init()
324 if (!msi_data) in imx_mu_of_init()
327 msi_data->cfg = cfg; in imx_mu_of_init()
329 msi_data->regs = devm_platform_ioremap_resource_byname(pdev, "processor-a-side"); in imx_mu_of_init()
330 if (IS_ERR(msi_data->regs)) { in imx_mu_of_init()
332 return PTR_ERR(msi_data->regs); in imx_mu_of_init()
339 msi_data->msiir_addr = res->start + msi_data->cfg->xTR; in imx_mu_of_init()
345 platform_set_drvdata(pdev, msi_data); in imx_mu_of_init()
347 msi_data->clk = devm_clk_get(dev, NULL); in imx_mu_of_init()
348 if (IS_ERR(msi_data->clk)) in imx_mu_of_init()
349 return PTR_ERR(msi_data->clk); in imx_mu_of_init()
380 ret = imx_mu_msi_domains_init(msi_data, dev); in imx_mu_of_init()
388 msi_data); in imx_mu_of_init()