Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ecade114 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents 106e4da6 920c634a
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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   |
+10 −0
Original line number Original line Diff line number Diff line
@@ -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




+4 −4
Original line number Original line Diff line number Diff line
@@ -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", &reg_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);
+16 −0
Original line number Original line Diff line number Diff line
@@ -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
	{
	{
	}
	}
+4 −0
Original line number Original line Diff line number Diff line
@@ -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 */