v2m                99 drivers/irqchip/irq-gic-v2m.c static phys_addr_t gicv2m_get_msi_addr(struct v2m_data *v2m, int hwirq)
v2m               101 drivers/irqchip/irq-gic-v2m.c 	if (v2m->flags & GICV2M_GRAVITON_ADDRESS_ONLY)
v2m               102 drivers/irqchip/irq-gic-v2m.c 		return v2m->res.start | ((hwirq - 32) << 3);
v2m               104 drivers/irqchip/irq-gic-v2m.c 		return v2m->res.start + V2M_MSI_SETSPI_NS;
v2m               109 drivers/irqchip/irq-gic-v2m.c 	struct v2m_data *v2m = irq_data_get_irq_chip_data(data);
v2m               110 drivers/irqchip/irq-gic-v2m.c 	phys_addr_t addr = gicv2m_get_msi_addr(v2m, data->hwirq);
v2m               115 drivers/irqchip/irq-gic-v2m.c 	if (v2m->flags & GICV2M_GRAVITON_ADDRESS_ONLY)
v2m               119 drivers/irqchip/irq-gic-v2m.c 	if (v2m->flags & GICV2M_NEEDS_SPI_OFFSET)
v2m               120 drivers/irqchip/irq-gic-v2m.c 		msg->data -= v2m->spi_offset;
v2m               167 drivers/irqchip/irq-gic-v2m.c static void gicv2m_unalloc_msi(struct v2m_data *v2m, unsigned int hwirq,
v2m               171 drivers/irqchip/irq-gic-v2m.c 	bitmap_release_region(v2m->bm, hwirq - v2m->spi_start,
v2m               180 drivers/irqchip/irq-gic-v2m.c 	struct v2m_data *v2m = NULL, *tmp;
v2m               188 drivers/irqchip/irq-gic-v2m.c 			v2m = tmp;
v2m               194 drivers/irqchip/irq-gic-v2m.c 	if (!v2m)
v2m               197 drivers/irqchip/irq-gic-v2m.c 	hwirq = v2m->spi_start + offset;
v2m               200 drivers/irqchip/irq-gic-v2m.c 				    gicv2m_get_msi_addr(v2m, hwirq));
v2m               210 drivers/irqchip/irq-gic-v2m.c 					      &gicv2m_irq_chip, v2m);
v2m               217 drivers/irqchip/irq-gic-v2m.c 	gicv2m_unalloc_msi(v2m, hwirq, nr_irqs);
v2m               225 drivers/irqchip/irq-gic-v2m.c 	struct v2m_data *v2m = irq_data_get_irq_chip_data(d);
v2m               227 drivers/irqchip/irq-gic-v2m.c 	gicv2m_unalloc_msi(v2m, d->hwirq, nr_irqs);
v2m               267 drivers/irqchip/irq-gic-v2m.c 	struct v2m_data *v2m, *tmp;
v2m               269 drivers/irqchip/irq-gic-v2m.c 	list_for_each_entry_safe(v2m, tmp, &v2m_nodes, entry) {
v2m               270 drivers/irqchip/irq-gic-v2m.c 		list_del(&v2m->entry);
v2m               271 drivers/irqchip/irq-gic-v2m.c 		kfree(v2m->bm);
v2m               272 drivers/irqchip/irq-gic-v2m.c 		iounmap(v2m->base);
v2m               273 drivers/irqchip/irq-gic-v2m.c 		of_node_put(to_of_node(v2m->fwnode));
v2m               274 drivers/irqchip/irq-gic-v2m.c 		if (is_fwnode_irqchip(v2m->fwnode))
v2m               275 drivers/irqchip/irq-gic-v2m.c 			irq_domain_free_fwnode(v2m->fwnode);
v2m               276 drivers/irqchip/irq-gic-v2m.c 		kfree(v2m);
v2m               283 drivers/irqchip/irq-gic-v2m.c 	struct v2m_data *v2m;
v2m               285 drivers/irqchip/irq-gic-v2m.c 	v2m = list_first_entry_or_null(&v2m_nodes, struct v2m_data, entry);
v2m               286 drivers/irqchip/irq-gic-v2m.c 	if (!v2m)
v2m               289 drivers/irqchip/irq-gic-v2m.c 	inner_domain = irq_domain_create_tree(v2m->fwnode,
v2m               290 drivers/irqchip/irq-gic-v2m.c 					      &gicv2m_domain_ops, v2m);
v2m               298 drivers/irqchip/irq-gic-v2m.c 	pci_domain = pci_msi_create_irq_domain(v2m->fwnode,
v2m               301 drivers/irqchip/irq-gic-v2m.c 	plat_domain = platform_msi_create_irq_domain(v2m->fwnode,
v2m               322 drivers/irqchip/irq-gic-v2m.c 	struct v2m_data *v2m;
v2m               324 drivers/irqchip/irq-gic-v2m.c 	v2m = kzalloc(sizeof(struct v2m_data), GFP_KERNEL);
v2m               325 drivers/irqchip/irq-gic-v2m.c 	if (!v2m) {
v2m               330 drivers/irqchip/irq-gic-v2m.c 	INIT_LIST_HEAD(&v2m->entry);
v2m               331 drivers/irqchip/irq-gic-v2m.c 	v2m->fwnode = fwnode;
v2m               332 drivers/irqchip/irq-gic-v2m.c 	v2m->flags = flags;
v2m               334 drivers/irqchip/irq-gic-v2m.c 	memcpy(&v2m->res, res, sizeof(struct resource));
v2m               336 drivers/irqchip/irq-gic-v2m.c 	v2m->base = ioremap(v2m->res.start, resource_size(&v2m->res));
v2m               337 drivers/irqchip/irq-gic-v2m.c 	if (!v2m->base) {
v2m               344 drivers/irqchip/irq-gic-v2m.c 		v2m->spi_start = spi_start;
v2m               345 drivers/irqchip/irq-gic-v2m.c 		v2m->nr_spis = nr_spis;
v2m               350 drivers/irqchip/irq-gic-v2m.c 		if (v2m->flags & GICV2M_GRAVITON_ADDRESS_ONLY) {
v2m               354 drivers/irqchip/irq-gic-v2m.c 		typer = readl_relaxed(v2m->base + V2M_MSI_TYPER);
v2m               356 drivers/irqchip/irq-gic-v2m.c 		v2m->spi_start = V2M_MSI_TYPER_BASE_SPI(typer);
v2m               357 drivers/irqchip/irq-gic-v2m.c 		v2m->nr_spis = V2M_MSI_TYPER_NUM_SPI(typer);
v2m               360 drivers/irqchip/irq-gic-v2m.c 	if (!is_msi_spi_valid(v2m->spi_start, v2m->nr_spis)) {
v2m               378 drivers/irqchip/irq-gic-v2m.c 	if (!(v2m->flags & GICV2M_GRAVITON_ADDRESS_ONLY)) {
v2m               379 drivers/irqchip/irq-gic-v2m.c 		switch (readl_relaxed(v2m->base + V2M_MSI_IIDR)) {
v2m               381 drivers/irqchip/irq-gic-v2m.c 			v2m->flags |= GICV2M_NEEDS_SPI_OFFSET;
v2m               382 drivers/irqchip/irq-gic-v2m.c 			v2m->spi_offset = v2m->spi_start;
v2m               385 drivers/irqchip/irq-gic-v2m.c 			v2m->flags |= GICV2M_NEEDS_SPI_OFFSET;
v2m               386 drivers/irqchip/irq-gic-v2m.c 			v2m->spi_offset = 32;
v2m               390 drivers/irqchip/irq-gic-v2m.c 	v2m->bm = kcalloc(BITS_TO_LONGS(v2m->nr_spis), sizeof(long),
v2m               392 drivers/irqchip/irq-gic-v2m.c 	if (!v2m->bm) {
v2m               397 drivers/irqchip/irq-gic-v2m.c 	list_add_tail(&v2m->entry, &v2m_nodes);
v2m               400 drivers/irqchip/irq-gic-v2m.c 		v2m->spi_start, (v2m->spi_start + v2m->nr_spis - 1));
v2m               404 drivers/irqchip/irq-gic-v2m.c 	iounmap(v2m->base);
v2m               406 drivers/irqchip/irq-gic-v2m.c 	kfree(v2m);