From 3a73950877f7ee9c13e4fb48d066b693b11850a1 Mon Sep 17 00:00:00 2001 From: Dom Cobley 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