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
Unified · Split
| @@ -68,3 +68,4 @@ stable kernels. · 67 unmodified lines | |||
| 68 | | | | | | | 68 | | | | | | |
| 69 | | Qualcomm Tech. | Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 | | 69 | | Qualcomm Tech. | Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 | |
| 70 | | Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 | | 70 | | Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 | |
| 71 | | Qualcomm Tech. | QDF2400 ITS | E0065 | QCOM_QDF2400_ERRATUM_0065 | | ||
| @@ -508,6 +508,16 @@ config QCOM_FALKOR_ERRATUM_1009 · 507 unmodified lines | |||
| 508 | 508 | ||
| 509 | If unsure, say Y. | 509 | If unsure, say Y. |
| 510 | 510 | ||
| 511 | config QCOM_QDF2400_ERRATUM_0065 | ||
| 512 | bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size" | ||
| 513 | default y | ||
| 514 | help | ||
| 515 | On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports | ||
| 516 | ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have | ||
| 517 | been indicated as 16Bytes (0xf), not 8Bytes (0x7). | ||
| 518 | |||
| 519 | If unsure, say Y. | ||
| 520 | |||
| 511 | endmenu | 521 | endmenu |
| 512 | 522 | ||
| 513 | 523 | ||
| @@ -198,8 +198,8 @@ static const struct irq_domain_ops crossbar_domain_ops = { · 197 unmodified lines | |||
| 198 | 198 | ||
| 199 | static int __init crossbar_of_init(struct device_node *node) | 199 | static int __init crossbar_of_init(struct device_node *node) |
| 200 | { | 200 | { |
| 201 | u32 max = 0, entry, reg_size; | ||
| 201 | int i, size, reserved = 0; | 202 | int i, size, reserved = 0; |
| 202 | u32 max = 0, entry; | ||
| 203 | const __be32 *irqsr; | 203 | const __be32 *irqsr; |
| 204 | int ret = -ENOMEM; | 204 | int ret = -ENOMEM; |
| 205 | 205 | ||
| @@ -276,9 +276,9 @@ static int __init crossbar_of_init(struct device_node *node) · 70 unmodified lines | |||
| 276 | if (!cb->register_offsets) | 276 | if (!cb->register_offsets) |
| 277 | goto err_irq_map; | 277 | goto err_irq_map; |
| 278 | 278 | ||
| 279 | of_property_read_u32(node, "ti,reg-size", &size); | 279 | of_property_read_u32(node, "ti,reg-size", ®_size); |
| 280 | 280 | ||
| 281 | switch (size) { | 281 | switch (reg_size) { |
| 282 | case 1: | 282 | case 1: |
| 283 | cb->write = crossbar_writeb; | 283 | cb->write = crossbar_writeb; |
| 284 | break; | 284 | break; |
| @@ -304,7 +304,7 @@ static int __init crossbar_of_init(struct device_node *node) · 19 unmodified lines | |||
| 304 | continue; | 304 | continue; |
| 305 | 305 | ||
| 306 | cb->register_offsets[i] = reserved; | 306 | cb->register_offsets[i] = reserved; |
| 307 | reserved += size; | 307 | reserved += reg_size; |
| 308 | } | 308 | } |
| 309 | 309 | ||
| 310 | of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map); | 310 | 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) · 1600 unmodified lines | |||
| 1601 | its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_23144; | 1601 | its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_23144; |
| 1602 | } | 1602 | } |
| 1603 | 1603 | ||
| 1604 | static void __maybe_unused its_enable_quirk_qdf2400_e0065(void *data) | ||
| 1605 | { | ||
| 1606 | struct its_node *its = data; | ||
| 1607 | |||
| 1608 | /* On QDF2400, the size of the ITE is 16Bytes */ | ||
| 1609 | its->ite_size = 16; | ||
| 1610 | } | ||
| 1611 | |||
| 1604 | static const struct gic_quirk its_quirks[] = { | 1612 | static const struct gic_quirk its_quirks[] = { |
| 1605 | #ifdef CONFIG_CAVIUM_ERRATUM_22375 | 1613 | #ifdef CONFIG_CAVIUM_ERRATUM_22375 |
| 1606 | { | 1614 | { |
| @@ -1617,6 +1625,14 @@ static const struct gic_quirk its_quirks[] = { · 10 unmodified lines | |||
| 1617 | .mask = 0xffff0fff, | 1625 | .mask = 0xffff0fff, |
| 1618 | .init = its_enable_quirk_cavium_23144, | 1626 | .init = its_enable_quirk_cavium_23144, |
| 1619 | }, | 1627 | }, |
| 1628 | #endif | ||
| 1629 | #ifdef CONFIG_QCOM_QDF2400_ERRATUM_0065 | ||
| 1630 | { | ||
| 1631 | .desc = "ITS: QDF2400 erratum 0065", | ||
| 1632 | .iidr = 0x00001070, /* QDF2400 ITS rev 1.x */ | ||
| 1633 | .mask = 0xffffffff, | ||
| 1634 | .init = its_enable_quirk_qdf2400_e0065, | ||
| 1635 | }, | ||
| 1620 | #endif | 1636 | #endif |
| 1621 | { | 1637 | { |
| 1622 | } | 1638 | } |
| @@ -524,6 +524,10 @@ static inline struct irq_domain *irq_find_matching_fwnode( · 523 unmodified lines | |||
| 524 | { | 524 | { |
| 525 | return NULL; | 525 | return NULL; |
| 526 | } | 526 | } |
| 527 | static inline bool irq_domain_check_msi_remap(void) | ||
| 528 | { | ||
| 529 | return false; | ||
| 530 | } | ||
| 527 | #endif /* !CONFIG_IRQ_DOMAIN */ | 531 | #endif /* !CONFIG_IRQ_DOMAIN */ |
| 528 | 532 | ||
| 529 | #endif /* _LINUX_IRQDOMAIN_H */ | 533 | #endif /* _LINUX_IRQDOMAIN_H */ |