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

Commit 72e0605b authored by Jayachandran C's avatar Jayachandran C Committed by Ralf Baechle
Browse files

MIPS: Netlogic: Disable writing IRT for disabled blocks



If the device header of a block is not present, return invalid IRT
value so that we do not program an incorrect offset.

Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/8882/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 9bbc6c7d
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -170,8 +170,14 @@ static int xlp_irq_to_irt(int irq)
	}

	if (devoff != 0) {
		uint32_t val;

		pcibase = nlm_pcicfg_base(devoff);
		irt = nlm_read_reg(pcibase, XLP_PCI_IRTINFO_REG) & 0xffff;
		val = nlm_read_reg(pcibase, XLP_PCI_IRTINFO_REG);
		if (val == 0xffffffff) {
			irt = -1;
		} else {
			irt = val & 0xffff;
			/* HW weirdness, I2C IRT entry has to be fixed up */
			switch (irq) {
			case PIC_I2C_1_IRQ:
@@ -181,6 +187,7 @@ static int xlp_irq_to_irt(int irq)
			case PIC_I2C_3_IRQ:
				irt = irt + 3; break;
			}
		}
	} else if (irq >= PIC_PCIE_LINK_LEGACY_IRQ(0) &&
			irq <= PIC_PCIE_LINK_LEGACY_IRQ(3)) {
		/* HW bug, PCI IRT entries are bad on early silicon, fix */