imx8: qos magic to avoid interference between pcie and lcdif

when writing to the nvme ssd, the screen can glitch out.

found this in linux lcdif driver (mxcfb) that appears to
resolve the issue.

the QoSc registers are all completely undocumented tho :-(
This commit is contained in:
cinap_lenrek 2022-07-03 16:13:19 +00:00
parent 940e3165d3
commit c5cf9b3e26

View file

@ -410,6 +410,34 @@ pcicfginit(void)
rootinit(&ctlrs[1]); rootinit(&ctlrs[1]);
} }
/* undocumented magic to avoid interference between lcdif and pcie */
static void
qosmagic(void)
{
static u32int *qosc = (u32int*)(VIRTIO + 0x7f0000);
/* unlock */
qosc[0x0000/4] = 0x0;
qosc[0x0000/4] = 0x1;
qosc[0x0060/4] = 0x0;
/* pci1 */
qosc[0x1000/4] = 0x0;
qosc[0x1000/4] = 0x1;
qosc[0x1050/4] = 0x01010100;
qosc[0x1060/4] = 0x01010100;
qosc[0x1070/4] = 0x01010100;
qosc[0x1000/4] = 0x1;
/* pcie2 */
qosc[0x2000/4] = 0x0;
qosc[0x2000/4] = 0x1;
qosc[0x2050/4] = 0x01010100;
qosc[0x2060/4] = 0x01010100;
qosc[0x2070/4] = 0x01010100;
qosc[0x2000/4] = 0x1;
}
enum { enum {
SRC_PCIEPHY_RCR = 0x2C/4, SRC_PCIEPHY_RCR = 0x2C/4,
SRC_PCIE2_RCR = 0x48/4, SRC_PCIE2_RCR = 0x48/4,
@ -494,4 +522,6 @@ pciimxlink(void)
resetc[SRC_PCIE2_RCR] &= ~(PCIE_BTN | PCIE_G_RST); resetc[SRC_PCIE2_RCR] &= ~(PCIE_BTN | PCIE_G_RST);
pcicfginit(); pcicfginit();
qosmagic();
} }