Merge tag 'irqdomain-04-08-25' into irq/cleanups
Merge to get the latest updates for the irqdomain cleanup series.
This commit is contained in:
@@ -571,16 +571,16 @@ int irq_domain_xlate_twocell(struct irq_domain *d, struct device_node *ctrlr,
|
||||
int irq_domain_xlate_onetwocell(struct irq_domain *d, struct device_node *ctrlr,
|
||||
const u32 *intspec, unsigned int intsize,
|
||||
irq_hw_number_t *out_hwirq, unsigned int *out_type);
|
||||
int irq_domain_xlate_twothreecell(struct irq_domain *d, struct device_node *ctrlr,
|
||||
const u32 *intspec, unsigned int intsize,
|
||||
irq_hw_number_t *out_hwirq, unsigned int *out_type);
|
||||
|
||||
int irq_domain_translate_twocell(struct irq_domain *d,
|
||||
struct irq_fwspec *fwspec,
|
||||
unsigned long *out_hwirq,
|
||||
unsigned int *out_type);
|
||||
|
||||
int irq_domain_translate_onecell(struct irq_domain *d,
|
||||
struct irq_fwspec *fwspec,
|
||||
unsigned long *out_hwirq,
|
||||
unsigned int *out_type);
|
||||
int irq_domain_translate_onecell(struct irq_domain *d, struct irq_fwspec *fwspec,
|
||||
unsigned long *out_hwirq, unsigned int *out_type);
|
||||
int irq_domain_translate_twocell(struct irq_domain *d, struct irq_fwspec *fwspec,
|
||||
unsigned long *out_hwirq, unsigned int *out_type);
|
||||
int irq_domain_translate_twothreecell(struct irq_domain *d, struct irq_fwspec *fwspec,
|
||||
unsigned long *out_hwirq, unsigned int *out_type);
|
||||
|
||||
/* IPI functions */
|
||||
int irq_reserve_ipi(struct irq_domain *domain, const struct cpumask *dest);
|
||||
|
||||
@@ -1132,6 +1132,31 @@ int irq_domain_xlate_twocell(struct irq_domain *d, struct device_node *ctrlr,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(irq_domain_xlate_twocell);
|
||||
|
||||
/**
|
||||
* irq_domain_xlate_twothreecell() - Generic xlate for direct two or three cell bindings
|
||||
* @d: Interrupt domain involved in the translation
|
||||
* @ctrlr: The device tree node for the device whose interrupt is translated
|
||||
* @intspec: The interrupt specifier data from the device tree
|
||||
* @intsize: The number of entries in @intspec
|
||||
* @out_hwirq: Pointer to storage for the hardware interrupt number
|
||||
* @out_type: Pointer to storage for the interrupt type
|
||||
*
|
||||
* Device Tree interrupt specifier translation function for two or three
|
||||
* cell bindings, where the cell values map directly to the hardware
|
||||
* interrupt number and the type specifier.
|
||||
*/
|
||||
int irq_domain_xlate_twothreecell(struct irq_domain *d, struct device_node *ctrlr,
|
||||
const u32 *intspec, unsigned int intsize,
|
||||
irq_hw_number_t *out_hwirq, unsigned int *out_type)
|
||||
{
|
||||
struct irq_fwspec fwspec;
|
||||
|
||||
of_phandle_args_to_fwspec(ctrlr, intspec, intsize, &fwspec);
|
||||
|
||||
return irq_domain_translate_twothreecell(d, &fwspec, out_hwirq, out_type);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(irq_domain_xlate_twothreecell);
|
||||
|
||||
/**
|
||||
* irq_domain_xlate_onetwocell() - Generic xlate for one or two cell bindings
|
||||
* @d: Interrupt domain involved in the translation
|
||||
@@ -1216,6 +1241,37 @@ int irq_domain_translate_twocell(struct irq_domain *d,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(irq_domain_translate_twocell);
|
||||
|
||||
/**
|
||||
* irq_domain_translate_twothreecell() - Generic translate for direct two or three cell
|
||||
* bindings
|
||||
* @d: Interrupt domain involved in the translation
|
||||
* @fwspec: The firmware interrupt specifier to translate
|
||||
* @out_hwirq: Pointer to storage for the hardware interrupt number
|
||||
* @out_type: Pointer to storage for the interrupt type
|
||||
*
|
||||
* Firmware interrupt specifier translation function for two or three cell
|
||||
* specifications, where the parameter values map directly to the hardware
|
||||
* interrupt number and the type specifier.
|
||||
*/
|
||||
int irq_domain_translate_twothreecell(struct irq_domain *d, struct irq_fwspec *fwspec,
|
||||
unsigned long *out_hwirq, unsigned int *out_type)
|
||||
{
|
||||
if (fwspec->param_count == 2) {
|
||||
*out_hwirq = fwspec->param[0];
|
||||
*out_type = fwspec->param[1] & IRQ_TYPE_SENSE_MASK;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (fwspec->param_count == 3) {
|
||||
*out_hwirq = fwspec->param[1];
|
||||
*out_type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(irq_domain_translate_twothreecell);
|
||||
|
||||
int irq_domain_alloc_descs(int virq, unsigned int cnt, irq_hw_number_t hwirq,
|
||||
int node, const struct irq_affinity_desc *affinity)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user