1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-15 04:42:02 +00:00
openmptcprouter/6.6/target/linux/bcm27xx/patches-6.6/0512-vc4-fkms-Remove-use-of-SMI-peripheral.patch

82 lines
2.8 KiB
Diff
Raw Normal View History

2024-04-05 18:55:33 +00:00
From 3a73950877f7ee9c13e4fb48d066b693b11850a1 Mon Sep 17 00:00:00 2001
From: Dom Cobley <popcornmix@gmail.com>
Date: Thu, 1 Jul 2021 19:21:10 +0100
Subject: [PATCH 0512/1002] vc4/fkms: Remove use of SMI peripheral
---
drivers/gpu/drm/vc4/vc4_firmware_kms.c | 24 +++++++-----------------
1 file changed, 7 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_firmware_kms.c b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
index b409b5566d49..e420e005cd1f 100644
--- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
@@ -255,13 +255,6 @@ static const struct vc_image_format *vc4_get_vc_image_fmt(u32 drm_format)
/* The firmware delivers a vblank interrupt to us through the SMI
* hardware, which has only this one register.
*/
-#define SMICS 0x0
-#define SMIDSW0 0x14
-#define SMIDSW1 0x1C
-#define SMICS_INTERRUPTS (BIT(9) | BIT(10) | BIT(11))
-
-/* Flag to denote that the firmware is giving multiple display callbacks */
-#define SMI_NEW 0xabcd0000
struct vc4_fkms_crtc {
struct drm_crtc base;
@@ -1215,16 +1208,13 @@ static irqreturn_t vc4_crtc_irq_handler(int irq, void *data)
{
struct vc4_fkms_crtc **crtc_list = data;
int i;
- u32 stat = readl(crtc_list[0]->regs + SMICS);
irqreturn_t ret = IRQ_NONE;
u32 chan;
+ if (1) {
- if (stat & SMICS_INTERRUPTS) {
- writel(0, crtc_list[0]->regs + SMICS);
-
- chan = readl(crtc_list[0]->regs + SMIDSW0);
+ chan = 0;
- if ((chan & 0xFFFF0000) != SMI_NEW) {
+ if (1) {
/* Older firmware. Treat the one interrupt as vblank/
* complete for all crtcs.
*/
@@ -1235,7 +1225,7 @@ static irqreturn_t vc4_crtc_irq_handler(int irq, void *data)
}
} else {
if (chan & 1) {
- writel(SMI_NEW, crtc_list[0]->regs + SMIDSW0);
+ //writel(SMI_NEW, crtc_list[0]->regs + SMIDSW0);
if (crtc_list[0]->vblank_enabled)
drm_crtc_handle_vblank(&crtc_list[0]->base);
vc4_crtc_handle_page_flip(crtc_list[0]);
@@ -1243,10 +1233,10 @@ static irqreturn_t vc4_crtc_irq_handler(int irq, void *data)
if (crtc_list[1]) {
/* Check for the secondary display too */
- chan = readl(crtc_list[0]->regs + SMIDSW1);
+ //chan = readl(crtc_list[0]->regs + SMIDSW1);
if (chan & 1) {
- writel(SMI_NEW, crtc_list[0]->regs + SMIDSW1);
+ //writel(SMI_NEW, crtc_list[0]->regs + SMIDSW1);
if (crtc_list[1]->vblank_enabled)
drm_crtc_handle_vblank(&crtc_list[1]->base);
@@ -1986,7 +1976,7 @@ static int vc4_fkms_bind(struct device *dev, struct device *master, void *data)
if (IS_ERR(crtc_list[0]->regs))
DRM_ERROR("Oh dear, failed to map registers\n");
- writel(0, crtc_list[0]->regs + SMICS);
+ //writel(0, crtc_list[0]->regs + SMICS);
ret = devm_request_irq(dev, platform_get_irq(pdev, 0),
vc4_crtc_irq_handler, 0,
"vc4 firmware kms", crtc_list);
--
2.44.0