Lines Matching refs:gicp

42 static int gicp_idx_to_spi(struct mvebu_gicp *gicp, int idx)  in gicp_idx_to_spi()  argument
46 for (i = 0; i < gicp->spi_ranges_cnt; i++) { in gicp_idx_to_spi()
47 struct mvebu_gicp_spi_range *r = &gicp->spi_ranges[i]; in gicp_idx_to_spi()
60 struct mvebu_gicp *gicp = data->chip_data; in gicp_compose_msi_msg() local
61 phys_addr_t setspi = gicp->res->start + GICP_SETSPI_NSR_OFFSET; in gicp_compose_msi_msg()
62 phys_addr_t clrspi = gicp->res->start + GICP_CLRSPI_NSR_OFFSET; in gicp_compose_msi_msg()
85 struct mvebu_gicp *gicp = domain->host_data; in gicp_irq_domain_alloc() local
90 spin_lock(&gicp->spi_lock); in gicp_irq_domain_alloc()
91 hwirq = find_first_zero_bit(gicp->spi_bitmap, gicp->spi_cnt); in gicp_irq_domain_alloc()
92 if (hwirq == gicp->spi_cnt) { in gicp_irq_domain_alloc()
93 spin_unlock(&gicp->spi_lock); in gicp_irq_domain_alloc()
96 __set_bit(hwirq, gicp->spi_bitmap); in gicp_irq_domain_alloc()
97 spin_unlock(&gicp->spi_lock); in gicp_irq_domain_alloc()
102 fwspec.param[1] = gicp_idx_to_spi(gicp, hwirq) - 32; in gicp_irq_domain_alloc()
111 dev_err(gicp->dev, "Cannot allocate parent IRQ\n"); in gicp_irq_domain_alloc()
116 &gicp_irq_chip, gicp); in gicp_irq_domain_alloc()
125 spin_lock(&gicp->spi_lock); in gicp_irq_domain_alloc()
126 __clear_bit(hwirq, gicp->spi_bitmap); in gicp_irq_domain_alloc()
127 spin_unlock(&gicp->spi_lock); in gicp_irq_domain_alloc()
134 struct mvebu_gicp *gicp = domain->host_data; in gicp_irq_domain_free() local
137 if (d->hwirq >= gicp->spi_cnt) { in gicp_irq_domain_free()
138 dev_err(gicp->dev, "Invalid hwirq %lu\n", d->hwirq); in gicp_irq_domain_free()
144 spin_lock(&gicp->spi_lock); in gicp_irq_domain_free()
145 __clear_bit(d->hwirq, gicp->spi_bitmap); in gicp_irq_domain_free()
146 spin_unlock(&gicp->spi_lock); in gicp_irq_domain_free()
179 struct mvebu_gicp *gicp; in mvebu_gicp_probe() local
183 gicp = devm_kzalloc(&pdev->dev, sizeof(*gicp), GFP_KERNEL); in mvebu_gicp_probe()
184 if (!gicp) in mvebu_gicp_probe()
187 gicp->dev = &pdev->dev; in mvebu_gicp_probe()
188 spin_lock_init(&gicp->spi_lock); in mvebu_gicp_probe()
190 gicp->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); in mvebu_gicp_probe()
191 if (!gicp->res) in mvebu_gicp_probe()
198 gicp->spi_ranges_cnt = ret / 2; in mvebu_gicp_probe()
200 gicp->spi_ranges = in mvebu_gicp_probe()
202 gicp->spi_ranges_cnt, in mvebu_gicp_probe()
205 if (!gicp->spi_ranges) in mvebu_gicp_probe()
208 for (i = 0; i < gicp->spi_ranges_cnt; i++) { in mvebu_gicp_probe()
211 &gicp->spi_ranges[i].start); in mvebu_gicp_probe()
215 &gicp->spi_ranges[i].count); in mvebu_gicp_probe()
217 gicp->spi_cnt += gicp->spi_ranges[i].count; in mvebu_gicp_probe()
220 gicp->spi_bitmap = devm_bitmap_zalloc(&pdev->dev, gicp->spi_cnt, GFP_KERNEL); in mvebu_gicp_probe()
221 if (!gicp->spi_bitmap) in mvebu_gicp_probe()
224 info.size = gicp->spi_cnt; in mvebu_gicp_probe()
225 info.host_data = gicp; in mvebu_gicp_probe()
240 base = ioremap(gicp->res->start, resource_size(gicp->res)); in mvebu_gicp_probe()