Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Thomas Gleixner: - a workaround for a GIC erratum - a missing stub function for CONFIG_IRQDOMAIN=n - fixes for a couple of type inconsistencies * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: irqchip/crossbar: Fix incorrect type of register size irqchip/gicv3-its: Add workaround for QDF2400 ITS erratum 0065 irqdomain: Add empty irq_domain_check_msi_remap irqchip/crossbar: Fix incorrect type of local variables
This commit is contained in:
commit
ecade11425
|
@ -68,3 +68,4 @@ stable kernels.
|
||||||
| | | | |
|
| | | | |
|
||||||
| Qualcomm Tech. | Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 |
|
| Qualcomm Tech. | Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 |
|
||||||
| Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 |
|
| Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 |
|
||||||
|
| Qualcomm Tech. | QDF2400 ITS | E0065 | QCOM_QDF2400_ERRATUM_0065 |
|
||||||
|
|
|
@ -508,6 +508,16 @@ config QCOM_FALKOR_ERRATUM_1009
|
||||||
|
|
||||||
If unsure, say Y.
|
If unsure, say Y.
|
||||||
|
|
||||||
|
config QCOM_QDF2400_ERRATUM_0065
|
||||||
|
bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports
|
||||||
|
ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have
|
||||||
|
been indicated as 16Bytes (0xf), not 8Bytes (0x7).
|
||||||
|
|
||||||
|
If unsure, say Y.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -198,8 +198,8 @@ static const struct irq_domain_ops crossbar_domain_ops = {
|
||||||
|
|
||||||
static int __init crossbar_of_init(struct device_node *node)
|
static int __init crossbar_of_init(struct device_node *node)
|
||||||
{
|
{
|
||||||
|
u32 max = 0, entry, reg_size;
|
||||||
int i, size, reserved = 0;
|
int i, size, reserved = 0;
|
||||||
u32 max = 0, entry;
|
|
||||||
const __be32 *irqsr;
|
const __be32 *irqsr;
|
||||||
int ret = -ENOMEM;
|
int ret = -ENOMEM;
|
||||||
|
|
||||||
|
@ -276,9 +276,9 @@ static int __init crossbar_of_init(struct device_node *node)
|
||||||
if (!cb->register_offsets)
|
if (!cb->register_offsets)
|
||||||
goto err_irq_map;
|
goto err_irq_map;
|
||||||
|
|
||||||
of_property_read_u32(node, "ti,reg-size", &size);
|
of_property_read_u32(node, "ti,reg-size", ®_size);
|
||||||
|
|
||||||
switch (size) {
|
switch (reg_size) {
|
||||||
case 1:
|
case 1:
|
||||||
cb->write = crossbar_writeb;
|
cb->write = crossbar_writeb;
|
||||||
break;
|
break;
|
||||||
|
@ -304,7 +304,7 @@ static int __init crossbar_of_init(struct device_node *node)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
cb->register_offsets[i] = reserved;
|
cb->register_offsets[i] = reserved;
|
||||||
reserved += size;
|
reserved += reg_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map);
|
of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map);
|
||||||
|
|
|
@ -1601,6 +1601,14 @@ static void __maybe_unused its_enable_quirk_cavium_23144(void *data)
|
||||||
its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_23144;
|
its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_23144;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __maybe_unused its_enable_quirk_qdf2400_e0065(void *data)
|
||||||
|
{
|
||||||
|
struct its_node *its = data;
|
||||||
|
|
||||||
|
/* On QDF2400, the size of the ITE is 16Bytes */
|
||||||
|
its->ite_size = 16;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct gic_quirk its_quirks[] = {
|
static const struct gic_quirk its_quirks[] = {
|
||||||
#ifdef CONFIG_CAVIUM_ERRATUM_22375
|
#ifdef CONFIG_CAVIUM_ERRATUM_22375
|
||||||
{
|
{
|
||||||
|
@ -1617,6 +1625,14 @@ static const struct gic_quirk its_quirks[] = {
|
||||||
.mask = 0xffff0fff,
|
.mask = 0xffff0fff,
|
||||||
.init = its_enable_quirk_cavium_23144,
|
.init = its_enable_quirk_cavium_23144,
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_QCOM_QDF2400_ERRATUM_0065
|
||||||
|
{
|
||||||
|
.desc = "ITS: QDF2400 erratum 0065",
|
||||||
|
.iidr = 0x00001070, /* QDF2400 ITS rev 1.x */
|
||||||
|
.mask = 0xffffffff,
|
||||||
|
.init = its_enable_quirk_qdf2400_e0065,
|
||||||
|
},
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -524,6 +524,10 @@ static inline struct irq_domain *irq_find_matching_fwnode(
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
static inline bool irq_domain_check_msi_remap(void)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif /* !CONFIG_IRQ_DOMAIN */
|
#endif /* !CONFIG_IRQ_DOMAIN */
|
||||||
|
|
||||||
#endif /* _LINUX_IRQDOMAIN_H */
|
#endif /* _LINUX_IRQDOMAIN_H */
|
||||||
|
|
Loading…
Reference in New Issue