/Linux-v4.19/drivers/acpi/ |
D | irq.c | 57 struct irq_fwspec fwspec; in acpi_register_gsi() local 64 fwspec.fwnode = acpi_gsi_domain_id; in acpi_register_gsi() 65 fwspec.param[0] = gsi; in acpi_register_gsi() 66 fwspec.param[1] = acpi_dev_get_irq_type(trigger, polarity); in acpi_register_gsi() 67 fwspec.param_count = 2; in acpi_register_gsi() 69 return irq_create_fwspec_mapping(&fwspec); in acpi_register_gsi() 131 struct irq_fwspec *fwspec; member 157 ctx->fwspec->fwnode = fwnode; in acpi_irq_parse_one_match() 158 ctx->fwspec->param[0] = hwirq; in acpi_irq_parse_one_match() 159 ctx->fwspec->param[1] = acpi_dev_get_irq_type(triggering, polarity); in acpi_irq_parse_one_match() [all …]
|
/Linux-v4.19/drivers/irqchip/ |
D | irq-crossbar.c | 81 struct irq_fwspec fwspec; in allocate_gic_irq() local 100 fwspec.fwnode = domain->parent->fwnode; in allocate_gic_irq() 101 fwspec.param_count = 3; in allocate_gic_irq() 102 fwspec.param[0] = 0; /* SPI */ in allocate_gic_irq() 103 fwspec.param[1] = i; in allocate_gic_irq() 104 fwspec.param[2] = IRQ_TYPE_LEVEL_HIGH; in allocate_gic_irq() 106 err = irq_domain_alloc_irqs_parent(domain, virq, 1, &fwspec); in allocate_gic_irq() 118 struct irq_fwspec *fwspec = data; in crossbar_domain_alloc() local 122 if (fwspec->param_count != 3) in crossbar_domain_alloc() 124 if (fwspec->param[0] != 0) in crossbar_domain_alloc() [all …]
|
D | irq-sni-exiu.c | 122 struct irq_fwspec *fwspec, in exiu_domain_translate() argument 128 if (is_of_node(fwspec->fwnode)) { in exiu_domain_translate() 129 if (fwspec->param_count != 3) in exiu_domain_translate() 132 if (fwspec->param[0] != GIC_SPI) in exiu_domain_translate() 135 *hwirq = fwspec->param[1] - info->spi_base; in exiu_domain_translate() 136 *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; in exiu_domain_translate() 145 struct irq_fwspec *fwspec = data; in exiu_domain_alloc() local 150 if (fwspec->param_count != 3) in exiu_domain_alloc() 152 if (fwspec->param[0] != GIC_SPI) in exiu_domain_alloc() 156 hwirq = fwspec->param[1] - info->spi_base; in exiu_domain_alloc() [all …]
|
D | irq-meson-gpio.c | 248 struct irq_fwspec *fwspec, in meson_gpio_irq_domain_translate() argument 252 if (is_of_node(fwspec->fwnode) && fwspec->param_count == 2) { in meson_gpio_irq_domain_translate() 253 *hwirq = fwspec->param[0]; in meson_gpio_irq_domain_translate() 254 *type = fwspec->param[1]; in meson_gpio_irq_domain_translate() 266 struct irq_fwspec fwspec; in meson_gpio_irq_allocate_gic_irq() local 268 fwspec.fwnode = domain->parent->fwnode; in meson_gpio_irq_allocate_gic_irq() 269 fwspec.param_count = 3; in meson_gpio_irq_allocate_gic_irq() 270 fwspec.param[0] = 0; /* SPI */ in meson_gpio_irq_allocate_gic_irq() 271 fwspec.param[1] = hwirq; in meson_gpio_irq_allocate_gic_irq() 272 fwspec.param[2] = meson_gpio_irq_type_output(type); in meson_gpio_irq_allocate_gic_irq() [all …]
|
D | irq-vf610-mscm-ir.c | 133 struct irq_fwspec *fwspec = arg; in vf610_mscm_ir_domain_alloc() local 139 if (fwspec->param_count != 2) in vf610_mscm_ir_domain_alloc() 142 hwirq = fwspec->param[0]; in vf610_mscm_ir_domain_alloc() 152 parent_fwspec.param[0] = fwspec->param[0]; in vf610_mscm_ir_domain_alloc() 156 parent_fwspec.param[1] = fwspec->param[0]; in vf610_mscm_ir_domain_alloc() 157 parent_fwspec.param[2] = fwspec->param[1]; in vf610_mscm_ir_domain_alloc() 165 struct irq_fwspec *fwspec, in vf610_mscm_ir_domain_translate() argument 169 if (WARN_ON(fwspec->param_count < 2)) in vf610_mscm_ir_domain_translate() 171 *hwirq = fwspec->param[0]; in vf610_mscm_ir_domain_translate() 172 *type = fwspec->param[1] & IRQ_TYPE_SENSE_MASK; in vf610_mscm_ir_domain_translate()
|
D | irq-mtk-cirq.c | 112 struct irq_fwspec *fwspec, in mtk_cirq_domain_translate() argument 116 if (is_of_node(fwspec->fwnode)) { in mtk_cirq_domain_translate() 117 if (fwspec->param_count != 3) in mtk_cirq_domain_translate() 121 if (fwspec->param[0] != 0) in mtk_cirq_domain_translate() 125 if (fwspec->param[1] < cirq_data->ext_irq_start || in mtk_cirq_domain_translate() 126 fwspec->param[1] > cirq_data->ext_irq_end) in mtk_cirq_domain_translate() 129 *hwirq = fwspec->param[1] - cirq_data->ext_irq_start; in mtk_cirq_domain_translate() 130 *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; in mtk_cirq_domain_translate() 143 struct irq_fwspec *fwspec = arg; in mtk_cirq_domain_alloc() local 144 struct irq_fwspec parent_fwspec = *fwspec; in mtk_cirq_domain_alloc() [all …]
|
D | irq-mtk-sysirq.c | 79 struct irq_fwspec *fwspec, in mtk_sysirq_domain_translate() argument 83 if (is_of_node(fwspec->fwnode)) { in mtk_sysirq_domain_translate() 84 if (fwspec->param_count != 3) in mtk_sysirq_domain_translate() 88 if (fwspec->param[0] != 0) in mtk_sysirq_domain_translate() 91 *hwirq = fwspec->param[1]; in mtk_sysirq_domain_translate() 92 *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; in mtk_sysirq_domain_translate() 104 struct irq_fwspec *fwspec = arg; in mtk_sysirq_domain_alloc() local 105 struct irq_fwspec gic_fwspec = *fwspec; in mtk_sysirq_domain_alloc() 107 if (fwspec->param_count != 3) in mtk_sysirq_domain_alloc() 111 if (fwspec->param[0]) in mtk_sysirq_domain_alloc() [all …]
|
D | irq-mbigen.c | 177 struct irq_fwspec *fwspec, in mbigen_domain_translate() argument 181 if (is_of_node(fwspec->fwnode) || is_acpi_device_node(fwspec->fwnode)) { in mbigen_domain_translate() 182 if (fwspec->param_count != 2) in mbigen_domain_translate() 185 if ((fwspec->param[0] > MAXIMUM_IRQ_PIN_NUM) || in mbigen_domain_translate() 186 (fwspec->param[0] < RESERVED_IRQ_PER_MBIGEN_CHIP)) in mbigen_domain_translate() 189 *hwirq = fwspec->param[0]; in mbigen_domain_translate() 192 if ((fwspec->param[1] == IRQ_TYPE_EDGE_RISING) || in mbigen_domain_translate() 193 (fwspec->param[1] == IRQ_TYPE_LEVEL_HIGH)) in mbigen_domain_translate() 194 *type = fwspec->param[1]; in mbigen_domain_translate() 208 struct irq_fwspec *fwspec = args; in mbigen_irq_domain_alloc() local [all …]
|
D | irq-tegra.c | 225 struct irq_fwspec *fwspec, in tegra_ictlr_domain_translate() argument 229 if (is_of_node(fwspec->fwnode)) { in tegra_ictlr_domain_translate() 230 if (fwspec->param_count != 3) in tegra_ictlr_domain_translate() 234 if (fwspec->param[0] != 0) in tegra_ictlr_domain_translate() 237 *hwirq = fwspec->param[1]; in tegra_ictlr_domain_translate() 238 *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; in tegra_ictlr_domain_translate() 249 struct irq_fwspec *fwspec = data; in tegra_ictlr_domain_alloc() local 255 if (fwspec->param_count != 3) in tegra_ictlr_domain_alloc() 257 if (fwspec->param[0] != GIC_SPI) in tegra_ictlr_domain_alloc() 260 hwirq = fwspec->param[1]; in tegra_ictlr_domain_alloc() [all …]
|
D | irq-imx-gpcv2.c | 140 struct irq_fwspec *fwspec, in imx_gpcv2_domain_translate() argument 144 if (is_of_node(fwspec->fwnode)) { in imx_gpcv2_domain_translate() 145 if (fwspec->param_count != 3) in imx_gpcv2_domain_translate() 149 if (fwspec->param[0] != 0) in imx_gpcv2_domain_translate() 152 *hwirq = fwspec->param[1]; in imx_gpcv2_domain_translate() 153 *type = fwspec->param[2]; in imx_gpcv2_domain_translate() 164 struct irq_fwspec *fwspec = data; in imx_gpcv2_domain_alloc() local 171 err = imx_gpcv2_domain_translate(domain, fwspec, &hwirq, &type); in imx_gpcv2_domain_alloc() 183 parent_fwspec = *fwspec; in imx_gpcv2_domain_alloc()
|
D | irq-mvebu-icu.c | 105 mvebu_icu_irq_domain_translate(struct irq_domain *d, struct irq_fwspec *fwspec, in mvebu_icu_irq_domain_translate() argument 112 if (WARN_ON(fwspec->param_count < 3)) { in mvebu_icu_irq_domain_translate() 114 fwspec->param_count); in mvebu_icu_irq_domain_translate() 119 icu_group = fwspec->param[0]; in mvebu_icu_irq_domain_translate() 126 *hwirq = fwspec->param[1]; in mvebu_icu_irq_domain_translate() 133 *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; in mvebu_icu_irq_domain_translate() 144 struct irq_fwspec *fwspec = args; in mvebu_icu_irq_domain_alloc() local 152 err = mvebu_icu_irq_domain_translate(domain, fwspec, &hwirq, in mvebu_icu_irq_domain_alloc() 159 icu_irqd->icu_group = fwspec->param[0]; in mvebu_icu_irq_domain_alloc()
|
D | irq-nvic.c | 52 struct irq_fwspec *fwspec, in nvic_irq_domain_translate() argument 55 if (WARN_ON(fwspec->param_count < 1)) in nvic_irq_domain_translate() 57 *hwirq = fwspec->param[0]; in nvic_irq_domain_translate() 68 struct irq_fwspec *fwspec = arg; in nvic_irq_domain_alloc() local 70 ret = nvic_irq_domain_translate(domain, fwspec, &hwirq, &type); in nvic_irq_domain_alloc()
|
D | irq-mvebu-odmi.c | 82 struct irq_fwspec fwspec; in odmi_irq_domain_alloc() local 100 fwspec.fwnode = domain->parent->fwnode; in odmi_irq_domain_alloc() 101 fwspec.param_count = 3; in odmi_irq_domain_alloc() 102 fwspec.param[0] = GIC_SPI; in odmi_irq_domain_alloc() 103 fwspec.param[1] = odmi->spi_base - 32 + odmin; in odmi_irq_domain_alloc() 104 fwspec.param[2] = IRQ_TYPE_EDGE_RISING; in odmi_irq_domain_alloc() 106 ret = irq_domain_alloc_irqs_parent(domain, virq, 1, &fwspec); in odmi_irq_domain_alloc()
|
D | irq-alpine-msi.c | 122 struct irq_fwspec fwspec; in alpine_msix_gic_domain_alloc() local 129 fwspec.fwnode = domain->parent->fwnode; in alpine_msix_gic_domain_alloc() 130 fwspec.param_count = 3; in alpine_msix_gic_domain_alloc() 131 fwspec.param[0] = 0; in alpine_msix_gic_domain_alloc() 132 fwspec.param[1] = sgi; in alpine_msix_gic_domain_alloc() 133 fwspec.param[2] = IRQ_TYPE_EDGE_RISING; in alpine_msix_gic_domain_alloc() 135 ret = irq_domain_alloc_irqs_parent(domain, virq, 1, &fwspec); in alpine_msix_gic_domain_alloc()
|
D | irq-mvebu-gicp.c | 84 struct irq_fwspec fwspec; in gicp_irq_domain_alloc() local 97 fwspec.fwnode = domain->parent->fwnode; in gicp_irq_domain_alloc() 98 fwspec.param_count = 3; in gicp_irq_domain_alloc() 99 fwspec.param[0] = GIC_SPI; in gicp_irq_domain_alloc() 100 fwspec.param[1] = gicp_idx_to_spi(gicp, hwirq) - 32; in gicp_irq_domain_alloc() 105 fwspec.param[2] = IRQ_TYPE_EDGE_RISING; in gicp_irq_domain_alloc() 107 ret = irq_domain_alloc_irqs_parent(domain, virq, 1, &fwspec); in gicp_irq_domain_alloc()
|
D | qcom-pdc.c | 175 static int qcom_pdc_translate(struct irq_domain *d, struct irq_fwspec *fwspec, in qcom_pdc_translate() argument 178 if (is_of_node(fwspec->fwnode)) { in qcom_pdc_translate() 179 if (fwspec->param_count != 2) in qcom_pdc_translate() 182 *hwirq = fwspec->param[0]; in qcom_pdc_translate() 183 *type = fwspec->param[1] & IRQ_TYPE_SENSE_MASK; in qcom_pdc_translate() 193 struct irq_fwspec *fwspec = data; in qcom_pdc_alloc() local 199 ret = qcom_pdc_translate(domain, fwspec, &hwirq, &type); in qcom_pdc_alloc()
|
D | irq-gic-v2m.c | 129 struct irq_fwspec fwspec; in gicv2m_irq_gic_domain_alloc() local 134 fwspec.fwnode = domain->parent->fwnode; in gicv2m_irq_gic_domain_alloc() 135 fwspec.param_count = 3; in gicv2m_irq_gic_domain_alloc() 136 fwspec.param[0] = 0; in gicv2m_irq_gic_domain_alloc() 137 fwspec.param[1] = hwirq - 32; in gicv2m_irq_gic_domain_alloc() 138 fwspec.param[2] = IRQ_TYPE_EDGE_RISING; in gicv2m_irq_gic_domain_alloc() 140 fwspec.fwnode = domain->parent->fwnode; in gicv2m_irq_gic_domain_alloc() 141 fwspec.param_count = 2; in gicv2m_irq_gic_domain_alloc() 142 fwspec.param[0] = hwirq; in gicv2m_irq_gic_domain_alloc() 143 fwspec.param[1] = IRQ_TYPE_EDGE_RISING; in gicv2m_irq_gic_domain_alloc() [all …]
|
D | irq-gic-v3.c | 932 struct irq_fwspec *fwspec, in gic_irq_domain_translate() argument 936 if (is_of_node(fwspec->fwnode)) { in gic_irq_domain_translate() 937 if (fwspec->param_count < 3) in gic_irq_domain_translate() 940 switch (fwspec->param[0]) { in gic_irq_domain_translate() 942 *hwirq = fwspec->param[1] + 32; in gic_irq_domain_translate() 946 *hwirq = fwspec->param[1] + 16; in gic_irq_domain_translate() 949 *hwirq = fwspec->param[1]; in gic_irq_domain_translate() 955 *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; in gic_irq_domain_translate() 962 fwspec->param[0] != GIC_IRQ_TYPE_PARTITION); in gic_irq_domain_translate() 966 if (is_fwnode_irqchip(fwspec->fwnode)) { in gic_irq_domain_translate() [all …]
|
D | irq-gic-v3-mbi.c | 45 struct irq_fwspec fwspec; in mbi_irq_gic_domain_alloc() local 61 fwspec.fwnode = domain->parent->fwnode; in mbi_irq_gic_domain_alloc() 62 fwspec.param_count = 3; in mbi_irq_gic_domain_alloc() 63 fwspec.param[0] = 0; in mbi_irq_gic_domain_alloc() 64 fwspec.param[1] = hwirq - 32; in mbi_irq_gic_domain_alloc() 65 fwspec.param[2] = IRQ_TYPE_EDGE_RISING; in mbi_irq_gic_domain_alloc() 67 err = irq_domain_alloc_irqs_parent(domain, virq, 1, &fwspec); in mbi_irq_gic_domain_alloc()
|
/Linux-v4.19/drivers/gpio/ |
D | gpio-xgene-sb.c | 127 struct irq_fwspec fwspec; in xgene_gpio_sb_to_irq() local 133 fwspec.fwnode = gc->parent->fwnode; in xgene_gpio_sb_to_irq() 134 fwspec.param_count = 2; in xgene_gpio_sb_to_irq() 135 fwspec.param[0] = GPIO_TO_HWIRQ(priv, gpio); in xgene_gpio_sb_to_irq() 136 fwspec.param[1] = IRQ_TYPE_NONE; in xgene_gpio_sb_to_irq() 137 return irq_create_fwspec_mapping(&fwspec); in xgene_gpio_sb_to_irq() 173 struct irq_fwspec *fwspec, in xgene_gpio_sb_domain_translate() argument 179 if ((fwspec->param_count != 2) || in xgene_gpio_sb_domain_translate() 180 (fwspec->param[0] >= priv->nirq)) in xgene_gpio_sb_domain_translate() 182 *hwirq = fwspec->param[0]; in xgene_gpio_sb_domain_translate() [all …]
|
/Linux-v4.19/arch/arm/mach-imx/ |
D | gpc.c | 180 struct irq_fwspec *fwspec, in imx_gpc_domain_translate() argument 184 if (is_of_node(fwspec->fwnode)) { in imx_gpc_domain_translate() 185 if (fwspec->param_count != 3) in imx_gpc_domain_translate() 189 if (fwspec->param[0] != 0) in imx_gpc_domain_translate() 192 *hwirq = fwspec->param[1]; in imx_gpc_domain_translate() 193 *type = fwspec->param[2]; in imx_gpc_domain_translate() 204 struct irq_fwspec *fwspec = data; in imx_gpc_domain_alloc() local 209 if (fwspec->param_count != 3) in imx_gpc_domain_alloc() 211 if (fwspec->param[0] != 0) in imx_gpc_domain_alloc() 214 hwirq = fwspec->param[1]; in imx_gpc_domain_alloc() [all …]
|
/Linux-v4.19/drivers/iommu/ |
D | qcom_iommu.c | 87 static struct qcom_iommu_dev * to_iommu(struct iommu_fwspec *fwspec) in to_iommu() argument 89 if (!fwspec || fwspec->ops != &qcom_iommu_ops) in to_iommu() 91 return fwspec->iommu_priv; in to_iommu() 94 static struct qcom_iommu_ctx * to_ctx(struct iommu_fwspec *fwspec, unsigned asid) in to_ctx() argument 96 struct qcom_iommu_dev *qcom_iommu = to_iommu(fwspec); in to_ctx() 128 struct iommu_fwspec *fwspec = cookie; in qcom_iommu_tlb_sync() local 131 for (i = 0; i < fwspec->num_ids; i++) { in qcom_iommu_tlb_sync() 132 struct qcom_iommu_ctx *ctx = to_ctx(fwspec, fwspec->ids[i]); in qcom_iommu_tlb_sync() 146 struct iommu_fwspec *fwspec = cookie; in qcom_iommu_tlb_inv_context() local 149 for (i = 0; i < fwspec->num_ids; i++) { in qcom_iommu_tlb_inv_context() [all …]
|
/Linux-v4.19/arch/arm/mach-exynos/ |
D | suspend.c | 126 struct irq_fwspec *fwspec, in exynos_pmu_domain_translate() argument 130 if (is_of_node(fwspec->fwnode)) { in exynos_pmu_domain_translate() 131 if (fwspec->param_count != 3) in exynos_pmu_domain_translate() 135 if (fwspec->param[0] != 0) in exynos_pmu_domain_translate() 138 *hwirq = fwspec->param[1]; in exynos_pmu_domain_translate() 139 *type = fwspec->param[2]; in exynos_pmu_domain_translate() 150 struct irq_fwspec *fwspec = data; in exynos_pmu_domain_alloc() local 155 if (fwspec->param_count != 3) in exynos_pmu_domain_alloc() 157 if (fwspec->param[0] != 0) in exynos_pmu_domain_alloc() 160 hwirq = fwspec->param[1]; in exynos_pmu_domain_alloc() [all …]
|
/Linux-v4.19/arch/arm/mach-omap2/ |
D | omap-wakeupgen.c | 457 struct irq_fwspec *fwspec, in wakeupgen_domain_translate() argument 461 if (is_of_node(fwspec->fwnode)) { in wakeupgen_domain_translate() 462 if (fwspec->param_count != 3) in wakeupgen_domain_translate() 466 if (fwspec->param[0] != 0) in wakeupgen_domain_translate() 469 *hwirq = fwspec->param[1]; in wakeupgen_domain_translate() 470 *type = fwspec->param[2]; in wakeupgen_domain_translate() 481 struct irq_fwspec *fwspec = data; in wakeupgen_domain_alloc() local 486 if (fwspec->param_count != 3) in wakeupgen_domain_alloc() 488 if (fwspec->param[0] != 0) in wakeupgen_domain_alloc() 491 hwirq = fwspec->param[1]; in wakeupgen_domain_alloc() [all …]
|
/Linux-v4.19/kernel/irq/ |
D | irqdomain.c | 382 struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec *fwspec, in irq_find_matching_fwspec() argument 386 struct fwnode_handle *fwnode = fwspec->fwnode; in irq_find_matching_fwspec() 400 if (h->ops->select && fwspec->param_count) in irq_find_matching_fwspec() 401 rc = h->ops->select(h, fwspec, bus_token); in irq_find_matching_fwspec() 715 struct irq_fwspec *fwspec, in irq_domain_translate() argument 720 return d->ops->translate(d, fwspec, hwirq, type); in irq_domain_translate() 723 return d->ops->xlate(d, to_of_node(fwspec->fwnode), in irq_domain_translate() 724 fwspec->param, fwspec->param_count, in irq_domain_translate() 728 *hwirq = fwspec->param[0]; in irq_domain_translate() 733 struct irq_fwspec *fwspec) in of_phandle_args_to_fwspec() argument [all …]
|