sei                58 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = irq_data_get_irq_chip_data(d);
sei                62 drivers/irqchip/irq-mvebu-sei.c 		       sei->base + GICP_SECR(reg_idx));
sei                67 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = irq_data_get_irq_chip_data(d);
sei                72 drivers/irqchip/irq-mvebu-sei.c 	raw_spin_lock_irqsave(&sei->mask_lock, flags);
sei                73 drivers/irqchip/irq-mvebu-sei.c 	reg = readl_relaxed(sei->base + GICP_SEMR(reg_idx));
sei                75 drivers/irqchip/irq-mvebu-sei.c 	writel_relaxed(reg, sei->base + GICP_SEMR(reg_idx));
sei                76 drivers/irqchip/irq-mvebu-sei.c 	raw_spin_unlock_irqrestore(&sei->mask_lock, flags);
sei                81 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = irq_data_get_irq_chip_data(d);
sei                86 drivers/irqchip/irq-mvebu-sei.c 	raw_spin_lock_irqsave(&sei->mask_lock, flags);
sei                87 drivers/irqchip/irq-mvebu-sei.c 	reg = readl_relaxed(sei->base + GICP_SEMR(reg_idx));
sei                89 drivers/irqchip/irq-mvebu-sei.c 	writel_relaxed(reg, sei->base + GICP_SEMR(reg_idx));
sei                90 drivers/irqchip/irq-mvebu-sei.c 	raw_spin_unlock_irqrestore(&sei->mask_lock, flags);
sei               141 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = data->chip_data;
sei               142 drivers/irqchip/irq-mvebu-sei.c 	phys_addr_t set = sei->res->start + GICP_SET_SEI_OFFSET;
sei               144 drivers/irqchip/irq-mvebu-sei.c 	msg->data = data->hwirq + sei->caps->cp_range.first;
sei               170 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = domain->host_data;
sei               175 drivers/irqchip/irq-mvebu-sei.c 				      &mvebu_sei_irq_chip, sei);
sei               211 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = domain->host_data;
sei               221 drivers/irqchip/irq-mvebu-sei.c 	fwspec.param[0] = hwirq + sei->caps->ap_range.first;
sei               228 drivers/irqchip/irq-mvebu-sei.c 			    &mvebu_sei_ap_irq_chip, sei,
sei               241 drivers/irqchip/irq-mvebu-sei.c static void mvebu_sei_cp_release_irq(struct mvebu_sei *sei, unsigned long hwirq)
sei               243 drivers/irqchip/irq-mvebu-sei.c 	mutex_lock(&sei->cp_msi_lock);
sei               244 drivers/irqchip/irq-mvebu-sei.c 	clear_bit(hwirq, sei->cp_msi_bitmap);
sei               245 drivers/irqchip/irq-mvebu-sei.c 	mutex_unlock(&sei->cp_msi_lock);
sei               252 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = domain->host_data;
sei               261 drivers/irqchip/irq-mvebu-sei.c 	mutex_lock(&sei->cp_msi_lock);
sei               262 drivers/irqchip/irq-mvebu-sei.c 	hwirq = find_first_zero_bit(sei->cp_msi_bitmap,
sei               263 drivers/irqchip/irq-mvebu-sei.c 				    sei->caps->cp_range.size);
sei               264 drivers/irqchip/irq-mvebu-sei.c 	if (hwirq < sei->caps->cp_range.size)
sei               265 drivers/irqchip/irq-mvebu-sei.c 		set_bit(hwirq, sei->cp_msi_bitmap);
sei               266 drivers/irqchip/irq-mvebu-sei.c 	mutex_unlock(&sei->cp_msi_lock);
sei               268 drivers/irqchip/irq-mvebu-sei.c 	if (hwirq == sei->caps->cp_range.size)
sei               273 drivers/irqchip/irq-mvebu-sei.c 	fwspec.param[0] = hwirq + sei->caps->cp_range.first;
sei               280 drivers/irqchip/irq-mvebu-sei.c 			    &mvebu_sei_cp_irq_chip, sei,
sei               286 drivers/irqchip/irq-mvebu-sei.c 	mvebu_sei_cp_release_irq(sei, hwirq);
sei               293 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = domain->host_data;
sei               296 drivers/irqchip/irq-mvebu-sei.c 	if (nr_irqs != 1 || d->hwirq >= sei->caps->cp_range.size) {
sei               297 drivers/irqchip/irq-mvebu-sei.c 		dev_err(sei->dev, "Invalid hwirq %lu\n", d->hwirq);
sei               301 drivers/irqchip/irq-mvebu-sei.c 	mvebu_sei_cp_release_irq(sei, d->hwirq);
sei               327 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei = irq_desc_get_handler_data(desc);
sei               337 drivers/irqchip/irq-mvebu-sei.c 		irqmap = readl_relaxed(sei->base + GICP_SECR(idx));
sei               343 drivers/irqchip/irq-mvebu-sei.c 			virq = irq_find_mapping(sei->sei_domain, hwirq);
sei               349 drivers/irqchip/irq-mvebu-sei.c 			dev_warn(sei->dev,
sei               357 drivers/irqchip/irq-mvebu-sei.c static void mvebu_sei_reset(struct mvebu_sei *sei)
sei               363 drivers/irqchip/irq-mvebu-sei.c 		writel_relaxed(0xFFFFFFFF, sei->base + GICP_SECR(reg_idx));
sei               364 drivers/irqchip/irq-mvebu-sei.c 		writel_relaxed(0xFFFFFFFF, sei->base + GICP_SEMR(reg_idx));
sei               372 drivers/irqchip/irq-mvebu-sei.c 	struct mvebu_sei *sei;
sei               376 drivers/irqchip/irq-mvebu-sei.c 	sei = devm_kzalloc(&pdev->dev, sizeof(*sei), GFP_KERNEL);
sei               377 drivers/irqchip/irq-mvebu-sei.c 	if (!sei)
sei               380 drivers/irqchip/irq-mvebu-sei.c 	sei->dev = &pdev->dev;
sei               382 drivers/irqchip/irq-mvebu-sei.c 	mutex_init(&sei->cp_msi_lock);
sei               383 drivers/irqchip/irq-mvebu-sei.c 	raw_spin_lock_init(&sei->mask_lock);
sei               385 drivers/irqchip/irq-mvebu-sei.c 	sei->res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
sei               386 drivers/irqchip/irq-mvebu-sei.c 	sei->base = devm_ioremap_resource(sei->dev, sei->res);
sei               387 drivers/irqchip/irq-mvebu-sei.c 	if (IS_ERR(sei->base)) {
sei               388 drivers/irqchip/irq-mvebu-sei.c 		dev_err(sei->dev, "Failed to remap SEI resource\n");
sei               389 drivers/irqchip/irq-mvebu-sei.c 		return PTR_ERR(sei->base);
sei               393 drivers/irqchip/irq-mvebu-sei.c 	sei->caps = of_device_get_match_data(&pdev->dev);
sei               394 drivers/irqchip/irq-mvebu-sei.c 	if (!sei->caps) {
sei               395 drivers/irqchip/irq-mvebu-sei.c 		dev_err(sei->dev,
sei               406 drivers/irqchip/irq-mvebu-sei.c 		dev_err(sei->dev, "Failed to retrieve top-level SPI IRQ\n");
sei               411 drivers/irqchip/irq-mvebu-sei.c 	sei->sei_domain = irq_domain_create_linear(of_node_to_fwnode(node),
sei               412 drivers/irqchip/irq-mvebu-sei.c 						   (sei->caps->ap_range.size +
sei               413 drivers/irqchip/irq-mvebu-sei.c 						    sei->caps->cp_range.size),
sei               415 drivers/irqchip/irq-mvebu-sei.c 						   sei);
sei               416 drivers/irqchip/irq-mvebu-sei.c 	if (!sei->sei_domain) {
sei               417 drivers/irqchip/irq-mvebu-sei.c 		dev_err(sei->dev, "Failed to create SEI IRQ domain\n");
sei               422 drivers/irqchip/irq-mvebu-sei.c 	irq_domain_update_bus_token(sei->sei_domain, DOMAIN_BUS_NEXUS);
sei               425 drivers/irqchip/irq-mvebu-sei.c 	sei->ap_domain = irq_domain_create_hierarchy(sei->sei_domain, 0,
sei               426 drivers/irqchip/irq-mvebu-sei.c 						     sei->caps->ap_range.size,
sei               429 drivers/irqchip/irq-mvebu-sei.c 						     sei);
sei               430 drivers/irqchip/irq-mvebu-sei.c 	if (!sei->ap_domain) {
sei               431 drivers/irqchip/irq-mvebu-sei.c 		dev_err(sei->dev, "Failed to create AP IRQ domain\n");
sei               436 drivers/irqchip/irq-mvebu-sei.c 	irq_domain_update_bus_token(sei->ap_domain, DOMAIN_BUS_WIRED);
sei               439 drivers/irqchip/irq-mvebu-sei.c 	sei->cp_domain = irq_domain_create_hierarchy(sei->sei_domain, 0,
sei               440 drivers/irqchip/irq-mvebu-sei.c 						     sei->caps->cp_range.size,
sei               443 drivers/irqchip/irq-mvebu-sei.c 						     sei);
sei               444 drivers/irqchip/irq-mvebu-sei.c 	if (!sei->cp_domain) {
sei               450 drivers/irqchip/irq-mvebu-sei.c 	irq_domain_update_bus_token(sei->cp_domain, DOMAIN_BUS_GENERIC_MSI);
sei               454 drivers/irqchip/irq-mvebu-sei.c 						     sei->cp_domain);
sei               461 drivers/irqchip/irq-mvebu-sei.c 	mvebu_sei_reset(sei);
sei               465 drivers/irqchip/irq-mvebu-sei.c 					 sei);
sei               470 drivers/irqchip/irq-mvebu-sei.c 	irq_domain_remove(sei->cp_domain);
sei               472 drivers/irqchip/irq-mvebu-sei.c 	irq_domain_remove(sei->ap_domain);
sei               474 drivers/irqchip/irq-mvebu-sei.c 	irq_domain_remove(sei->sei_domain);
sei               623 drivers/s390/cio/chsc.c static void chsc_process_event_information(struct chsc_sei *sei, u64 ntsm)
sei               628 drivers/s390/cio/chsc.c 		memset(sei, 0, sizeof(*sei));
sei               629 drivers/s390/cio/chsc.c 		sei->request.length = 0x0010;
sei               630 drivers/s390/cio/chsc.c 		sei->request.code = 0x000e;
sei               632 drivers/s390/cio/chsc.c 			sei->ntsm = ntsm;
sei               634 drivers/s390/cio/chsc.c 		if (chsc(sei))
sei               637 drivers/s390/cio/chsc.c 		if (sei->response.code != 0x0001) {
sei               639 drivers/s390/cio/chsc.c 				      sei->response.code, sei->ntsm);
sei               641 drivers/s390/cio/chsc.c 			if (sei->response.code == 3 && sei->ntsm) {
sei               649 drivers/s390/cio/chsc.c 		CIO_CRW_EVENT(2, "chsc: sei successful (nt=%d)\n", sei->nt);
sei               650 drivers/s390/cio/chsc.c 		switch (sei->nt) {
sei               652 drivers/s390/cio/chsc.c 			chsc_process_sei_nt0(&sei->u.nt0_area);
sei               655 drivers/s390/cio/chsc.c 			chsc_process_sei_nt2(&sei->u.nt2_area);
sei               658 drivers/s390/cio/chsc.c 			CIO_CRW_EVENT(2, "chsc: unhandled nt: %d\n", sei->nt);
sei               662 drivers/s390/cio/chsc.c 		if (!(sei->u.nt0_area.flags & 0x80))
sei               676 drivers/s390/cio/chsc.c 	struct chsc_sei *sei = sei_page;
sei               688 drivers/s390/cio/chsc.c 	chsc_process_event_information(sei, CHSC_SEI_NT0 | CHSC_SEI_NT2);