From patchwork Thu Aug 1 03:44:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170280 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4835969ile; Wed, 31 Jul 2019 20:44:48 -0700 (PDT) X-Received: by 2002:a17:90a:20c6:: with SMTP id f64mr6241618pjg.57.1564631087971; Wed, 31 Jul 2019 20:44:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631087; cv=none; d=google.com; s=arc-20160816; b=nddLdnIvQV08B5brAQQdj5xDdF9Pp7ImYJPmBORsuQMDt4bi2TKADVcc1urWSD70AH xcir9De6yXXVC/rr2VXxNW19T5AuCuS8FgYbjgCLPMMqUJajBm7xl7hEpKyArsuEMBKa s8WUzVmB+ANv2yjMV4+1tr+J6GDXTMlT925F+Y/bGVxbF4Bvn9q/IXSANHtAgtqNQF50 dlfYhJuvCYKyjZWL69YxJZfUa1EUd2hM7qHOaAMvJIdrD6zuCv3Tf5x2NMT1rIzB0oEA e/+mlE8h8rywsc2vqNQw3yy0NXjV6znyI9oF55T7fe87/RI6CGktyXM1QyMl3OTjJKJy Ep7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=/QjSI1b8alIth1E7HJtMuZLsPsx44ZXhw7/4SnNJJUk=; b=YWOjtk3XfuZnt7q+6I3Rb0n6SWX8mjCPGL7YhTT4rY6r9rwfXthUB6izLHMqHi2bPA 5EleMwbvxkKrS7ejcoyf/qaciTdKyWZVOAwd9gtjf1Rt6eMEO3vmBFpTmJXjrPqd1DsK OIkULWnmsFUNWSb8tJT+6a8IdM5SVFtlyoaXoh1SRVyMkMKgxzgng9fAvd6jQ6uS6xhc kBIk81bRbFi120yfiuxQqT21xDyDi06Mjq4H+z9MEg6GFGVdHJqY0IFQ2nCu51UfaLkU iVPgm7XRtWYnCPZyjvcJhEOs/IAI/Zvcdjw47I71PMQjzpkVVFP9ajFegzV//VhBGswM bxrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Z9EGW8Ep; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id n13sor4477849pjc.24.2019.07.31.20.44.47 for (Google Transport Security); Wed, 31 Jul 2019 20:44:47 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Z9EGW8Ep; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/QjSI1b8alIth1E7HJtMuZLsPsx44ZXhw7/4SnNJJUk=; b=Z9EGW8Ep6iZzB6WcT1yvuoOLW03dKeUayVCnQHc9y9QdNBavUwlMez4gbLQk/LbsF7 LCH59XX31xuyCrwxPuWmkqkwW4R+5tt+sQ+4V34L1ozXCXAfD0YQPEpvhU0WXzYBxxYH Snq3t4ydBqLPZ5R9Jzg0UofhXZmn7TAMwPahrPHrR6t1S9aYZGG782YeJDh/LKHSVfBh 2KtqomAW9xZ0RasEXxXt9JoW4KsPD4khMr3lHmCzE+wu7Kodwgs1sba341KEQ8gb34XE xv+JAZQ46ubfd6OPx0vXFPAJ68eroDUg0X1hN8llrzdOkQ5FhfXZgjoi/RQ1unW7c8T4 ec6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/QjSI1b8alIth1E7HJtMuZLsPsx44ZXhw7/4SnNJJUk=; b=Pn2LtlFvRRRtb3um1qohbrMXqNRKruya1bO33RO7I+FPOSV6kfJeNn8AHCkVcOFE0H 32Hs5ltBIgnYS8e9O9ocp2jor62WJRb4+cMIkZQkOqV8IwZ5kMGazZjahlsgHjVTYzUc o0ICQeFkdvxNVzYeegt6kxG7H/nV2GLYx00Zc6PRURQb3Jow27HvpH8DN5CC45I3W2NZ UPmchlCVuBjGjhR2k12biNU5uty336wHe38YnAA+U0GBcW2cSIdbfdAkULZx26u80S9S lu2cPZs97bGWcVBLdbqwy+zSmS1PJhieHevAwIoinjm6NQOWCivaaiwPCkQZSpLUzqKv oJJw== X-Gm-Message-State: APjAAAWHJNFDU/tOVWFg8w4XNNSLZYKIr0tWKE6wcgE6V+IJOwftqM6f EaIDYogQLooRmfCw2aB/yUvNxHnJ X-Google-Smtp-Source: APXvYqz5tjq2NsRmnAofXBfa6ee/WnT/EZxT80QAkU/SM9rc9yFnRqsKdy5zrDajaeuaEnnpa8mSsg== X-Received: by 2002:a17:90a:9bca:: with SMTP id b10mr6190126pjw.90.1564631087485; Wed, 31 Jul 2019 20:44:47 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.45 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:46 -0700 (PDT) From: John Stultz To: lkml Cc: Da Lv , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , Yidong Lin , John Stultz Subject: [PATCH v3 01/26] drm: kirin: Fix for hikey620 display offset problem Date: Thu, 1 Aug 2019 03:44:14 +0000 Message-Id: <20190801034439.98227-2-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Da Lv The original HiKey (620) board has had a long running issue where when using a 1080p montior, the display would occasionally blink and come come back with a horizontal offset (usually also shifting the colors, depending on the value of the offset%4). After lots of analysis by HiSi developers, they found the issue was due to when running at 1080p, it was possible to hit the device memory bandwidth limits, which could cause the DSI signal to get out of sync. Unfortunately the DSI logic doesn't have the ability to automatically recover from this situation, but we can get a an LDI underflow interrupt when it happens. To then correct the issue, when we get an LDI underflow irq, we we can simply suspend and resume the display, which resets the hardware. Thus, this patch enables the ldi underflow interrupt, and initializes a workqueue that is used to suspend/resume the display to recover. Then when the irq occurs we clear it and schedule the workqueue to reset display engine. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Da Lv Signed-off-by: Yidong Lin [jstultz: Reworded the commit message, checkpatch cleanups] Signed-off-by: John Stultz --- v2: Minor cleanups v3: Rename workqueue entry for clarity (suggested by Sam) --- .../gpu/drm/hisilicon/kirin/kirin_ade_reg.h | 1 + .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h b/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h index e2ac09894a6d..0da860200410 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h @@ -83,6 +83,7 @@ #define VSIZE_OFST 20 #define LDI_INT_EN 0x741C #define FRAME_END_INT_EN_OFST 1 +#define UNDERFLOW_INT_EN_OFST 2 #define LDI_CTRL 0x7420 #define BPP_OFST 3 #define DATA_GATE_EN BIT(2) diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index ad7042ae2241..d69b5d458950 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -54,6 +54,7 @@ struct ade_hw_ctx { struct ade_crtc { struct drm_crtc base; struct ade_hw_ctx *ctx; + struct work_struct display_reset_wq; bool enable; u32 out_format; }; @@ -172,6 +173,7 @@ static void ade_init(struct ade_hw_ctx *ctx) */ ade_update_bits(base + ADE_CTRL, FRM_END_START_OFST, FRM_END_START_MASK, REG_EFFECTIVE_IN_ADEEN_FRMEND); + ade_update_bits(base + LDI_INT_EN, UNDERFLOW_INT_EN_OFST, MASK(1), 1); } static bool ade_crtc_mode_fixup(struct drm_crtc *crtc, @@ -341,6 +343,17 @@ static void ade_crtc_disable_vblank(struct drm_crtc *crtc) MASK(1), 0); } +static void drm_underflow_wq(struct work_struct *work) +{ + struct ade_crtc *acrtc = container_of(work, struct ade_crtc, + display_reset_wq); + struct drm_device *drm_dev = (&acrtc->base)->dev; + struct drm_atomic_state *state; + + state = drm_atomic_helper_suspend(drm_dev); + drm_atomic_helper_resume(drm_dev, state); +} + static irqreturn_t ade_irq_handler(int irq, void *data) { struct ade_crtc *acrtc = data; @@ -358,6 +371,12 @@ static irqreturn_t ade_irq_handler(int irq, void *data) MASK(1), 1); drm_crtc_handle_vblank(crtc); } + if (status & BIT(UNDERFLOW_INT_EN_OFST)) { + ade_update_bits(base + LDI_INT_CLR, UNDERFLOW_INT_EN_OFST, + MASK(1), 1); + DRM_ERROR("LDI underflow!"); + schedule_work(&acrtc->display_reset_wq); + } return IRQ_HANDLED; } @@ -1034,6 +1053,9 @@ static int ade_drm_init(struct platform_device *pdev) /* vblank irq init */ ret = devm_request_irq(dev->dev, ctx->irq, ade_irq_handler, IRQF_SHARED, dev->driver->name, acrtc); + + INIT_WORK(&acrtc->display_reset_wq, drm_underflow_wq); + if (ret) return ret; From patchwork Thu Aug 1 03:44:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170281 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4835988ile; Wed, 31 Jul 2019 20:44:49 -0700 (PDT) X-Received: by 2002:a17:90a:9301:: with SMTP id p1mr6210637pjo.22.1564631089218; Wed, 31 Jul 2019 20:44:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631089; cv=none; d=google.com; s=arc-20160816; b=EtdsVS+gmooXJnLAlmUa+/60TPU/bCncw1W5yw9y6OcxyPdtVL3vHWejRVG4eLdJ4E tbUUVH0d+8nght/biGLcjmGy/3oaYU/4Zxxmhz5JWd0abJVrl3ppGLvvruNX4l88ZX4O jl30p0q1J6ofPU4mHKA5Cv69LlJiwHduXpqk2kkxg8zDg2zdV/D21YhIZLwOAedMD5pi U8ZtQrR2HAaiHupIK9fYqrFL9EKVlrrUJWlpALHGmxR3ve0qpfO4jaq+O7GGnWZozxML tgCzc5AziX7UHumN8wtvaKNaXG1fLfoD/V6H+TDNgjvulV6Vo1P6aNp8o7cnUuez4jTw QpTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=glR6oLsrJBxGZFPDkXtm2pq0TMtj5d9cDHh+aCshZSM=; b=NjwpY6Xw0dhnsXwwhsADTfR1fBSDHrY55oI3C9zMUwf8kbZcWs64ZHdECO2QsmJhxQ +VMCgyrUPRbH2SlzgdUcjAYhyycxDUnq50unLAh/g/pOG41sTjWJZsLSX2xrrBmFD/hD r7JtbvVmZq4EtfDNES7RoTz1WP/J/mGM5rhLoVmc563s/PiyI529HhB8lxzHboKPx4AB m/42vfFxf/E6EBqOYH5eB2NQf3i3yWJv0zgoTQ9iolL7/lIER9annr8eCxVYIKzovL85 rbXlQEJUTa955CwZeTGZLPxALh+3kfxT+DouwrMvFJjyyKrHCTp3wBOTitz6Fs2RbvRF tT2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=MdmQoxQb; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id f7sor51950159pfb.22.2019.07.31.20.44.49 for (Google Transport Security); Wed, 31 Jul 2019 20:44:49 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=MdmQoxQb; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=glR6oLsrJBxGZFPDkXtm2pq0TMtj5d9cDHh+aCshZSM=; b=MdmQoxQbTaoF/R7+yM5VR/ujeIBF5Fb754pcNDvBMGuz9U/tQe77z4f9FvNzWKoVoG Mz02LZDfmF0puZa6CKDNrl8gwFRXEbiivEbkx8WgvhSCOWSic5m399U/oGiIe2RyHBvz QsOXc4BKoo73GYJrYKtveMj6NjvGpP4OBC/sSOmuQQr6RT5gnFCvxP0x8uns39qhyXKm sOFenrXPARzflNWYvqvqWN2uPlujyQukVt3ELkjt2cwvFM43rCyyrRRXPhJ463+lKecb vhhIGfgcbMT3LmhQoEicVKt7ZxJh93HH79tJTQKKHQfvzoMtt5ttIRboolYZoHvlBOja Qn6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=glR6oLsrJBxGZFPDkXtm2pq0TMtj5d9cDHh+aCshZSM=; b=HmD5yYC3KC/TijTbGttVpazsMztXIjwAB6R11dSZgCreDE5Ol57E4HwST4hoLM71fv fj2ZdNUDMoneyi8JRnpeJQDPrQJfdzAti8IaLHLiXJ3ZmugArDoSx5p0gmd6C1Apr8Hr BViE66xcCl0JGLZWk0Nf+Ziq4SN7tS1cFRdBNFUPYaRQqFuo3BLiuJujBjtSp6qcX8m6 tY7uowhFEEwETqhbfV44u5qYnh5cP8uo0mRa7c2m1EcWdspv/gofqK8E9/Qc3JkQ6pMA KPlSR0Z+HMCm2UYFccxA8SdjcXmfLYhadQG7Is0MAGWGzjnhypELntPNZ6DtnXSGcq41 PNwQ== X-Gm-Message-State: APjAAAXRSAngIzaExjAiDC2Dy+EMLMyiLlbasXHVgwLTEPPmBRU84oJ4 o1EGrNHApajYE9LH2shJS7+ao3Vu X-Google-Smtp-Source: APXvYqwZUyVJCtO5ywHyrzDNXrhYzKt4wEMC/xHUqrhtDKQAar1dMPYAHypw7YosnkttUE4n03KNUg== X-Received: by 2002:aa7:8dd2:: with SMTP id j18mr50211433pfr.88.1564631088809; Wed, 31 Jul 2019 20:44:48 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.47 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:48 -0700 (PDT) From: John Stultz To: lkml Cc: John Stultz , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg Subject: [PATCH v3 02/26] drm: kirin: Get rid of drmP.h includes Date: Thu, 1 Aug 2019 03:44:15 +0000 Message-Id: <20190801034439.98227-3-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> Remove use of drmP.h in kirin driver Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Suggested-by: Sam Ravnborg Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 6 +++++- drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index d69b5d458950..9a9e3b688ba3 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -17,8 +17,12 @@ #include #include #include +#include -#include +#include +#include +#include +#include #include #include #include diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index 4a7fe10a37cb..fbab73c5851d 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -14,8 +14,10 @@ #include #include #include +#include -#include +#include +#include #include #include #include From patchwork Thu Aug 1 03:44:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170282 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836011ile; Wed, 31 Jul 2019 20:44:50 -0700 (PDT) X-Received: by 2002:a17:90a:9903:: with SMTP id b3mr6194732pjp.80.1564631090892; Wed, 31 Jul 2019 20:44:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631090; cv=none; d=google.com; s=arc-20160816; b=oN8snWb7jaAzgaBo6iiYEwv/quCkhtYrazbwYE8St5B/uBL/t9Syz/cWU60c8Xkw74 e59kwZzWZ49sjwCXrlgzvp4Y2f/00tubYiCmiqB0g4E9koGDfdfi/6Ysl8cTz2dIaZXp XfOhTXQiULjPxCj3XWDOMR1jp0PDOXXZ6txKxW2VgOF6nDz10V15nrfAWyxbL8kd5Rk1 txTciqy0hYD0Jf1+QxP0xa7e6vUz0KBD1v3KVUbFoRaWW9AxSnxVWGKL9EhYGToBF+0a qrud77GCvAF6qBn9aas6Bd9LiL5IRy3gMfHxpwfjZjM1ENLKaXVX4DlqKktCCfQTC+9f VfQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=uNdkweGhIzbmbLSCXzyijf1WMLgtz0ZE8h2SpBy/OLo=; b=jQl/jWjZkea/4irdW/EpG83h0a4BnyOVjlMjTDlCFv5XnjKTRYRhCapyt+dxSvjYtv QBTZlkzSZnoTYeoT3aiovpHq+BMmJa0T6eVaYdlboe5+Xxav1V5Msp7UmADNNmAz1G+2 217HLfwqi7GU/MI3n6ZtIBzGRc8S2CWAq48+i+s59McUaUEolZjqXq8xoqQC1SgbDc0u 8zA2JtggL+728saZGsl2qHW5MKKslIsTPBj/r0SI2avU1ErP6pxeQFhlyWk0R+ITECxh cFHiLjaq6X85GI8ZthVGD88rT6fmCBzGE56GZ7UvhmUbh5hxrP9z3WtPVjfprlAV1wzo n/5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=OGB11FXE; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id q8sor33699359pgt.64.2019.07.31.20.44.50 for (Google Transport Security); Wed, 31 Jul 2019 20:44:50 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=OGB11FXE; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=uNdkweGhIzbmbLSCXzyijf1WMLgtz0ZE8h2SpBy/OLo=; b=OGB11FXENEPh4SmCX7T3rKxhiL7ZrFfQKMccbHnaw+keOQERXnl3rUByFY0rxtcueb 0gdBDp+kCsm2S46pdTzAUICilsvpQQGV6ye2oC5RONILIawaN//cDfc03LgJgGMhUWMe V+KS3Mgx3imySjEAjQXBFLa3TkfagcjTDMPhiUekfuwKIqg7FSXYRljXiI0RoNZsHziK sPJmToqUHV0pCU5f/YNVRIwuowSyESH0WKkJl+gQKOvtltdhQLTBQmQiTxYEaofcRPvv WzH7U4dT8+o9PR62Dv3+X6eK4loTM75es89zSiCneXGMPJUqwlyOz0Ef/PZhme7Lnk00 SR3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=uNdkweGhIzbmbLSCXzyijf1WMLgtz0ZE8h2SpBy/OLo=; b=D+JnyzZ3eE6Vm+rmUcI4uUurKUzdHe2duOFLNyLZ4aToHaxjQrh4vuw+7vLUijF4WL GKY86CmDd7IBl+3O29sE0BLnWaYSWlJccJjbQNiJS+OSRkkWPzzWuXvKhGugmCuza5OA OdeaDKYCYW2qQw8dLlQuQVVQbkYDYIMp+RR7d1EhrXgQj3S+B0ANyEgPGuSB0iZw1aML vh8JvwfT//eBye3EFTIUriGHNiYXbr4BN61rMrlKiOm1vhF2HJVZ6tPmOJKC+LBmxBu5 qVl4stcdp91xdWp1CMDJN4XG2Lufs2Azatg1ybr8ztytuXGa2d6f9L3w7iPayZFhOonk IlAg== X-Gm-Message-State: APjAAAVYaxiVfqCjDTXj8EtL55Sm6E8mBYG9fE+ZdtnnnxgKCY922SKn g9cL+AvNfSVm129R31dsDeihLee4 X-Google-Smtp-Source: APXvYqwfB0iIhvHh7a7X5V8dzwGo5czS7fwWeWmrOVxTrJtTjuJRuF+OuaL2VM1n+uRJALrGYlIXlg== X-Received: by 2002:a63:5c7:: with SMTP id 190mr114581537pgf.67.1564631090362; Wed, 31 Jul 2019 20:44:50 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.48 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:49 -0700 (PDT) From: John Stultz To: lkml Cc: John Stultz , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg Subject: [PATCH v3 03/26] drm: kirin: Remove HISI_KIRIN_DW_DSI config option Date: Thu, 1 Aug 2019 03:44:16 +0000 Message-Id: <20190801034439.98227-4-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> The CONFIG_HISI_KIRIN_DW_DSI option is only used w/ kirin driver, so cut out the middleman and condense the config logic down. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/Kconfig | 10 +--------- drivers/gpu/drm/hisilicon/kirin/Makefile | 4 ++-- 2 files changed, 3 insertions(+), 11 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/Kconfig b/drivers/gpu/drm/hisilicon/kirin/Kconfig index 0fa29af08ad0..290553e2f6b4 100644 --- a/drivers/gpu/drm/hisilicon/kirin/Kconfig +++ b/drivers/gpu/drm/hisilicon/kirin/Kconfig @@ -5,16 +5,8 @@ config DRM_HISI_KIRIN select DRM_KMS_HELPER select DRM_GEM_CMA_HELPER select DRM_KMS_CMA_HELPER - select HISI_KIRIN_DW_DSI + select DRM_MIPI_DSI help Choose this option if you have a hisilicon Kirin chipsets(hi6220). If M is selected the module will be called kirin-drm. -config HISI_KIRIN_DW_DSI - tristate "HiSilicon Kirin specific extensions for Synopsys DW MIPI DSI" - depends on DRM_HISI_KIRIN - select DRM_MIPI_DSI - help - This selects support for HiSilicon Kirin SoC specific extensions for - the Synopsys DesignWare DSI driver. If you want to enable MIPI DSI on - hi6220 based SoC, you should selet this option. diff --git a/drivers/gpu/drm/hisilicon/kirin/Makefile b/drivers/gpu/drm/hisilicon/kirin/Makefile index c0501fa3fe53..c50606cfbbdb 100644 --- a/drivers/gpu/drm/hisilicon/kirin/Makefile +++ b/drivers/gpu/drm/hisilicon/kirin/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only kirin-drm-y := kirin_drm_drv.o \ - kirin_drm_ade.o + kirin_drm_ade.o \ + dw_drm_dsi.o obj-$(CONFIG_DRM_HISI_KIRIN) += kirin-drm.o -obj-$(CONFIG_HISI_KIRIN_DW_DSI) += dw_drm_dsi.o From patchwork Thu Aug 1 03:44:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170283 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836029ile; Wed, 31 Jul 2019 20:44:52 -0700 (PDT) X-Received: by 2002:a17:902:e2:: with SMTP id a89mr124511154pla.210.1564631092119; Wed, 31 Jul 2019 20:44:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631092; cv=none; d=google.com; s=arc-20160816; b=IbZ4QEL8p/tS15npzc3NQsAOOflMjr6P111lXBMCZ7/Wc+GWOngvrXLaNGUd78Ez5o AzW7SvglS8wIEUKH5fF3mwDM1ykJRwkVzLKj4OxtcW2HruMmEkcS1fPoXhdN11Je4jE/ njraALX7USJyFG6iIg5z2H8DFGUy8b0nNx7LibWsOjpOudqiuWcrO+i8YvoHPsjoDTbf 9c6BFJp0isKDHDv5FJ5yCpQnO/3YNfod1laLg9xpFh1G4+KbPh2fTuYV7gKZDvUWH8y2 sYfrAmrA2Il0qCmCbPifq2QksTf5/giGzn69o/RKo/zO4pfv6plU0xjSufOxrl2lg/Hl gyIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=yWATOQC7xCYUWMxHGpKVvr0YlzHaV7cfBrgB+3CpQl8=; b=iHFmkYQI6uR+hhVS/MLEWLimg0hCYHW48ijHELup14r6ta93bhxT35jRfdfqc3sAOb 7GndQASsaA8jw+DCb3l+1D9+UZ/h7QWmjw0DUl02NC+N3EI6ziBhqH7bpZwjuwi51oQq kJTfizmSCk19XeHi+GU8bX+AkwMLjDsVV5a38dUPgy8Z6RmTVr7F+BJW+Tyn8FjR12C0 NIifeWE3Gfvy6TOVZcFXt64nQYHuevq57uJzp0KxvyVEPxiuko8E7AzcLEGAMkEsATdC 1pnn4fIQeMOWAg2fWVgm/x5gVglhgrt7vqRBfQk8RsPE166b16pkpVkq/yUrUrR9MHNI CYDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pNhWt5gG; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id d2sor85278516pln.13.2019.07.31.20.44.52 for (Google Transport Security); Wed, 31 Jul 2019 20:44:52 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pNhWt5gG; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yWATOQC7xCYUWMxHGpKVvr0YlzHaV7cfBrgB+3CpQl8=; b=pNhWt5gGCL4xlPtKcrtkLPZHmIYd/CprHM6Yk/qDos1k88CtQzSJeE6n/r/ZlPqlwq GWc45JHjcBnFzAdJUBmKxpql1YLn+WFRWCNBljCzD8BvF16FxsNiaQ7SdR4/oxnfuCx3 2Y410a5S1pJB2deLPi+kGejLgYki003f2LoFpm85daRtkxfo5JY4obS2Mu6Zex3TcOt/ 9PfWkoUg1NzPt7T4jcXj1fkKQnRJ3BogsyRFF0uBWfia4bIeOBoKSaDNAvqArXxujplQ reRNqKcQEVWGCNkK0FB2x1Nxx+QXk3QZRCI1GyhHqhqn4ZNaqswy3drHaHvxXfaJ8WKs CwmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=yWATOQC7xCYUWMxHGpKVvr0YlzHaV7cfBrgB+3CpQl8=; b=Tmbf7qRrVTkYJ0xntC8E9KWioGhWRGsbojQimqEfACzp9GTsIc0gz460Crnn3Nf4wF KYdP+d3WRRYX07BThiGEYYdzTU4MMG7KcIcV7Obop4YFqRBv2Tl0vSMJ2ZgDxlqEnYYY aT9wMHD1RkvPDyJiGB/t6yBI6NeaAtCUuf/JF891e+G7lBEXo3JcHvtVBu66fBtuAJcP kyCTSjEi+uozEdyCxG+BNMiD9r4doEZrBNRpBeB12yHSYzaCFsA3dUXDNpjs/hvKujF2 8SN9NiG3qJ5UWdzQlSqAX2TD6+Jqs9vX9J6ojczAK4XSFsHW6XqbRK27c2dBb5LmpHnd TvOg== X-Gm-Message-State: APjAAAWkgkg7GJZu4J2fBMANQRyZJogjUXQJmNwmgqFwqapEOitmnOS1 bUJ3kr8AJIq5ePet/5Du4A7TTsqM X-Google-Smtp-Source: APXvYqwF2nMm4zaQPkYlX6Euo2pU4rs5CLSygCe26xqwgABVkyiJCsXcaYw81yolcPkgWCA1ofO1Ng== X-Received: by 2002:a17:902:2ac7:: with SMTP id j65mr124662426plb.242.1564631091680; Wed, 31 Jul 2019 20:44:51 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.50 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:51 -0700 (PDT) From: John Stultz To: lkml Cc: John Stultz , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg Subject: [PATCH v3 04/26] drm: kirin: Remove unreachable return Date: Thu, 1 Aug 2019 03:44:17 +0000 Message-Id: <20190801034439.98227-5-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> The 'return 0' in kirin_drm_platform_probe() is unreachable code, so remove it. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Suggested by: Xu YiPing Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 2 -- 1 file changed, 2 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index fbab73c5851d..bfe0505ac4a0 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -210,8 +210,6 @@ static int kirin_drm_platform_probe(struct platform_device *pdev) of_node_put(remote); return component_master_add_with_match(dev, &kirin_drm_ops, match); - - return 0; } static int kirin_drm_platform_remove(struct platform_device *pdev) From patchwork Thu Aug 1 03:44:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170284 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836049ile; Wed, 31 Jul 2019 20:44:53 -0700 (PDT) X-Received: by 2002:a17:902:ac87:: with SMTP id h7mr2502930plr.36.1564631093654; Wed, 31 Jul 2019 20:44:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631093; cv=none; d=google.com; s=arc-20160816; b=e5R6Kq2O0M71P9IHVBoc1/xL1stSFtTOi7NNYzNeGgOOwmT5C1j0xVzVJ6Eht67KCA 0SjAG5HwjTe4mnVWH+clu455TYcPX9w6192V3xfjBNVL05kQBHjdRM5Fo3jS16OF4q/J KZGcgkCWjeVi/Gtf2VBE9kHTqi8Jkc4uiKFouz2c9Krz7tpJZyjKor2NWPFa7DwARSeR SWBOjxGgCJwQh9fxW7bPs3WAXM68IbxP6E69j063WxcteQdxVlrTO8zmZXS5lvX90mOH zWVM4G93GJ/N7b70oViBBoahlCXMlwHGFg1xMx2Im7x2OW9QSq+VNXbqBPLEVVEGyySl PrBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=uEC63dbARYEuBlfRwpeBf8DWjhjcKGFjgUkUYEDal2c=; b=NP6suXt0hgm7M7veeVfPtIYectFDsAHBHN0CYSHlFyU9ovRWMYsXsms5A2ldHuJXT3 aN1L/nDPQzYg09AQfrhJrBySVlCxdpwwvJ48CTH8jNyf3cJZoJXnJd+rZekCLHgL3xrL pCuG7pUelEuWq+chGWRwhLtMUZF890oRYztXyg1qw1p4dJbbw3OrAAaiRutc4gfjMCFs gTz2JojgUtL1qw8iOHUL3Rnq885280gWgTbE7HHLKrxdabWK6Ejy/P1ZzUb/OmrIRGcQ Rz1hm9GyucRD1+QnJUJjO+gHCphsYu4ZFGyeizziKe592ECqCxcmmuRUBY6fEdSnDmgh 9BJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vRnBOW0k; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id y1sor21205546plb.65.2019.07.31.20.44.53 for (Google Transport Security); Wed, 31 Jul 2019 20:44:53 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vRnBOW0k; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=uEC63dbARYEuBlfRwpeBf8DWjhjcKGFjgUkUYEDal2c=; b=vRnBOW0k+1Eg+RO86kU/byWqXZO9hXCUEe93OtnP7i+y4PXdVg5McCbFb1f5MRy2RS RohLpJZEfhAUCcVrDUb4vJTMC3q6GO8q2UR1COosrAVvIlhSW7420qSKLOgAD4WBBBw6 KuDaSl70QaywqUqFDR7ZWXlBwZRZtWIYue/PlUeHjPRHs5SgYp22jsIE4M4HeQocfLi6 1ozKxtqdd6b7RIv+ldjSbyUdFo7DrXj3juTCByOncD0xGM2b/a1fU27HmmShG6Lme4kN fkaXleAJopS0b084QGZsCIxoo+gSizQEvdoo7ELcJsG2EyyfGtisIYjfZ26JGy0R6rYM ZekQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=uEC63dbARYEuBlfRwpeBf8DWjhjcKGFjgUkUYEDal2c=; b=g3+yIpLpjArW7Y/NHEbNUn6PEvc1yCCaYf0QCfFS9P32h3bkPco5P7SpcwN3XAj4yZ /+vxQvv1/HSVDXU+nwH0BfZ+bD2ZO7lu7dKbARKmFxRkRtSDiEfO4ta5PBsotGV8B4fs LutPDBM2wuCSgWIb7CTpnvSVoxmRVAcoxFCt7OhqXTwI/i2wMh6MNJFu8SiUA8nVLmlG QAr5LnejZED3+uSGU9AfCez1u3SZFuwApcSmf0VCzW72Dr7kJh3PJCHmlpPiVVLAk9rd uzpBgcigzftjqWpA8ZQ+Dy3uju9QgZchIF8GurDbKSRMp7qgRRXw9SORfgHAv3Gqt+bS CNEg== X-Gm-Message-State: APjAAAXtK98+teAR1bIZRXvR48iT2padGJqaT05ohP0u3RupIDKjmhsL HWv9f2L5U8K5mFgQdvRiVmO6YrrN X-Google-Smtp-Source: APXvYqyFPrpF1ZkyRxvqbslTyH9glBjcshx+BTBA0o+bExSUREc6tM4oDj8esscrMOpDE+uS5xwn+A== X-Received: by 2002:a17:902:be03:: with SMTP id r3mr125030318pls.156.1564631093229; Wed, 31 Jul 2019 20:44:53 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.51 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:52 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 05/26] drm: kirin: Remove uncessary parameter indirection Date: Thu, 1 Aug 2019 03:44:18 +0000 Message-Id: <20190801034439.98227-6-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing In a few functions, we pass in a struct ade_crtc, which we only use to get to the underlying struct ade_hw_ctx. Thus this patch refactors the functions to just take the struct ade_hw_ctx directly. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 9a9e3b688ba3..756aefd5bcff 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -210,11 +210,10 @@ static void ade_set_pix_clk(struct ade_hw_ctx *ctx, adj_mode->clock = clk_get_rate(ctx->ade_pix_clk) / 1000; } -static void ade_ldi_set_mode(struct ade_crtc *acrtc, +static void ade_ldi_set_mode(struct ade_hw_ctx *ctx, struct drm_display_mode *mode, struct drm_display_mode *adj_mode) { - struct ade_hw_ctx *ctx = acrtc->ctx; void __iomem *base = ctx->base; u32 width = mode->hdisplay; u32 height = mode->vdisplay; @@ -301,9 +300,8 @@ static void ade_power_down(struct ade_hw_ctx *ctx) ctx->power_on = false; } -static void ade_set_medianoc_qos(struct ade_crtc *acrtc) +static void ade_set_medianoc_qos(struct ade_hw_ctx *ctx) { - struct ade_hw_ctx *ctx = acrtc->ctx; struct regmap *map = ctx->noc_regmap; regmap_update_bits(map, ADE0_QOSGENERATOR_MODE, @@ -515,7 +513,7 @@ static void ade_crtc_atomic_enable(struct drm_crtc *crtc, return; } - ade_set_medianoc_qos(acrtc); + ade_set_medianoc_qos(ctx); ade_display_enable(acrtc); ade_dump_regs(ctx->base); drm_crtc_vblank_on(crtc); @@ -545,7 +543,7 @@ static void ade_crtc_mode_set_nofb(struct drm_crtc *crtc) if (!ctx->power_on) (void)ade_power_up(ctx); - ade_ldi_set_mode(acrtc, mode, adj_mode); + ade_ldi_set_mode(ctx, mode, adj_mode); } static void ade_crtc_atomic_begin(struct drm_crtc *crtc, @@ -558,7 +556,7 @@ static void ade_crtc_atomic_begin(struct drm_crtc *crtc, if (!ctx->power_on) (void)ade_power_up(ctx); - ade_ldi_set_mode(acrtc, mode, adj_mode); + ade_ldi_set_mode(ctx, mode, adj_mode); } static void ade_crtc_atomic_flush(struct drm_crtc *crtc, From patchwork Thu Aug 1 03:44:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170285 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836070ile; Wed, 31 Jul 2019 20:44:55 -0700 (PDT) X-Received: by 2002:a63:fd57:: with SMTP id m23mr51720704pgj.204.1564631095273; Wed, 31 Jul 2019 20:44:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631095; cv=none; d=google.com; s=arc-20160816; b=JPe/BA+rEyTTegEFrw7nJkycUvr8JSShfs7qgSa6O67CGmOOT0DZv5tjtK/X6Dinwd qmBrfd1oi3dvbJr77FOK0UYVZwmkKPKPeQ0DjCB4mB6noUoVy3YWNekUouXARhRjKYRf S4xsn9Zyb2jgCj6/2u9GjjCDL0eD/7sUBqf/lzEGhY3u82bqSaMc0l1ng0G4MoDcWT4+ StNJNERtDu8RXdJmsS++ILDcZdANfE6ECx/t8vZwvD6ruCgYbYLTS/Y5j169h0eRm9La Cge9l3qPVW/ny0yOUGhdRkVGqs87OhVLbBxNBWzz00BgJONjhksFi/7quoNyBDoEDe36 AOyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=sbuPXH3VdFgx7EyiYaXP+7dzAxv9Alyn24o+MicDc3g=; b=wQSSWUwM8Fa4NL8cECFVQscEZa1aLnw4pFPF2fmlSD6u/3azdILUcZy2NuAlk4ciY/ RAmhKnmKx+xXwzGioR3VuT5jT1AmrwPbYcB3UFUMb4+saa26ct/Ig++vNLi6muqe4wIv mDUwpBdtfDG8J4aQ/K+jHdd9NRJAMmhPTvSI3MYJyQh3GQ5PkczDqZn0gL1agvdu/Tv4 Numiao4T6IgxC4oD5j1ArbbloAohOX4k2VILvJZCtZoj2FaZLhQ1asQ1AK267uIg4iZZ 6dnJV6AResKKASg3ztgLHcVk1ltTcCKhkrCfZzT41jxKaasgomu2o2gsHhWQu5QZDXic LPCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PNeeTf6C; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id f2sor84642120plj.43.2019.07.31.20.44.55 for (Google Transport Security); Wed, 31 Jul 2019 20:44:55 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PNeeTf6C; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sbuPXH3VdFgx7EyiYaXP+7dzAxv9Alyn24o+MicDc3g=; b=PNeeTf6CHxZtmleLM42uzK+kmr5gR/nqDqqSxXjOubaNccBQf+PsluK79zu0fwrSK+ YoHl+OQVP6HivC2BNict9dp1CyvV92P83bB6AWsTC3CVograuwWVb4kcT+hlEYaNy6wp Yg/bNu/6r4VSnp4z3mHIFpPe/vpNDSgp8eAFPSm7pvHCtjSSaluDT8aj4GyXeKcucv22 b/HWFxXZrbLewuFpZLwasAJcrr/89VT07i0bFvV/kmgWDbyAlQZpk95AIWRCHzN/U6cg Y30/O1WPhktFVgstl5QrhZ1km8wStdhadRCk3VhyfPuerwjrQZ7GLJaeMMhq5xXAv976 oF7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=sbuPXH3VdFgx7EyiYaXP+7dzAxv9Alyn24o+MicDc3g=; b=AtCQPWPV//EanbhVf8d6N3oVFUNlieo4ycCluvslcjd3bqxktEKOmcbLw/f3XnktaR cTiF5IcwWY7Bego4XDXNgLg6jpg+NBc626mEgdjphz9DZX8t9/iwaN1tOCyDZ2lVle5F D5nT9MTRQA1seLkHL62iBdYO23W6jGw7lSWoOa3WB+8K9Nu62UlJTRm6hou0+pok/YPt O4kzaB57QUyBSaWhDFthQT1oN5fBYS/xx9PVWGN6GUgkj93tYVhwORpcVeJEmaOFJpeH uEnqZo+Wz76UhjxL8Vc7mKqlLmKhOe5RAL5sKSqzOY+5a7hz1ZhDRbXqH4JNLbfpkyy7 6/dQ== X-Gm-Message-State: APjAAAWlCf+MGEDMoM5iqXX3SQNQ01lfysQVmo353Pxw+bOzOE2bu2Xf Zbfr6/fJLaKtZiUfo0KbCO/App3F X-Google-Smtp-Source: APXvYqzmcmx5lYagz1N9Qyr8XCKv26OVvf3N44AMBU0z4Wll3KHYXMUEXbb/sT/a1R0ggUgnTgQ42w== X-Received: by 2002:a17:902:2987:: with SMTP id h7mr29146186plb.37.1564631094884; Wed, 31 Jul 2019 20:44:54 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.53 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:54 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 06/26] drm: kirin: Remove out_format from ade_crtc Date: Thu, 1 Aug 2019 03:44:19 +0000 Message-Id: <20190801034439.98227-7-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch removes the out_format field in the struct ade_crtc, which was only ever set to LDI_OUT_RGB_888. Thus this patch removes the field and instead directly uses LDI_OUT_RGB_888. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 756aefd5bcff..73dff21bed6a 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -60,7 +60,6 @@ struct ade_crtc { struct ade_hw_ctx *ctx; struct work_struct display_reset_wq; bool enable; - u32 out_format; }; struct ade_plane { @@ -383,11 +382,10 @@ static irqreturn_t ade_irq_handler(int irq, void *data) return IRQ_HANDLED; } -static void ade_display_enable(struct ade_crtc *acrtc) +static void ade_display_enable(struct ade_hw_ctx *ctx) { - struct ade_hw_ctx *ctx = acrtc->ctx; void __iomem *base = ctx->base; - u32 out_fmt = acrtc->out_format; + u32 out_fmt = LDI_OUT_RGB_888; /* enable output overlay compositor */ writel(ADE_ENABLE, base + ADE_OVLYX_CTL(OUT_OVLY)); @@ -514,7 +512,7 @@ static void ade_crtc_atomic_enable(struct drm_crtc *crtc, } ade_set_medianoc_qos(ctx); - ade_display_enable(acrtc); + ade_display_enable(ctx); ade_dump_regs(ctx->base); drm_crtc_vblank_on(crtc); acrtc->enable = true; @@ -1024,7 +1022,6 @@ static int ade_drm_init(struct platform_device *pdev) ctx = &ade->ctx; acrtc = &ade->acrtc; acrtc->ctx = ctx; - acrtc->out_format = LDI_OUT_RGB_888; ret = ade_dts_parse(pdev, ctx); if (ret) From patchwork Thu Aug 1 03:44:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170286 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836084ile; Wed, 31 Jul 2019 20:44:56 -0700 (PDT) X-Received: by 2002:a62:2f04:: with SMTP id v4mr49552415pfv.14.1564631096533; Wed, 31 Jul 2019 20:44:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631096; cv=none; d=google.com; s=arc-20160816; b=HyslyR1mYUHAFFGOZIjAqnWLDFog3tGyDxTTOrg9YWSAx66k6JdRZ0pJ43CDviwZEJ MJjMDyD2MsNUgxJ2zbgJbckgq2YBe9FDv56NYrUP7Xg1ynPdARD7NB/o7t3ZXkLTQQj/ X8ew/N24XeJXHLzJ9tI4BvnuA1ga20FOmvWpxOviu4+ew5fJtuKsEAeKNKeDSOw0kW4W TIWxfSn1PF+hSUXdg6VdvycQ5G80MV0B5d1uJPh7cQQffjEaoOsf5Zpt4OtGeVHdH++C 9FjvixMGkwmM8mXZiMb9FQCXUqOuiEebkEMpPhbQpeUifx2IavPe6VtChK+LisI0b8D8 81Sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=TafGTDaLfQIiKJYxJrrpSrigtAbrs7F+Anr4pE3NROk=; b=VQB2RhuLDyec4pTCxDYTw/O3bmM+ImXUQQ0thu2nrbIjOfXjFWC+zxhaPQNbfqaEvd QLlwj1VOLXTXktktvswo5xwWug7X2Q+rGfk4RsvzvMkcM0NFpmFeGJXeJrtrX6TEf50g bZ+lSNVwr10ZfZR0dZkQNnlzwdK+vZNCWclegqnXcLvr9My2ijrJmTfcR/A36wl2ZuTW C3ZaZ+UEqjSHFcktD08nVgjE8kmzN8nOd9nO08TXlaPY03hRJWOJ2cjleyQp+qpdE+DL CweBuQhr6+P4iexyIdKRHynDJVwQDXLYUqieyLoVXaq9U7UOlGR29FPyB68yILqBfOiT w+rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ZAubX0oe; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id a26sor5071232pgw.21.2019.07.31.20.44.56 for (Google Transport Security); Wed, 31 Jul 2019 20:44:56 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ZAubX0oe; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TafGTDaLfQIiKJYxJrrpSrigtAbrs7F+Anr4pE3NROk=; b=ZAubX0oegH5tBSxqyYzTmKkuh6MwE2oNG/rl//kpv5vB42IxMZ6QjzgrVhl+gq6+sq MI2sm/V0uzX6tJbaxyMJFcRCh8ZJx4LSNtWHmbAPC+Ntmwv/yrBnQuGPtesxy9Y9f/tf JJAjUo+b20mkv8RJpKuRYf2TfY0Bnj7trU38qyDV1xD+QXGI3Ae0nTL4Q/dw2Qa9MA3y GBoUyQskEB+L8X3FTNkzYVHxlltlBM7mh3Y90aZmvgXk4UsOhrO21bBKwNI8VrRhpEnK s1y7Zf5u4mibVvh3KLnrH9J0JHWAorKCO+p70KzGRud9ghzFqBmBKsuRif70peb2iv6k +W2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=TafGTDaLfQIiKJYxJrrpSrigtAbrs7F+Anr4pE3NROk=; b=VtxZuxpDbJjx3XdyMh6LpKhs7GKS29TDfBAOTAcGxo7MAiMRJStbDZGB/u3KW0tr3i g7VzvPsjdNAzwwH9pnxVBFo5sCkEXtQ68CzuWrkKfVHB1kwe7Sm0wkK1ZtUBCmu7n+Q6 FQw4RN/BsC3O7sN6jLYJ5hO3kJRwfuj+m7cWscHdsLBm3T98gh0JYOtmWa9lc+wT6s9d mwJEuyRsbEzxGMB1MKQJLiVDbBRoXsZ2XH97d1LW6jSwyjjQRRczbOkTVSVSIIe0HIr7 9KQa42kqCh8qO/LIxteuy8c5g+ClRAMPg8T8hxWjFbyIpWPQUkqD9Sa57hlRXB6rSAAz UZ2Q== X-Gm-Message-State: APjAAAUU9YC4oRBA2ruK1QCT7Zc11YwTfdSlIy/ri65xBtS9N1EFu7r9 PGINRkjpvtj1i0c0IHAQlMjv8/BW X-Google-Smtp-Source: APXvYqzny3AHyMt5/ZveQdmI2/z/Y11lXel2SZs+jcWAzxgVZAm89DQZFbxQpL8AJ2BYJNRKjulrYg== X-Received: by 2002:a63:3fc9:: with SMTP id m192mr119070666pga.429.1564631096077; Wed, 31 Jul 2019 20:44:56 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.54 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:55 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 07/26] drm: kirin: Rename ade_plane to kirin_plane Date: Thu, 1 Aug 2019 03:44:20 +0000 Message-Id: <20190801034439.98227-8-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch renames the struct ade_plane to kirin_plane. The struct kirin_plane will later used by both kirin620 and future kirin960 driver, and will be moved to a common kirin_drm_drv.h in a future patch Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 57 ++++++++++--------- 1 file changed, 29 insertions(+), 28 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 73dff21bed6a..c09040876e68 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -41,8 +41,9 @@ #define to_ade_crtc(crtc) \ container_of(crtc, struct ade_crtc, base) -#define to_ade_plane(plane) \ - container_of(plane, struct ade_plane, base) +#define to_kirin_plane(plane) \ + container_of(plane, struct kirin_plane, base) + struct ade_hw_ctx { void __iomem *base; @@ -62,15 +63,15 @@ struct ade_crtc { bool enable; }; -struct ade_plane { +struct kirin_plane { struct drm_plane base; - void *ctx; - u8 ch; /* channel */ + void *hw_ctx; + u32 ch; }; struct ade_data { struct ade_crtc acrtc; - struct ade_plane aplane[ADE_CH_NUM]; + struct kirin_plane planes[ADE_CH_NUM]; struct ade_hw_ctx ctx; }; @@ -795,16 +796,16 @@ static void ade_compositor_routing_disable(void __iomem *base, u32 ch) /* * Typicaly, a channel looks like: DMA-->clip-->scale-->ctrans-->compositor */ -static void ade_update_channel(struct ade_plane *aplane, +static void ade_update_channel(struct kirin_plane *kplane, struct drm_framebuffer *fb, int crtc_x, int crtc_y, unsigned int crtc_w, unsigned int crtc_h, u32 src_x, u32 src_y, u32 src_w, u32 src_h) { - struct ade_hw_ctx *ctx = aplane->ctx; + struct ade_hw_ctx *ctx = kplane->hw_ctx; void __iomem *base = ctx->base; u32 fmt = ade_get_format(fb->format->format); - u32 ch = aplane->ch; + u32 ch = kplane->ch; u32 in_w; u32 in_h; @@ -828,11 +829,11 @@ static void ade_update_channel(struct ade_plane *aplane, ade_compositor_routing_set(base, ch, crtc_x, crtc_y, in_w, in_h, fmt); } -static void ade_disable_channel(struct ade_plane *aplane) +static void ade_disable_channel(struct kirin_plane *kplane) { - struct ade_hw_ctx *ctx = aplane->ctx; + struct ade_hw_ctx *ctx = kplane->hw_ctx; void __iomem *base = ctx->base; - u32 ch = aplane->ch; + u32 ch = kplane->ch; DRM_DEBUG_DRIVER("disable channel%d\n", ch + 1); @@ -894,10 +895,10 @@ static int ade_plane_atomic_check(struct drm_plane *plane, static void ade_plane_atomic_update(struct drm_plane *plane, struct drm_plane_state *old_state) { - struct drm_plane_state *state = plane->state; - struct ade_plane *aplane = to_ade_plane(plane); + struct drm_plane_state *state = plane->state; + struct kirin_plane *kplane = to_kirin_plane(plane); - ade_update_channel(aplane, state->fb, state->crtc_x, state->crtc_y, + ade_update_channel(kplane, state->fb, state->crtc_x, state->crtc_y, state->crtc_w, state->crtc_h, state->src_x >> 16, state->src_y >> 16, state->src_w >> 16, state->src_h >> 16); @@ -906,9 +907,9 @@ static void ade_plane_atomic_update(struct drm_plane *plane, static void ade_plane_atomic_disable(struct drm_plane *plane, struct drm_plane_state *old_state) { - struct ade_plane *aplane = to_ade_plane(plane); + struct kirin_plane *kplane = to_kirin_plane(plane); - ade_disable_channel(aplane); + ade_disable_channel(kplane); } static const struct drm_plane_helper_funcs ade_plane_helper_funcs = { @@ -926,7 +927,7 @@ static struct drm_plane_funcs ade_plane_funcs = { .atomic_destroy_state = drm_atomic_helper_plane_destroy_state, }; -static int ade_plane_init(struct drm_device *dev, struct ade_plane *aplane, +static int ade_plane_init(struct drm_device *dev, struct kirin_plane *kplane, enum drm_plane_type type) { const u32 *fmts; @@ -934,18 +935,18 @@ static int ade_plane_init(struct drm_device *dev, struct ade_plane *aplane, int ret = 0; /* get properties */ - fmts_cnt = ade_get_channel_formats(aplane->ch, &fmts); + fmts_cnt = ade_get_channel_formats(kplane->ch, &fmts); if (ret) return ret; - ret = drm_universal_plane_init(dev, &aplane->base, 1, &ade_plane_funcs, + ret = drm_universal_plane_init(dev, &kplane->base, 1, &ade_plane_funcs, fmts, fmts_cnt, NULL, type, NULL); if (ret) { - DRM_ERROR("fail to init plane, ch=%d\n", aplane->ch); + DRM_ERROR("fail to init plane, ch=%d\n", kplane->ch); return ret; } - drm_plane_helper_add(&aplane->base, &ade_plane_helper_funcs); + drm_plane_helper_add(&kplane->base, &ade_plane_helper_funcs); return 0; } @@ -1007,7 +1008,7 @@ static int ade_drm_init(struct platform_device *pdev) struct ade_data *ade; struct ade_hw_ctx *ctx; struct ade_crtc *acrtc; - struct ade_plane *aplane; + struct kirin_plane *kplane; enum drm_plane_type type; int ret; int i; @@ -1033,19 +1034,19 @@ static int ade_drm_init(struct platform_device *pdev) * need to do. */ for (i = 0; i < ADE_CH_NUM; i++) { - aplane = &ade->aplane[i]; - aplane->ch = i; - aplane->ctx = ctx; + kplane = &ade->planes[i]; + kplane->ch = i; + kplane->hw_ctx = ctx; type = i == PRIMARY_CH ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY; - ret = ade_plane_init(dev, aplane, type); + ret = ade_plane_init(dev, kplane, type); if (ret) return ret; } /* crtc init */ - ret = ade_crtc_init(dev, &acrtc->base, &ade->aplane[PRIMARY_CH].base); + ret = ade_crtc_init(dev, &acrtc->base, &ade->planes[PRIMARY_CH].base); if (ret) return ret; From patchwork Thu Aug 1 03:44:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170287 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836105ile; Wed, 31 Jul 2019 20:44:58 -0700 (PDT) X-Received: by 2002:a65:640a:: with SMTP id a10mr115170471pgv.338.1564631098247; Wed, 31 Jul 2019 20:44:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631098; cv=none; d=google.com; s=arc-20160816; b=HE+w3VJiFJBWBIK6Q/WSapoq+gLXshszu7tOATL6AiyLSZ43caTjEiT0OzUw6Hi7Hl HmyG652tMjup4ivu1AfirR0dRP0/sFnUjwI4uQPf9yJgFJY7IHJKiXuQ+VzIJxX8zasf m2jmZphWndBRgCH1J13LHutDOeR4sAxI84MSlYMSnNHaNfPJVemfWgXhFFfAvvJAo2kj S32fFfCzVDg/qIdj82I238/UdBqqxUOnGrqJHXLwKzaU5HBaC/gSG1n9YN4JmNX51b8v LAx+UqRLQxzby1uAwatZSeOc2z9MQBgvnESUzB/fzNVZKdHkVZHa+F4uS95I9XnmzmEB SWGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=h+xyuISgi9Vn0Ch8M9bGcbbOkJHU28xgNWiMG/h2mkU=; b=MhjYaRxayDD9rbdWVd4oRJrvqszbl1jvkn8DEbXNvpZt4RklaViu287yCnuqjQR4RP NdFMk9lXjIVNeiGj+EQ9Y814v0KAIsgbPFMsDI5MIJL68xlTuWmxJPxRzoAe19FTQq9p 0q2k2o7owpQM7CKjjXR2U5hTt42fyge+Oj/2rpik1PlZei6/3cr0NcfS3EyBIo5cCQmH R21vEIToPmZei86xSIUxg9YeUfzWsSlxnHC9kXnHfKSJETp+c0WIyyuzwD9eAwhjO8kr dOWoMWNtAsWfXZbQhau53+dQ0UI/oYxIYNHGXW1bwabKs7D2+nlMO0/U9xd5LEWljy10 /Isg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=UietvW8B; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id j6sor46286948pgq.25.2019.07.31.20.44.58 for (Google Transport Security); Wed, 31 Jul 2019 20:44:58 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=UietvW8B; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=h+xyuISgi9Vn0Ch8M9bGcbbOkJHU28xgNWiMG/h2mkU=; b=UietvW8BfMCguLOkvkDw8RoW4W6e3/3kGmlJRdW+6EuhnrveT9Fv8Amg0QF/IDPwW8 BchuXnyUQBjzDItEnIhSCCD3l2tsc8ae+lTcHZ45fGV/bgwrbvvzKw6u+lE6PctRxLt2 hBFqI7yv5NBP0jO2vWHvqY0xxvi2LXx0KIEA9nv+RNzoMw/FpjyxyX/7K9oPi0OpKvRD 36aIIAlQr6kGmnjFKAz0UUKe+nWCYl2p1WYZ8E/igE/X47LEOhWwvsqGhA4AgpHC3nVW uPcewcAQqSYyDujXr/3HcFaUnR+G0QaKffEKsuKMRePvzRkxXfJBbivxZ+G+6vQJcafG RBUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=h+xyuISgi9Vn0Ch8M9bGcbbOkJHU28xgNWiMG/h2mkU=; b=IgyrpAe7PvE5Wgk+3eUNn4Dn7CZfXgL/fbt0SVIlEbIx8HBJxozxi+0aVvpUV/ykyx Riun+/DI2hg12GsHuYCXfLxa8qXSs5orkZX6HI+/qs0UCYncgVkrAlU6bXOq/qv5JheP zBJ93pEforY3EuL/dlzjYr196A1zl0ERvjkBnm9ROUJhKJUn6yXTC8P2sozxSyH5gTGU dbL5sp4HXSZAadzpshdCfHuv87XjcKMh0f309kUv4rEQ27cPl2A5KHWoFC0OoUt9gDu0 UX6GjVtsmDSviw/WFkhWiErTJomNJqb+64U5EQCXmQtknVrpwBLVSo0NvOpwxxaKQZhu 3QMg== X-Gm-Message-State: APjAAAX/cJaZ2JcyslXdfwYBMvllZ7DbIUhl7+hMZTULOWMGeGAMEoMZ QJye6FkPKX3XWuYrS0YGidMYW6im X-Google-Smtp-Source: APXvYqztQPTxz0MtnjEvHuqBMjnVpqOc8go+u4LZW+i6lQzUSevn2waApKc1+0qj4gIcf/ohlo4QtQ== X-Received: by 2002:a65:4108:: with SMTP id w8mr18196651pgp.263.1564631097719; Wed, 31 Jul 2019 20:44:57 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.56 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:56 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 08/26] drm: kirin: Rename ade_crtc to kirin_crtc Date: Thu, 1 Aug 2019 03:44:21 +0000 Message-Id: <20190801034439.98227-9-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch renames the struct ade_crtc to kirin_crtc. The struct kirin_crtc will later used by both kirin620 and future kirin960 driver, and will be moved to a common kirin_drm_drv.h in a future patch Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index c09040876e68..ee3dc3d0f738 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -38,8 +38,8 @@ #define OUT_OVLY ADE_OVLY2 /* output overlay compositor */ #define ADE_DEBUG 1 -#define to_ade_crtc(crtc) \ - container_of(crtc, struct ade_crtc, base) +#define to_kirin_crtc(crtc) \ + container_of(crtc, struct kirin_crtc, base) #define to_kirin_plane(plane) \ container_of(plane, struct kirin_plane, base) @@ -56,9 +56,9 @@ struct ade_hw_ctx { int irq; }; -struct ade_crtc { +struct kirin_crtc { struct drm_crtc base; - struct ade_hw_ctx *ctx; + void *hw_ctx; struct work_struct display_reset_wq; bool enable; }; @@ -70,7 +70,7 @@ struct kirin_plane { }; struct ade_data { - struct ade_crtc acrtc; + struct kirin_crtc crtc; struct kirin_plane planes[ADE_CH_NUM]; struct ade_hw_ctx ctx; }; @@ -184,8 +184,8 @@ static bool ade_crtc_mode_fixup(struct drm_crtc *crtc, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; adjusted_mode->clock = clk_round_rate(ctx->ade_pix_clk, mode->clock * 1000) / 1000; @@ -317,8 +317,8 @@ static void ade_set_medianoc_qos(struct ade_hw_ctx *ctx) static int ade_crtc_enable_vblank(struct drm_crtc *crtc) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; void __iomem *base = ctx->base; if (!ctx->power_on) @@ -332,8 +332,8 @@ static int ade_crtc_enable_vblank(struct drm_crtc *crtc) static void ade_crtc_disable_vblank(struct drm_crtc *crtc) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; void __iomem *base = ctx->base; if (!ctx->power_on) { @@ -347,7 +347,7 @@ static void ade_crtc_disable_vblank(struct drm_crtc *crtc) static void drm_underflow_wq(struct work_struct *work) { - struct ade_crtc *acrtc = container_of(work, struct ade_crtc, + struct kirin_crtc *acrtc = container_of(work, struct kirin_crtc, display_reset_wq); struct drm_device *drm_dev = (&acrtc->base)->dev; struct drm_atomic_state *state; @@ -358,9 +358,9 @@ static void drm_underflow_wq(struct work_struct *work) static irqreturn_t ade_irq_handler(int irq, void *data) { - struct ade_crtc *acrtc = data; - struct ade_hw_ctx *ctx = acrtc->ctx; - struct drm_crtc *crtc = &acrtc->base; + struct kirin_crtc *kcrtc = data; + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; + struct drm_crtc *crtc = &kcrtc->base; void __iomem *base = ctx->base; u32 status; @@ -377,7 +377,7 @@ static irqreturn_t ade_irq_handler(int irq, void *data) ade_update_bits(base + LDI_INT_CLR, UNDERFLOW_INT_EN_OFST, MASK(1), 1); DRM_ERROR("LDI underflow!"); - schedule_work(&acrtc->display_reset_wq); + schedule_work(&kcrtc->display_reset_wq); } return IRQ_HANDLED; @@ -499,11 +499,11 @@ static void ade_dump_regs(void __iomem *base) { } static void ade_crtc_atomic_enable(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; int ret; - if (acrtc->enable) + if (kcrtc->enable) return; if (!ctx->power_on) { @@ -516,27 +516,27 @@ static void ade_crtc_atomic_enable(struct drm_crtc *crtc, ade_display_enable(ctx); ade_dump_regs(ctx->base); drm_crtc_vblank_on(crtc); - acrtc->enable = true; + kcrtc->enable = true; } static void ade_crtc_atomic_disable(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; - if (!acrtc->enable) + if (!kcrtc->enable) return; drm_crtc_vblank_off(crtc); ade_power_down(ctx); - acrtc->enable = false; + kcrtc->enable = false; } static void ade_crtc_mode_set_nofb(struct drm_crtc *crtc) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; struct drm_display_mode *mode = &crtc->state->mode; struct drm_display_mode *adj_mode = &crtc->state->adjusted_mode; @@ -548,8 +548,8 @@ static void ade_crtc_mode_set_nofb(struct drm_crtc *crtc) static void ade_crtc_atomic_begin(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; struct drm_display_mode *mode = &crtc->state->mode; struct drm_display_mode *adj_mode = &crtc->state->adjusted_mode; @@ -562,13 +562,13 @@ static void ade_crtc_atomic_flush(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; struct drm_pending_vblank_event *event = crtc->state->event; void __iomem *base = ctx->base; /* only crtc is enabled regs take effect */ - if (acrtc->enable) { + if (kcrtc->enable) { ade_dump_regs(base); /* flush ade registers */ writel(ADE_ENABLE, base + ADE_EN); @@ -1007,7 +1007,7 @@ static int ade_drm_init(struct platform_device *pdev) struct drm_device *dev = platform_get_drvdata(pdev); struct ade_data *ade; struct ade_hw_ctx *ctx; - struct ade_crtc *acrtc; + struct kirin_crtc *kcrtc; struct kirin_plane *kplane; enum drm_plane_type type; int ret; @@ -1021,8 +1021,8 @@ static int ade_drm_init(struct platform_device *pdev) platform_set_drvdata(pdev, ade); ctx = &ade->ctx; - acrtc = &ade->acrtc; - acrtc->ctx = ctx; + kcrtc = &ade->crtc; + kcrtc->hw_ctx = ctx; ret = ade_dts_parse(pdev, ctx); if (ret) @@ -1046,15 +1046,15 @@ static int ade_drm_init(struct platform_device *pdev) } /* crtc init */ - ret = ade_crtc_init(dev, &acrtc->base, &ade->planes[PRIMARY_CH].base); + ret = ade_crtc_init(dev, &kcrtc->base, &ade->planes[PRIMARY_CH].base); if (ret) return ret; /* vblank irq init */ ret = devm_request_irq(dev->dev, ctx->irq, ade_irq_handler, - IRQF_SHARED, dev->driver->name, acrtc); + IRQF_SHARED, dev->driver->name, kcrtc); - INIT_WORK(&acrtc->display_reset_wq, drm_underflow_wq); + INIT_WORK(&kcrtc->display_reset_wq, drm_underflow_wq); if (ret) return ret; From patchwork Thu Aug 1 03:44:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170288 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836127ile; Wed, 31 Jul 2019 20:44:59 -0700 (PDT) X-Received: by 2002:a17:90a:cb97:: with SMTP id a23mr6121703pju.67.1564631099706; Wed, 31 Jul 2019 20:44:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631099; cv=none; d=google.com; s=arc-20160816; b=INhbqO1ijUbx1hVEFFbfv5bJBRL4jr5jVGE9QuObpUdDhVb1oomqNmJQP37yALg/pm hoX+SOkwQOMEtU/GpOD2F/CKxUsxrGu2H7VzLQ9qV/HKiB2gMrvbcB9tR30kpGYwrOjV gV2pKDnLIsRcXLBPw2ZmSZYRbOdkW+7ScH46hOsV7rhuLkFd0QukMdgoPPK6lYM0jz6v gBxPWSGAZQ/h02yAKR8fv55iBKUcIw464sabimUT6bIH48sC+++CdbJBm3u2yfMyFyGV +kC+79I1YQcG4Td74ycGaLUmq78yqMNrhrYkywZp9OCizaLeZndKFlou5sjjuTq5+WFv NSlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=i9tvfzQD5GYsRh7YNElgPmwFI+U0VLLDkgmIyzror5U=; b=UGl05DGTsJaXo4MYF8Kj8FGNk9HkGiIGqUoP5YY13NJ6pz8bPBsJQ1fYrVQZxr6ubF YoXkwgOBqdtrtXO7Np8vyLRwKGzuDvchSNg94ZpTR2FbbURwxevMEUWlbllyWl8fp5a6 kpZ2JjY+N1KAoYSQT0lDuRFrnqlpQjOVopDOUb+3ZFNhbDWfCvcNGV8It7z7WSZ8SIZJ 60TdEPZyhWRxUeYeWApxNwljFiTgrM6Z/jaAtIJb5K7jblkK0I1cgh46SYtblEjNG7Fi v8S2YkqvKTVu172flMxmDJVe9KcCrLMwvUwmh1pfLzJg8UvEoUdJJVJOFE3dF4te4pAK 0r8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="NvAaPqg/"; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id z23sor51632007pfn.3.2019.07.31.20.44.59 for (Google Transport Security); Wed, 31 Jul 2019 20:44:59 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="NvAaPqg/"; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=i9tvfzQD5GYsRh7YNElgPmwFI+U0VLLDkgmIyzror5U=; b=NvAaPqg/OKsgDwROr9SrTE84PizBpsBU2U6mbQoJNWffNUlem5m/Yh7dANZyMKA/FI dfdr4M5TLfEFnhUXw4uq8WRJAbF9MeSvijqNkjkw62arF3uXeLXWYhs33bgjkzXxE1N7 pQAxj7FU+i1sHx4m4ZAy4WVt9aKd5psi7BPbkWLPXGWknTwdMdpY9k2Q8OPiNfs1uQ2H 2X8MkgwM6uzTIcwh6hDYuWjSWHmgTsvBR76DBYxB91GJUx8cCG4hjKFV/rxAlbCbojQF bUOJ0qr0m2QVYfSWs39hfsCR97POLh4BjA9fLNcRzhsZXH8NxJSvkabw6pFJl4Xo5kEE LOAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=i9tvfzQD5GYsRh7YNElgPmwFI+U0VLLDkgmIyzror5U=; b=ISplxEwmR7ECqmJDliGWmmCWb+a6LKyDuBbB1jX6pAc6RZ/g6s0dhGYf9tKXvHSeQB z6dxxW+lr8RJP6rOu2rPopRy6gtyYm41bQ2cd/Oig+bTxTGbNmkljeU7UwO6BOO025O3 TOTK1BIGEVHZfkkWOX5JhE4QvjfiVLgUV9YQHkZu85hnYBiIcxSvXpUlYeslg4CA8TF5 1hBrG6BC8Xi8iijEzC5Ztv+gnWjVEPJWQiiUOwHNh+Gxnwo4qDS1P8t0H6y96glmYABF xak8KY/dOrG2p88gNUgamN+0+K/my4P0cuGuSLfdE1Z6TwYodGMZLkJDD4qAp83uNbPP TOdA== X-Gm-Message-State: APjAAAWaWcTDz4QpKmem9ST/v7tZerfrMC5AOMqcWXgl0uX4WRM1/Zjs Y/ZV/eDIad6nZe4kI9d2qKDtrSSW3YiPRw== X-Google-Smtp-Source: APXvYqxXS0ixA/6BUpAhCw+3McQUY7SwDb3Y/AY61ODIUsKrYf+q0YrtOTqzm7TiGwQHRTO2l+8TKA== X-Received: by 2002:a62:2784:: with SMTP id n126mr51725593pfn.61.1564631099327; Wed, 31 Jul 2019 20:44:59 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.57 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:44:58 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 09/26] drm: kirin: Dynamically allocate the hw_ctx Date: Thu, 1 Aug 2019 03:44:22 +0000 Message-Id: <20190801034439.98227-10-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch modifies the initialization function to dynamically allocate the ade_hw_ctx structure previously kept as part of struct ade_data. This is done so that later we can have the hw_ctx point to hardware revision specific ctx structures. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index ee3dc3d0f738..ddcfe0c42d7c 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -72,7 +72,7 @@ struct kirin_plane { struct ade_data { struct kirin_crtc crtc; struct kirin_plane planes[ADE_CH_NUM]; - struct ade_hw_ctx ctx; + struct ade_hw_ctx *hw_ctx; }; /* ade-format info: */ @@ -951,55 +951,62 @@ static int ade_plane_init(struct drm_device *dev, struct kirin_plane *kplane, return 0; } -static int ade_dts_parse(struct platform_device *pdev, struct ade_hw_ctx *ctx) +static void *ade_hw_ctx_alloc(struct platform_device *pdev) { struct resource *res; struct device *dev = &pdev->dev; struct device_node *np = pdev->dev.of_node; + struct ade_hw_ctx *ctx = NULL; + + ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) { + DRM_ERROR("failed to alloc ade_hw_ctx\n"); + return ERR_PTR(-ENOMEM); + } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ctx->base = devm_ioremap_resource(dev, res); if (IS_ERR(ctx->base)) { DRM_ERROR("failed to remap ade io base\n"); - return PTR_ERR(ctx->base); + return ERR_PTR(-EIO); } ctx->reset = devm_reset_control_get(dev, NULL); if (IS_ERR(ctx->reset)) - return PTR_ERR(ctx->reset); + return ERR_PTR(-ENODEV); ctx->noc_regmap = syscon_regmap_lookup_by_phandle(np, "hisilicon,noc-syscon"); if (IS_ERR(ctx->noc_regmap)) { DRM_ERROR("failed to get noc regmap\n"); - return PTR_ERR(ctx->noc_regmap); + return ERR_PTR(-ENODEV); } ctx->irq = platform_get_irq(pdev, 0); if (ctx->irq < 0) { DRM_ERROR("failed to get irq\n"); - return -ENODEV; + return ERR_PTR(-ENODEV); } ctx->ade_core_clk = devm_clk_get(dev, "clk_ade_core"); if (IS_ERR(ctx->ade_core_clk)) { DRM_ERROR("failed to parse clk ADE_CORE\n"); - return PTR_ERR(ctx->ade_core_clk); + return ERR_PTR(-ENODEV); } ctx->media_noc_clk = devm_clk_get(dev, "clk_codec_jpeg"); if (IS_ERR(ctx->media_noc_clk)) { DRM_ERROR("failed to parse clk CODEC_JPEG\n"); - return PTR_ERR(ctx->media_noc_clk); + return ERR_PTR(-ENODEV); } ctx->ade_pix_clk = devm_clk_get(dev, "clk_ade_pix"); if (IS_ERR(ctx->ade_pix_clk)) { DRM_ERROR("failed to parse clk ADE_PIX\n"); - return PTR_ERR(ctx->ade_pix_clk); + return ERR_PTR(-ENODEV); } - return 0; + return ctx; } static int ade_drm_init(struct platform_device *pdev) @@ -1020,14 +1027,16 @@ static int ade_drm_init(struct platform_device *pdev) } platform_set_drvdata(pdev, ade); - ctx = &ade->ctx; + ctx = ade_hw_ctx_alloc(pdev); + if (IS_ERR(ctx)) { + DRM_ERROR("failed to initialize kirin_priv hw ctx\n"); + return -EINVAL; + } + ade->hw_ctx = ctx; + kcrtc = &ade->crtc; kcrtc->hw_ctx = ctx; - ret = ade_dts_parse(pdev, ctx); - if (ret) - return ret; - /* * plane init * TODO: Now only support primary plane, overlay planes From patchwork Thu Aug 1 03:44:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170289 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836144ile; Wed, 31 Jul 2019 20:45:01 -0700 (PDT) X-Received: by 2002:a17:90a:f491:: with SMTP id bx17mr6390748pjb.118.1564631101333; Wed, 31 Jul 2019 20:45:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631101; cv=none; d=google.com; s=arc-20160816; b=C5+V4m6u8MXimRY56k+h8NGjtgXMQrhnIs2y2wlh+yld6ogyc1uM1UEolRnXaO18Fz sO59OGsKLzUmh2tMsa2+Ppd8mVQJM07cdQZ5xM8gTw8q1iFW501KAGyu71qAT49rEIjB h7txL0gspJSL6HJY7/3zN70gRivVk8/re2+7n+8AYHen0rfHzc23RduJX/dwwfI1wvQR oFuXuTJGk9FMJF8Z+TPoUwmoYTOIFg2kI3oh7n9e8gCxVh01nbk7FXLLO4mSxM+KUG2v /ZioWC8W9xMsCqa98SSRNKqmGphSsuOodgRlFXyn9Xd/dW5rLJRhBCigoAKJpFcPAn/s zPlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7V27YU7YMF+tZPi0O4Ugz3veVJN966k99LkEuw17xeY=; b=BcWJJML7HG8oLiAq2oCk742+bFYpkau7+H+JlrXVt+KncygAPjN4Hjc/T0poLna5Yt oqGrLKNL7K39FEVYNGBN7R3SsQGEuTnphixdgDYtzMqS3lfghRVij79Jb56b1Bp4LNKt gg51DnIQWKNmmcRAH/m2aCwt3H5QkWleQu/C440C4ITgBnERtYvKMprCS9xULBz+dE+7 zLPlJuNxdrXMrVbkPHksjVW1HrZxkYsbV0+/h5Ym5pWXCU05VUlOlPbfI5GfuQqKfRdE +Vkm7wNhMuZIqy/OX63SSuMBi3jNlMC5T0kB+tCNqWrUKibIXV0mr9kycyAUVXCj7B99 iYLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ql0l5+P+; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id c27sor20536391pgl.52.2019.07.31.20.45.01 for (Google Transport Security); Wed, 31 Jul 2019 20:45:01 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ql0l5+P+; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7V27YU7YMF+tZPi0O4Ugz3veVJN966k99LkEuw17xeY=; b=ql0l5+P+mf3WMVVy/yqVmjy+Oi65lqVK0DmdJ3uF8Nw4Wf5d0BwNFACRz3v7CkikjX Yd30hkInZkBXabP80PeIrme1yJ/Ip+O9cnqds2hbokZqg3RQNmjxWQl8Qbi4vmEIfqKK +F0amK2NQldKuKzSXexa/Nlj5Cgbu5FavZFzbN175XIAfRziR0JvosWELHfVqH8owdUc VMrKjDraq9FULY7g7KhFS9qzQOJ7XlP6lwLGP8knvtKBTv99kNZzmT9WmbcEfyB+6uLl Frv1ZK7q5RLYDrxqzNFNjCeURud/RAdSSsthXsdMdnbtscwgxnZzZ8M0c4NKTtzaWj5K jmww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=7V27YU7YMF+tZPi0O4Ugz3veVJN966k99LkEuw17xeY=; b=r4WPE64Fo2DaBGswJZuGbSoiTDieAOJsIOqSGM2KrCJFFk1c8YFWt6BBHLfZj3IMA0 +tLdIRfIbzovj7z6cJQPMFcAyzxlUXxJq9BNdQwkAw0+NQ76zGcqthP2EXOscMxFJJPz l8bnU8ygGtRKcO307T+Dr3JARUjnlOQUID2jI9Vxw10YZeK1C/g1LFrTfBBgVpwVuWXv XZws6aFyI3aUuzfUfcRzt9rsliT3Gq2/f3qG5vtlPVq8FC6gH3BketWRxpNyKTHHjI2w zflLeefR+sGXiM0649O7mFdRe9EX2Xnunn64TPi+wCxqAiJ7cfCjxqKNi/xurs/mTUYz ThLg== X-Gm-Message-State: APjAAAUGZjm2UGQz5VQhr3DlvjFWZBcc6PiW57L9EXQ7BT1QSYhYNd/a JqY8O12tc2vCMNLGht5k94E7q55J X-Google-Smtp-Source: APXvYqwEhFxACC26/Eik5Mctv+bkSEzw74Z5kusBkQCvg6V/F07XrF+4u0xrAKRk3NaklKsj9Z8wrA== X-Received: by 2002:a63:a66:: with SMTP id z38mr21652140pgk.247.1564631100809; Wed, 31 Jul 2019 20:45:00 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.44.59 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:00 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 10/26] drm: kirin: Move request irq handle in ade hw ctx alloc Date: Thu, 1 Aug 2019 03:44:23 +0000 Message-Id: <20190801034439.98227-11-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch modifies the initialization routines so the devm_request_irq() function is called as part of the allocation function. This will be needed in the future when we will have different allocation functions to allocate hardware specific hw_ctx structures, which will setup the vblank irq differently. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index ddcfe0c42d7c..0e0fe1cb945f 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -54,6 +54,8 @@ struct ade_hw_ctx { struct reset_control *reset; bool power_on; int irq; + + struct drm_crtc *crtc; }; struct kirin_crtc { @@ -358,9 +360,9 @@ static void drm_underflow_wq(struct work_struct *work) static irqreturn_t ade_irq_handler(int irq, void *data) { - struct kirin_crtc *kcrtc = data; - struct ade_hw_ctx *ctx = kcrtc->hw_ctx; - struct drm_crtc *crtc = &kcrtc->base; + struct ade_hw_ctx *ctx = data; + struct drm_crtc *crtc = ctx->crtc; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); void __iomem *base = ctx->base; u32 status; @@ -951,12 +953,14 @@ static int ade_plane_init(struct drm_device *dev, struct kirin_plane *kplane, return 0; } -static void *ade_hw_ctx_alloc(struct platform_device *pdev) +static void *ade_hw_ctx_alloc(struct platform_device *pdev, + struct drm_crtc *crtc) { struct resource *res; struct device *dev = &pdev->dev; struct device_node *np = pdev->dev.of_node; struct ade_hw_ctx *ctx = NULL; + int ret; ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); if (!ctx) { @@ -1006,6 +1010,14 @@ static void *ade_hw_ctx_alloc(struct platform_device *pdev) return ERR_PTR(-ENODEV); } + /* vblank irq init */ + ret = devm_request_irq(dev, ctx->irq, ade_irq_handler, + IRQF_SHARED, dev->driver->name, ctx); + if (ret) + return ERR_PTR(-EIO); + + ctx->crtc = crtc; + return ctx; } @@ -1027,7 +1039,7 @@ static int ade_drm_init(struct platform_device *pdev) } platform_set_drvdata(pdev, ade); - ctx = ade_hw_ctx_alloc(pdev); + ctx = ade_hw_ctx_alloc(pdev, &ade->crtc.base); if (IS_ERR(ctx)) { DRM_ERROR("failed to initialize kirin_priv hw ctx\n"); return -EINVAL; @@ -1059,15 +1071,8 @@ static int ade_drm_init(struct platform_device *pdev) if (ret) return ret; - /* vblank irq init */ - ret = devm_request_irq(dev->dev, ctx->irq, ade_irq_handler, - IRQF_SHARED, dev->driver->name, kcrtc); - INIT_WORK(&kcrtc->display_reset_wq, drm_underflow_wq); - if (ret) - return ret; - return 0; } From patchwork Thu Aug 1 03:44:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170290 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836170ile; Wed, 31 Jul 2019 20:45:02 -0700 (PDT) X-Received: by 2002:a17:90a:c588:: with SMTP id l8mr6221666pjt.16.1564631102774; Wed, 31 Jul 2019 20:45:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631102; cv=none; d=google.com; s=arc-20160816; b=fY0mX2w/F6VNvIZ4jSWiBUSG/vKtFnTSsTzhIU+ScGZaoCo+DPojIAkBrivXPZXpTE /qy24yepOLVs4R9nODkwe3UPiv1MmiwWoOrADCL0F/PQRleqcgeBlZWmo13P7ou2Ts2Z tyjp6fjw+MCJqJ1GDUPHEhJoTmSesXLBWfaiswmIughMS7rlH1EQ/62KUvDyrdQz4/2a ik+JA9+UmKUPv3SEzPcSAvuoQvGZmtT9P/eEQz3x45Xo7rNMecXqTjFsXqzZ+iBT6bv2 T7Vqd7yzOzCgzwcJfsXpT2rhDr2NaXNuBP8PbHjc60Ee64FXYpHPLJ91GYe0FKgb0+8w RK7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=F6mhNt9xKY3uV6IZqhaRNS+0qqJSN5zpoSD/eavy3uU=; b=ksq6+H3AmZIi7Vsw5Z6903t1ReZIe1rR53QKyPJ4QdTj8H/gMVZUZ6LJ3qM1plBA0f 5D3pBm0mW4UjPJKkfN+1AumbJEo0FCI5yWFCSm2JniPXhYK8YxonauAob58eF3YHXGFP nxLx+S3+DKpCfcJrNGlYDt0TNYccy8zm/wNh3EmxiRA2s7O6UV5keyQBZ34gSiqzywJz E5IHsd6NWDrDd2x0oi7hye9wFiUHqe9MCY/PuYls3XCY5pRjcUfVjMehGk7NkTxHpwsk 4EFj4K9ZDv1H5D09/6qE/cluSqoEyCHVrQ4afgrj2eMuV/I/OEDt18cHlfd0klG+m22X UAnA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vEzEX4JH; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id a3sor51357661pfo.61.2019.07.31.20.45.02 for (Google Transport Security); Wed, 31 Jul 2019 20:45:02 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vEzEX4JH; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=F6mhNt9xKY3uV6IZqhaRNS+0qqJSN5zpoSD/eavy3uU=; b=vEzEX4JHVuUi5sYWo6MR1DLYLnODyR9Lkq+GuIce+gy0uur0/q7RL3aqHaX60sB2QY e0vT1vQfQB3bxmbNeWqNTHaoJxk/z/Mr567FQbh3EVVuekusAb0zloFF5PbR8W8/f1uW G8vwxvMZtt2GoBiEwTUHQ5U6UJTEfwa98UVB8mimPQphNKA4h6Fio4aEHXmUgz+/Gx8H yoQjKUIehHdbRSvgLX5jcXqYYRfqE88vbn8IHAe3WQXjHUurf1B4FRZUOhc7Y4DSl+lW 86BsFdYSqDfLWQe1fr/jA1WUeGK+v+9v8IfI8BJMI741YvdP+y+A9a63vDkGZjWePEWh 94vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=F6mhNt9xKY3uV6IZqhaRNS+0qqJSN5zpoSD/eavy3uU=; b=jH/LSZNIQjhy85kTENrOAIWCOccYWE1ZSFuMb7Mf+Zpv3oLXyvmQ2Adx7uPVEvVxw4 lokoFgjVVV9yGjXhs5/9CKRw55ieP2KE8VfavxEIU3wouxuAuKdNbTjMOdH8iSFYjTCb wS9PM2oak+uWUWaDw/mA3SXXmxcc8uN70TnbZ5TwatGijEu3Itj0Q5ZcLaMalTwozWYS tAJSLX4L+eQLGiQm1R2IoDRLQ/IGQyG8kJcZsIdUSGRLuIOfyweWeK8v1LJi03MMvMc4 uap8wxoxhi5rXABPlq+BjsmITpMdsmdZOnvNBTzjVkuydZPOOD/+IRZzOD5eFGGn1ssY rj7Q== X-Gm-Message-State: APjAAAXFJ4CzKAA9QZREYg6Ztl8kou02ghRI6ncLEKb05UbfFqQdpFqq +XNHmzxiQL7SB3pr5RZb+ySNuI+p X-Google-Smtp-Source: APXvYqzUf9MX/78dPWJhL5pQmUlIgIXdOyov3muaXgm6GM6xJ64ZGPwiBUJA5inxS8yWFTdCXCsnuw== X-Received: by 2002:aa7:93bb:: with SMTP id x27mr52442349pff.10.1564631102402; Wed, 31 Jul 2019 20:45:02 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.00 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:01 -0700 (PDT) From: John Stultz To: lkml Cc: John Stultz , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg Subject: [PATCH v3 11/26] drm: kirin: Move workqueue to ade_hw_ctx structure Date: Thu, 1 Aug 2019 03:44:24 +0000 Message-Id: <20190801034439.98227-12-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> The workqueue used to reset the display when we hit an LDI underflow error is ADE specific, so since this patch series works to make the kirin_crtc structure more generic, move the workqueue to the ade_hw_ctx structure instead. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 0e0fe1cb945f..ec4857e45b6e 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -52,6 +52,7 @@ struct ade_hw_ctx { struct clk *media_noc_clk; struct clk *ade_pix_clk; struct reset_control *reset; + struct work_struct display_reset_wq; bool power_on; int irq; @@ -61,7 +62,6 @@ struct ade_hw_ctx { struct kirin_crtc { struct drm_crtc base; void *hw_ctx; - struct work_struct display_reset_wq; bool enable; }; @@ -349,9 +349,9 @@ static void ade_crtc_disable_vblank(struct drm_crtc *crtc) static void drm_underflow_wq(struct work_struct *work) { - struct kirin_crtc *acrtc = container_of(work, struct kirin_crtc, + struct ade_hw_ctx *ctx = container_of(work, struct ade_hw_ctx, display_reset_wq); - struct drm_device *drm_dev = (&acrtc->base)->dev; + struct drm_device *drm_dev = ctx->crtc->dev; struct drm_atomic_state *state; state = drm_atomic_helper_suspend(drm_dev); @@ -362,7 +362,6 @@ static irqreturn_t ade_irq_handler(int irq, void *data) { struct ade_hw_ctx *ctx = data; struct drm_crtc *crtc = ctx->crtc; - struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); void __iomem *base = ctx->base; u32 status; @@ -379,7 +378,7 @@ static irqreturn_t ade_irq_handler(int irq, void *data) ade_update_bits(base + LDI_INT_CLR, UNDERFLOW_INT_EN_OFST, MASK(1), 1); DRM_ERROR("LDI underflow!"); - schedule_work(&kcrtc->display_reset_wq); + schedule_work(&ctx->display_reset_wq); } return IRQ_HANDLED; @@ -1016,6 +1015,7 @@ static void *ade_hw_ctx_alloc(struct platform_device *pdev, if (ret) return ERR_PTR(-EIO); + INIT_WORK(&ctx->display_reset_wq, drm_underflow_wq); ctx->crtc = crtc; return ctx; @@ -1071,8 +1071,6 @@ static int ade_drm_init(struct platform_device *pdev) if (ret) return ret; - INIT_WORK(&kcrtc->display_reset_wq, drm_underflow_wq); - return 0; } From patchwork Thu Aug 1 03:44:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170291 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836232ile; Wed, 31 Jul 2019 20:45:06 -0700 (PDT) X-Received: by 2002:aa7:81d4:: with SMTP id c20mr51215567pfn.235.1564631106044; Wed, 31 Jul 2019 20:45:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631106; cv=none; d=google.com; s=arc-20160816; b=OJeInfBl78nVDgMOl0tbkoKGOovTmjlMfZ/+N6ggjZBUzyDb9ffdm51mIreIG1/SZf SZ2VZdZTb4Y3yGtAFFKOVcMiy3Qam+7GhOJZ6Vr2P/GI93JHmK/SYVVrEvkycR/pM2jR uQ/MKcaVNfmtrioej+U5OeN3tTV6rPGexhI2Wcdaqh7YsdiicZqyByzGYs5um7vv9jIk MMUyYDebCURa9/b2nunETyfH9ZRV1Lx/3LGChZNi3LgP8tRQKD55Yc1DnlNayfSnaf4M oVvoqed2s5Yq4sKFOFETTyEtuLNRn14hVKnkzR8nf5XyHpEQDL+CIVfvFDNibK1gK0E4 gwBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=FV+Ip5UJVFLvXV2Kbx6mP8jgdekGleioA3N1UoXWC+U=; b=0+ZuW6IiPnIV5JNPs46Oo25kftx0wEa59FDAEa0Vqa+GeNcqJ0gNEOK/AQisnPFQkB NIiTb0mbuY/YJpDLFcRDOtiz51JJiEAyB8hvxwacss9+xzfkcOBLbZdTZzHUzIx9yX8K 1sIyZYp+Z35RGiAn3tCqRB7yM2hYBLnzTLH2hxYWZmlOk32b+zttIuNxlKfVfoAIIQ8K xKT/nhEMjhiNZGu40GijPAWkU1e7pH9+CUdtZKVC3VAcILpJ33Zn5OkRNtzD2rRvuV8b k0mz/9uTGGzOL/DffoP3AzLyn+OU3k+C/r5cb2hGGBCJdWWnFqBRfEx9hZUP6sdYesou W6kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=uHlnFrgC; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id z142sor51032290pfc.31.2019.07.31.20.45.05 for (Google Transport Security); Wed, 31 Jul 2019 20:45:06 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=uHlnFrgC; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FV+Ip5UJVFLvXV2Kbx6mP8jgdekGleioA3N1UoXWC+U=; b=uHlnFrgC8+6Hfx3oZ5a9WhLfAgD+Y92NSQA89mb3ow8hsetvrvjs1DXJqOSilKtF0w TxSk2bWONbISR+w93knaEIZLQF2wPtpRx6eRi7kwtfpEhi4Auw17HwGJv9KybM3hSVoA 0ZhJCRbwtDI6O0HBojX4g880aVI7TWIpvtdkgTOxBglM8ve1niAjB0BH+ZkZ8RQLT93z iP4kqyzWPA/f+w59h08TZL9M4Jw4qGanPUfn1ZYyr2g0fmeCuVvT0NtSP2fw3YhiG43W n0PsKHdzC9QJZ8SqbqGdfq5AKd/juAs/9kGGeqpSMmYrrASeJJs5bu1t/zBs3UbHkryo dLMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FV+Ip5UJVFLvXV2Kbx6mP8jgdekGleioA3N1UoXWC+U=; b=TnigJ1j/tdtzVuztue64DxU1tzVHiN0SsRkVn59QJYdRDgvqZKMfwfLw1B3hjryOR2 QJoIE/Y8eldyRXIJaiyUJw4RFaB/kPGKyruZaXkNic+ZCGw6Qu1NyqU9bmJdqmpy3nx+ jcKwdadG0LGDSlyfeL3SV2xDHiFo11Y5r50JmSHnzuvfcOR5/gLJfL4X1Ud0qGNJc7p1 vzoVGqfnq/lldaROf9tUHRGIWPCSx2tJ223T8m/Z5KMlUhQcSZfJRAGZKYn0MBExsWPI dyrrS70B8FcUky0FcfE4DDBgS3onMDPVoO1f9LO+gzkxmwZSgGO59xXACLBhaaO3VzpC gtTw== X-Gm-Message-State: APjAAAUJYGeRRCo20LCitkcCwMfCzOB7gfWRE8YzrfADYGbwV3YGRoUm +gAeCiH+1lfQ1WwhLC0diaCdgy6J X-Google-Smtp-Source: APXvYqxvh6sg9DNxbgSmyTVWeayZICBhMnV4QBgK8vE6UF4xYdS0IxloUbKEFvIE6TntZDtyx76h2g== X-Received: by 2002:aa7:85d8:: with SMTP id z24mr42260227pfn.218.1564631105631; Wed, 31 Jul 2019 20:45:05 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.03 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:04 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 13/26] drm: kirin: Reanme dc_ops to kirin_drm_data Date: Thu, 1 Aug 2019 03:44:26 +0000 Message-Id: <20190801034439.98227-14-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch renames the struct kirin_dc_ops to struct kirin_drm_data and cleans up the related variable names. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 2 +- drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 16 ++++++++-------- drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 3ad1e290bf58..acae2815eded 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -1055,7 +1055,7 @@ static void ade_drm_cleanup(struct platform_device *pdev) { } -const struct kirin_dc_ops ade_dc_ops = { +struct kirin_drm_data ade_driver_data = { .init = ade_drm_init, .cleanup = ade_drm_cleanup }; diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index bfe0505ac4a0..60c164623f56 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -28,12 +28,12 @@ #include "kirin_drm_drv.h" -static struct kirin_dc_ops *dc_ops; +static struct kirin_drm_data *driver_data; static int kirin_drm_kms_cleanup(struct drm_device *dev) { drm_kms_helper_poll_fini(dev); - dc_ops->cleanup(to_platform_device(dev->dev)); + driver_data->cleanup(to_platform_device(dev->dev)); drm_mode_config_cleanup(dev); return 0; @@ -67,7 +67,7 @@ static int kirin_drm_kms_init(struct drm_device *dev) kirin_drm_mode_config_init(dev); /* display controller init */ - ret = dc_ops->init(to_platform_device(dev->dev)); + ret = driver_data->init(to_platform_device(dev->dev)); if (ret) goto err_mode_config_cleanup; @@ -98,7 +98,7 @@ static int kirin_drm_kms_init(struct drm_device *dev) err_unbind_all: component_unbind_all(dev->dev, dev); err_dc_cleanup: - dc_ops->cleanup(to_platform_device(dev->dev)); + driver_data->cleanup(to_platform_device(dev->dev)); err_mode_config_cleanup: drm_mode_config_cleanup(dev); @@ -196,8 +196,8 @@ static int kirin_drm_platform_probe(struct platform_device *pdev) struct component_match *match = NULL; struct device_node *remote; - dc_ops = (struct kirin_dc_ops *)of_device_get_match_data(dev); - if (!dc_ops) { + driver_data = (struct kirin_drm_data *)of_device_get_match_data(dev); + if (!driver_data) { DRM_ERROR("failed to get dt id data\n"); return -EINVAL; } @@ -215,13 +215,13 @@ static int kirin_drm_platform_probe(struct platform_device *pdev) static int kirin_drm_platform_remove(struct platform_device *pdev) { component_master_del(&pdev->dev, &kirin_drm_ops); - dc_ops = NULL; + driver_data = NULL; return 0; } static const struct of_device_id kirin_drm_dt_ids[] = { { .compatible = "hisilicon,hi6220-ade", - .data = &ade_dc_ops, + .data = &ade_driver_data, }, { /* end node */ }, }; diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index d47cbb427979..cd2eaa653db7 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -34,11 +34,11 @@ struct kirin_plane { }; /* display controller init/cleanup ops */ -struct kirin_dc_ops { +struct kirin_drm_data { int (*init)(struct platform_device *pdev); void (*cleanup)(struct platform_device *pdev); }; -extern const struct kirin_dc_ops ade_dc_ops; +extern struct kirin_drm_data ade_driver_data; #endif /* __KIRIN_DRM_DRV_H__ */ From patchwork Thu Aug 1 03:44:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170292 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836272ile; Wed, 31 Jul 2019 20:45:07 -0700 (PDT) X-Received: by 2002:a17:90a:c588:: with SMTP id l8mr6221982pjt.16.1564631107872; Wed, 31 Jul 2019 20:45:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631107; cv=none; d=google.com; s=arc-20160816; b=Lbt5xAaGOHnMgIhw4q6ebPWFHuEIcUF1XiAChFEDH4P1ylq1ZxcEd1O7IK6pGPaAES 9Qo5nL9OqDN8G89Ct9Fw9Qeqv8ygTV59E8irP6U2XSo+v/rOM+b+9/8AcCI54uV1/ASw V6Xw+NHdstERFIOSdLF1juwaFjFpWeFr49lCerb1l/t57FOJ/z6CEbFtZTXr95YY/n0j wioiu76KRndHryEvo0vOpb5gcFdkh3x1aVbUOPZv+swcb0NSUERlQYCqP1H0gSh5ZkeX asxE04i8NCuNP3XKde6ZMIFMoDioqRvhi+vJqjmJECUe3WKDGnoE/pcXuFeij6I5xaPy LW1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=sPsp2eqITZnw2b8QC7bn0VV3MJP+delfGQJVfFYbiRk=; b=sJ3TyJCO6SA2ZUT/WeEe4wgriLOs1zfSM8spczLNSC7oeNqLZtk+UAnvSf2pn/Lnbc cs6uKWooqdLKaHu/foa5ftnYDYMRBX31LuoNImAYnLNRM7w+lI2YRWBD5JWQckg24rbX ir8VibIy+X0e9AkPV11TfpXScTaN937U+zgOPjbsdecqJ0gxHiY7L6WjxHCztbFEZPDp JDwkL4wFxl/h+1J5XKohuX9dLlElUopb3M49XHW+3x8OrDcVujxbNjMcDVeE3hreD2Ud LGNaH9+fP6kmsph71CYly1yIi3iBu9qTtxivt4IKPzBPn4zXS/k5uxBdEfSrn1HPaZNm u04Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dc3g+ccV; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id q4sor52308312pfh.9.2019.07.31.20.45.07 for (Google Transport Security); Wed, 31 Jul 2019 20:45:07 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dc3g+ccV; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sPsp2eqITZnw2b8QC7bn0VV3MJP+delfGQJVfFYbiRk=; b=dc3g+ccVISsD+XlJfNn6R+VKW6AYYAiONlIwe8IU3AI6iT5eUtwLhaCJbpLJzy4AmG JOLlaIB3eOSsJgUD2NpkU5i6OprDNKMJsnqPjgnhA5SzrHyNmul1V63b2JlhqtKgjaBy MeKUEwl22xTMvmP6z3Zb/x4Uv3k0S90nDT1h5sAnjEOY1Nn6jCZm3lZcNd/FBKJLoqI2 Erbb7yS7qNkSo/m2YvpQ2vjqbVOIiLch05MzYqUN8WKeevWeK6P7FTuO5T6xJ6q/bK4H ac3vpQXKQaUmJf++/N6I04Sbo1rCscRkHBoFaWkSrOkbuwVtKqYWwLmhO/tprDj2HQ5Q BHUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=sPsp2eqITZnw2b8QC7bn0VV3MJP+delfGQJVfFYbiRk=; b=WSKdl/abjVACnlqcPjITl53hge3g6P7+4BxBlV95FlwUXqiD0BnjWHmEolS1wvQXhn RR6JIRctWNLRs1mIaE07deymwLr7AsaIORlm7Ziyejx0h2Qg8UJWfO0IWxBedUBBHGWN NQGPeeTwSPURHPOTqKuvjDNYGq/p+1XfWsZunKxIrOrEPYV+61MAFK33tLPXvD2EZ7G2 m7SsRtOKQ1c930NYzuuUw6vBk/RtFswknB/mF1QCrBwlrgu2rvL3uBYGE6uR8OmbjTnR zvGMiU+PEVXjpoCn8EuJalvfUrnghqIwBEIxLKILeIdNyktjDxytJ9hPjJkCN4f2wdRo coUQ== X-Gm-Message-State: APjAAAWrZdsTK5dvc+bg6d7LY/H+2CTZLuJm1tt55D185PuouyK0FKWM ooGw3lpPOPGemtDwV8xP/zROOs5F X-Google-Smtp-Source: APXvYqz9J417rd70yrAxKPQ3YRSZltq4+t8BRMIPsxRjNDEPI645+q4kTkFqUGRKHPTAlVKDPrfaxQ== X-Received: by 2002:aa7:81d9:: with SMTP id c25mr51766726pfn.255.1564631107496; Wed, 31 Jul 2019 20:45:07 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.05 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:06 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 14/26] drm: kirin: Move ade crtc/plane help functions to driver_data Date: Thu, 1 Aug 2019 03:44:27 +0000 Message-Id: <20190801034439.98227-15-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch moves the crtc and plane funcs/helper_funcs to the struct kirin_drm_data. This will make it easier to add support for new devices via a new kirin_drm_data structure. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 15 ++++++++++----- drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 5 +++++ 2 files changed, 15 insertions(+), 5 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index acae2815eded..029733864aa8 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -602,13 +602,13 @@ static int ade_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, crtc->port = port; ret = drm_crtc_init_with_planes(dev, crtc, plane, NULL, - &ade_crtc_funcs, NULL); + ade_driver_data.crtc_funcs, NULL); if (ret) { DRM_ERROR("failed to init crtc.\n"); return ret; } - drm_crtc_helper_add(crtc, &ade_crtc_helper_funcs); + drm_crtc_helper_add(crtc, ade_driver_data.crtc_helper_funcs); return 0; } @@ -917,14 +917,15 @@ static int ade_plane_init(struct drm_device *dev, struct kirin_plane *kplane, if (ret) return ret; - ret = drm_universal_plane_init(dev, &kplane->base, 1, &ade_plane_funcs, - fmts, fmts_cnt, NULL, type, NULL); + ret = drm_universal_plane_init(dev, &kplane->base, 1, + ade_driver_data.plane_funcs, fmts, + fmts_cnt, NULL, type, NULL); if (ret) { DRM_ERROR("fail to init plane, ch=%d\n", kplane->ch); return ret; } - drm_plane_helper_add(&kplane->base, &ade_plane_helper_funcs); + drm_plane_helper_add(&kplane->base, ade_driver_data.plane_helper_funcs); return 0; } @@ -1056,6 +1057,10 @@ static void ade_drm_cleanup(struct platform_device *pdev) } struct kirin_drm_data ade_driver_data = { + .crtc_helper_funcs = &ade_crtc_helper_funcs, + .crtc_funcs = &ade_crtc_funcs, + .plane_helper_funcs = &ade_plane_helper_funcs, + .plane_funcs = &ade_plane_funcs, .init = ade_drm_init, .cleanup = ade_drm_cleanup }; diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index cd2eaa653db7..70b04e65789c 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -35,6 +35,11 @@ struct kirin_plane { /* display controller init/cleanup ops */ struct kirin_drm_data { + const struct drm_crtc_helper_funcs *crtc_helper_funcs; + const struct drm_crtc_funcs *crtc_funcs; + const struct drm_plane_helper_funcs *plane_helper_funcs; + const struct drm_plane_funcs *plane_funcs; + int (*init)(struct platform_device *pdev); void (*cleanup)(struct platform_device *pdev); }; From patchwork Thu Aug 1 03:44:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170293 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836308ile; Wed, 31 Jul 2019 20:45:09 -0700 (PDT) X-Received: by 2002:a17:902:6b07:: with SMTP id o7mr120440754plk.180.1564631109418; Wed, 31 Jul 2019 20:45:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631109; cv=none; d=google.com; s=arc-20160816; b=qlmIlTcfltP1qssCyp4u7i22vxiwsIxHQ7/8UuRxoHao7oH+nfhgy2sp/nl/IPBOrN MoT8hU0Nvz7IrryaN7nLJOHNH/rQnPrKf3nYIgwd3dIUyuwM/mobSk/Zr+CYpGXtUfpc iT5g1SbZRvnjmCNPCzzXiNa1H++s4VtMXDHIPpraWon/dHs1xWG3R6EEQpwZqLUFZ0p0 lBlhT73Kctply6vtss31axVsYo+0a1kpN9Eddjq2drbrZNFMt7fjP1AjD+tCmDgSqFaL 5gSJo5E7FNtwqSS3/Bb7uQv3iD/Jmh4DyAfHA4YBmMqC+IREom0ymvJ94ItXXxit4jTt e6kA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HDJvJkGt16A9xh+oJ/V6cF1p90cprtRCL0cPwhoe3KU=; b=Q6ehKizjPl1hcDv3NesIpRqMhdQSL2Csfxd0F77FGE/qE4skn2+pHFvEDh7pHId28R x/Ih1ZwL2GYixqGze7r/Mtfs8i7tG1pAOmq9Xqmhcyce8HH6aNUYN8r9X34fS5bP00lp zm28Inbyes+L6Nl9llFmBDA7jyeTpq9WeAgcFunE6yAcgTacmSpk9AzlCJV91V3ZoePe b+qKqO6McvYZGnnkCD+vQbPXBLEj2a1Be3Bup48lDgcqGGqI8FgifphxQR2RXoHjV9K3 eX2fHUOjohfusevMCVoCJOZO9ti9msV6Ues8p5ko42UWvzGciMHseDMN5y9OjOFY4b8A baXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Wym2MUS5; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id r4sor83878318plo.57.2019.07.31.20.45.09 for (Google Transport Security); Wed, 31 Jul 2019 20:45:09 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Wym2MUS5; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=HDJvJkGt16A9xh+oJ/V6cF1p90cprtRCL0cPwhoe3KU=; b=Wym2MUS5YK2BPc9KkQ7bWTa8b+pG1A+eWp2ZaWaawXbnATIPYTCjougDcNO1ggC5C1 ePXAj6Pvjjtt40YpLKEKKb23byuUWI3VKusNx1KjeSgBi2Weq68ttAOWhrgnyAJN62CJ AVpUXrLXNBERAeKf6d5/fOpR1drsQta+SUPrNUzRoBwnc/SNuEA4ZWbdl6ZFdLpIPd2v IKRGJX6wh6cYpRIx6D5KRCTVLD2DGezV2k9z7Yq57cSzad1wthBhLmZ3X/xnVQ6J/xbh /vouDxjP4jImvR/uBuQQA8qL36pa0TUN3HL95BYb4QUnWG/QcATvsUOvoMvm9Vrgfblb FTqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=HDJvJkGt16A9xh+oJ/V6cF1p90cprtRCL0cPwhoe3KU=; b=ocYiakZS5pvVNidbNE+P2s+3wZIOPI8x0NBdioCQyx4yKNXBdRbtvSEbx2KFa05ltB 10LD9InMWvQwJvJgFZJcEm8usexju1EaYvKBxW5EReDtyfya6nrSplEBWfWZn+iaocjv Gq77P2m+Y0WzSeBaWFgFqv59JhMG2n3y7pWQ/p6ym9AqQJNXwDErw/6KexwdPX3Zrp8V k9osQRCTNrxafaRXqf4VGJFHMoo66tzoOSUdD5L+CVIzpAzoTR+1K+SWOAAWP63HKC+k Hc1bEdVP6A3e/tWHrdB7Dz7/SMWs3qQALrIlxAeAvZaCkMsENWHudiNiSpy9azxP7Q4q EWhg== X-Gm-Message-State: APjAAAUgjRkHDs33GZ8pJ7bFqpc7Rh/TNbpgEUC5CWtsBBj/IKF5pitX ckTXRIr3r4gyrTC2fUI6YRJ2nKIR X-Google-Smtp-Source: APXvYqwyN9aTnd/ybC4ZOD7D2YlGwTywueZyug//Dj/lnSuPvgbMF+ELyqVChUrqIadiHW1xHsdSDA== X-Received: by 2002:a17:902:306:: with SMTP id 6mr125220747pld.148.1564631108989; Wed, 31 Jul 2019 20:45:08 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.07 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:08 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 15/26] drm: kirin: Move channel formats to driver data Date: Thu, 1 Aug 2019 03:44:28 +0000 Message-Id: <20190801034439.98227-16-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch moves the channel format arrays into the kirin_drm_data structure. This will make it easier to add support for new devices via a new kirin_drm_data structure. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 30 +++++-------------- .../gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 3 ++ 2 files changed, 10 insertions(+), 23 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 029733864aa8..99dfd15af771 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -76,7 +76,7 @@ static const struct kirin_format ade_formats[] = { { DRM_FORMAT_ABGR8888, ADE_ABGR_8888 }, }; -static const u32 channel_formats1[] = { +static const u32 channel_formats[] = { /* channel 1,2,3,4 */ DRM_FORMAT_RGB565, DRM_FORMAT_BGR565, DRM_FORMAT_RGB888, DRM_FORMAT_BGR888, DRM_FORMAT_XRGB8888, DRM_FORMAT_XBGR8888, @@ -84,19 +84,6 @@ static const u32 channel_formats1[] = { DRM_FORMAT_ABGR8888 }; -u32 ade_get_channel_formats(u8 ch, const u32 **formats) -{ - switch (ch) { - case ADE_CH1: - *formats = channel_formats1; - return ARRAY_SIZE(channel_formats1); - default: - DRM_ERROR("no this channel %d\n", ch); - *formats = NULL; - return 0; - } -} - /* convert from fourcc format to ade format */ static u32 ade_get_format(u32 pixel_format) { @@ -908,18 +895,13 @@ static struct drm_plane_funcs ade_plane_funcs = { static int ade_plane_init(struct drm_device *dev, struct kirin_plane *kplane, enum drm_plane_type type) { - const u32 *fmts; - u32 fmts_cnt; int ret = 0; - /* get properties */ - fmts_cnt = ade_get_channel_formats(kplane->ch, &fmts); - if (ret) - return ret; - ret = drm_universal_plane_init(dev, &kplane->base, 1, - ade_driver_data.plane_funcs, fmts, - fmts_cnt, NULL, type, NULL); + ade_driver_data.plane_funcs, + ade_driver_data.channel_formats, + ade_driver_data.channel_formats_cnt, + NULL, type, NULL); if (ret) { DRM_ERROR("fail to init plane, ch=%d\n", kplane->ch); return ret; @@ -1057,6 +1039,8 @@ static void ade_drm_cleanup(struct platform_device *pdev) } struct kirin_drm_data ade_driver_data = { + .channel_formats = channel_formats, + .channel_formats_cnt = ARRAY_SIZE(channel_formats), .crtc_helper_funcs = &ade_crtc_helper_funcs, .crtc_funcs = &ade_crtc_funcs, .plane_helper_funcs = &ade_plane_helper_funcs, diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index 70b04e65789c..66916502a9e6 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -35,6 +35,9 @@ struct kirin_plane { /* display controller init/cleanup ops */ struct kirin_drm_data { + const u32 *channel_formats; + u32 channel_formats_cnt; + const struct drm_crtc_helper_funcs *crtc_helper_funcs; const struct drm_crtc_funcs *crtc_funcs; const struct drm_plane_helper_funcs *plane_helper_funcs; From patchwork Thu Aug 1 03:44:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170295 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836383ile; Wed, 31 Jul 2019 20:45:12 -0700 (PDT) X-Received: by 2002:a17:90a:206a:: with SMTP id n97mr6208045pjc.10.1564631112689; Wed, 31 Jul 2019 20:45:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631112; cv=none; d=google.com; s=arc-20160816; b=R2l0joozc9gYhjpZhAgfbMb30mdTtd9XzDKOGJMQFP7sbXQBVy/AkYW3N62U4RDMIz clvOYKfjGW+PjNn6YkQq7WOYAyC74FOrwDNdSRrWuYLrxUKCu6WbMBXzHKXoPKMRaSyq urCyTsXliVzPTMxS+oWJR9NK8AK2UKsO3jBH+w3d+5wG5FqHhBJKLEz+fbjE+XvdWkIL mYDGw49r7Z2TqYvVLPPiUiDmDj817VQZwXCzbVY2qMKu+EK3I4t+Jia1nj3ByNVZC7LD oHNm5EjMKjzkO3XQSvtxzBeHJM44LjWqqq77N/xwUkOztK9XqTE1Ir0oU9KBWCM0FvML AMkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=lvGyWsNyP9Bb7DvqACymLRZDyyMjKAZBXEluuc9xeZo=; b=CXHiluCF5gbx2+wZewClAKe7jpv6I9P+2Ewfi7vmPp8xFYSwgqJVBtn+8t9R2idCe6 jrWd2msCBilQdRWheMQnkBYGN0vPCatu70eCQhOv5dPoDM8WEvXThK63jc0uzVsvvO24 R6D9GUp/tNBYTUPCXaJKNsJP/CuHnGG660n+Z1vPlCrpEbvwNo6O7coC/CxTTb1y4B9U KkMxyAo21EqinFwQl9WGf7KC1dBsfBulhgQ3/16Ob/PYE6gxL4BiF6qGGK+MDyoPfKmn GgWylsWi2BHcPkmGhoDIfDMsZqPcGcrIvLm4DWPiX//wiliBJHQN6xP10aYFASfyvzr4 x/0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=CpdAgIcn; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id t4sor86085018plq.45.2019.07.31.20.45.12 for (Google Transport Security); Wed, 31 Jul 2019 20:45:12 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=CpdAgIcn; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lvGyWsNyP9Bb7DvqACymLRZDyyMjKAZBXEluuc9xeZo=; b=CpdAgIcnEs1v23uEn8j393vhUG7E5P7b2dTor0b0ONtrkdl+hYKhIpnkkCubMGKMZV VOaAdqQKwfl87lx5n4WHIlP0bR4JOc2tetuKP68OFxD5m1APnFeoZCl3zU109lzr4Bm8 mBifG3ZBmjOFszCeB/XiWO8Z+5KdbK+61O+hql3YC7yQdXicqiLW36RXNA/mOBnZSpPh mpuuaHrQ4I4LKbLf27A1tVEhOiAGSp5Uh5e5LN2vhwaKmyVhcIqto9sUnT+EEk/FFK9y ze/JyJmacR+OS8H4uTNBDIzhHJ15RX5wqmBMNO5XSZ3A6ZyqWIlaesIfCqWSggdvJBFX dvGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=lvGyWsNyP9Bb7DvqACymLRZDyyMjKAZBXEluuc9xeZo=; b=RAs9UGqLUT+NUM5mh8eHGXLSNQtgUCEraa0vm9IGk1F8JjwShih+083+yXXBzXophN RckRKQEvS8rfIuwxDMPRVrHvmnCkSS/IvpfB/7xLxvbTVNJ8ViVi7tcytK5X9XodvL9v w8RJrFkWDAoZLjb/q2grnZnSHXxQkl49NhsK3o2hYP62VY4P0vKn8m7WZp4rQ6AeHdXV urH3NH9jbqdYocx0adh1BvL6AUn4njPr55oC48G4Ejn3ZByRu3KRUjuNwA0c1TYwfA8F AIEsyuFA+9r62jcdb1ANxviohRnVGKQgz4RJOr2PNsXgalhI6G5sgRdLJtvVETR3QjuB Uu+Q== X-Gm-Message-State: APjAAAVoeKhC77Z6QNW6gdEfAp6CBNym9bJAZxSEb22Xhd7GmhQJ7BTm RRzbV//5dFU7/BQmNgvKTyH0EGde X-Google-Smtp-Source: APXvYqylc9ummDBci5gA3r5mxBzsQHl8bSaQwM8mWZUpp1YAXcP9uhE5n/+pzVs3T0qqoxO5HW5crw== X-Received: by 2002:a17:902:724a:: with SMTP id c10mr115381435pll.298.1564631112233; Wed, 31 Jul 2019 20:45:12 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.10 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:11 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 17/26] drm: kirin: Move plane number and primay plane in driver data Date: Thu, 1 Aug 2019 03:44:30 +0000 Message-Id: <20190801034439.98227-18-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch moves the number of planes and the primary plane value to the kirin_drm_data structure This will make it easier to add support for new devices via a new kirin_drm_data structure. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 21 ++++++++++++------- .../gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 2 ++ 2 files changed, 15 insertions(+), 8 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index bca080e14009..fc0f4c04d1c9 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -35,7 +35,6 @@ #include "kirin_drm_drv.h" #include "kirin_ade_reg.h" -#define PRIMARY_CH ADE_CH1 /* primary plane */ #define OUT_OVLY ADE_OVLY2 /* output overlay compositor */ #define ADE_DEBUG 1 @@ -991,7 +990,7 @@ static int ade_drm_init(struct platform_device *pdev) struct kirin_plane *kplane; enum drm_plane_type type; int ret; - int i; + u32 ch; ade = devm_kzalloc(dev->dev, sizeof(*ade), GFP_KERNEL); if (!ade) { @@ -1015,12 +1014,15 @@ static int ade_drm_init(struct platform_device *pdev) * TODO: Now only support primary plane, overlay planes * need to do. */ - for (i = 0; i < ADE_CH_NUM; i++) { - kplane = &ade->planes[i]; - kplane->ch = i; + for (ch = 0; ch < ade_driver_data.num_planes; ch++) { + kplane = &ade->planes[ch]; + kplane->ch = ch; kplane->hw_ctx = ctx; - type = i == PRIMARY_CH ? DRM_PLANE_TYPE_PRIMARY : - DRM_PLANE_TYPE_OVERLAY; + + if (ch == ade_driver_data.prim_plane) + type = DRM_PLANE_TYPE_PRIMARY; + else + type = DRM_PLANE_TYPE_OVERLAY; ret = ade_plane_init(dev, kplane, type); if (ret) @@ -1028,7 +1030,8 @@ static int ade_drm_init(struct platform_device *pdev) } /* crtc init */ - ret = ade_crtc_init(dev, &kcrtc->base, &ade->planes[PRIMARY_CH].base); + ret = ade_crtc_init(dev, &kcrtc->base, + &ade->planes[ade_driver_data.prim_plane].base); if (ret) return ret; @@ -1047,6 +1050,8 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = { }; struct kirin_drm_data ade_driver_data = { + .num_planes = ADE_CH_NUM, + .prim_plane = ADE_CH1, .channel_formats = channel_formats, .channel_formats_cnt = ARRAY_SIZE(channel_formats), .crtc_helper_funcs = &ade_crtc_helper_funcs, diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index ce9ddccc67a8..2b660df60293 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -37,6 +37,8 @@ struct kirin_plane { struct kirin_drm_data { const u32 *channel_formats; u32 channel_formats_cnt; + u32 num_planes; + u32 prim_plane; const struct drm_crtc_helper_funcs *crtc_helper_funcs; const struct drm_crtc_funcs *crtc_funcs; From patchwork Thu Aug 1 03:44:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170296 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836403ile; Wed, 31 Jul 2019 20:45:14 -0700 (PDT) X-Received: by 2002:a17:902:23:: with SMTP id 32mr36812774pla.34.1564631114068; Wed, 31 Jul 2019 20:45:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631114; cv=none; d=google.com; s=arc-20160816; b=HZmDRbZtAWtofPZd4QX2eTHVo1xtwAEDC7/jY9ZpnTiL7DlZp90vrobZcVWvK0Ni0s aAEH8ZsBTgDrbVSYx2v68K7LBuYZQGC52hP5r71vq9HupTKZYMgtPAmC6xRiSYhdyhOh xsAwtK/dXYV0g07D/yFrl40/fKfvMRNWdwXEU42m4veFSRQ+Qo+sdZiq3bBzy8qrsV26 a5JpFmCjhZYMmoXEEHyMYp9tLG3eSyQcxmmjs+zPqxaulkuOniVmhrnZp5jvdxE36src tQs3J85n+pHIb7w0Gt3j62BuwPB76gyJVcefSVqyN6jTL+w/iiNk715NgVDtddwNNE7h ntcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=dQGpl/nhmhJMZKv4Vo2Ohuy0f7yCwYFz4OhCfH7eIeY=; b=KwhYe8w6TZikV9CMvFou2492B0EevVa3/x4Aao1g6hAFmIUpghkDqh7ZNyHjpmfRV/ IBttGjZCKK17EhqpQOSFNrAtEc3cysAGqlz39leAmLj28P/45DHfQwEnBvAPPV2e8gVL cgKM/0Y1DCCNkSEt60PXqNA6MIhiefOOyOWB/0DM/0J75710hMyr5Vu4CHYHClwJ7Kmv f7lM6UmfbD9g/rQVyrJ7PwaZ+5bYaOXV4/bJ40n8bn3F3svGQmSryM6wUQlL4oNJ3MIv NC0rs7tCmlufo+G3cId+r+JlH7OTWP6LR2TB0Ml67otB+rNQL8UMCXEyuphKnfE3sK0p DNdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ml5jZwzg; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id r27sor51794468pfq.73.2019.07.31.20.45.14 for (Google Transport Security); Wed, 31 Jul 2019 20:45:14 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ml5jZwzg; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dQGpl/nhmhJMZKv4Vo2Ohuy0f7yCwYFz4OhCfH7eIeY=; b=Ml5jZwzgL9rml4OFZjIub8zA/hmbDsOyOb5pgnwxP8CMB7+tMg38nXgrLV9QItM0En qKnXPeARSc4hO5vYz3U72ZS+AbG/jki8te5+3Pa36+Hi5RXUTdXBYD+4DT3Lht1i1d9I IgweV9STmp3PcjCZXgsTo+4sQj/B5CBB6+Ke8iqJqTokeJMdeN633a0emO7H0aLkXTGr Rs1GxKc91yTpK7K8rqrAOot9Lc9/qJal+/7iafr7L03c2VHcbKHxv5l8+Q+byqBX7JXK S1l68eVlYRWBEQAMu3OLAuLVld+I8FgFipQTXxzEL7CloNqZ0dbQ9uTV3RX1C/NH6qq2 CLBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dQGpl/nhmhJMZKv4Vo2Ohuy0f7yCwYFz4OhCfH7eIeY=; b=S3sKdqQxpF9yZS+uvHYOaMe8Fb9Kv1X8BryaI61C5saLCc59uXjTOh+//zBTAky8hW 38eFi4KOFomxi5P4GgGDHXVvh+ddF3DSkngE1KgihhvepliU7dZ3Fxr6yKFsYDbKLQgA rHAzpTXuA0SABSQ0N8jeLPjkJ+vx7WVpWzwzdkqu4g/n1Hu41MsIlueZIAlt5RVBWjpF Egqzn3Oyi4IyLXkccW0sWqmSOhfZAGaz1QGbgLrXVVfhHZR6FXRjRDnIyh1WcfLVaEYX FS7IRW9kGo3RZwKaZV/tyXLMEZohDMVSdblOXqZsWkgSMWjd/Jp98kvdITB4Qur8QjPZ whWw== X-Gm-Message-State: APjAAAWde/kaztffBQ8kHYEEwHRfj6QuvQ1EcbYE1FRG8huJMuX3Bvyw 30Y3mcgyPB0OiCjGR8+zOa8DGxaF X-Google-Smtp-Source: APXvYqyE9OksfN4t4uiO+wXMjLvxL1N0wCPPp8i87h6D2b8CP8sDMRKmHanTkkY//Kt3QIQTtMyLOw== X-Received: by 2002:aa7:93bb:: with SMTP id x27mr52443201pff.10.1564631113669; Wed, 31 Jul 2019 20:45:13 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.12 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:12 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 18/26] drm: kirin: Move config max_width and max_height to driver data Date: Thu, 1 Aug 2019 03:44:31 +0000 Message-Id: <20190801034439.98227-19-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch moves the max_width and max_height values used in kirin_drm_mode_config_inita to hardware specific driver data. This will make it easier to add support for new devices via a new kirin_drm_data structure. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 2 ++ drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 17 +++++------------ drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 2 ++ 3 files changed, 9 insertions(+), 12 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index fc0f4c04d1c9..68efd508d86b 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -1054,6 +1054,8 @@ struct kirin_drm_data ade_driver_data = { .prim_plane = ADE_CH1, .channel_formats = channel_formats, .channel_formats_cnt = ARRAY_SIZE(channel_formats), + .config_max_width = 2048, + .config_max_height = 2048, .crtc_helper_funcs = &ade_crtc_helper_funcs, .crtc_funcs = &ade_crtc_funcs, .plane_helper_funcs = &ade_plane_helper_funcs, diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index bf1e601fb367..7956d698d368 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -39,17 +39,6 @@ static int kirin_drm_kms_cleanup(struct drm_device *dev) return 0; } -static void kirin_drm_mode_config_init(struct drm_device *dev) -{ - dev->mode_config.min_width = 0; - dev->mode_config.min_height = 0; - - dev->mode_config.max_width = 2048; - dev->mode_config.max_height = 2048; - - dev->mode_config.funcs = driver_data->mode_config_funcs; -} - static int kirin_drm_kms_init(struct drm_device *dev) { int ret; @@ -58,7 +47,11 @@ static int kirin_drm_kms_init(struct drm_device *dev) /* dev->mode_config initialization */ drm_mode_config_init(dev); - kirin_drm_mode_config_init(dev); + dev->mode_config.min_width = 0; + dev->mode_config.min_height = 0; + dev->mode_config.max_width = driver_data->config_max_width; + dev->mode_config.max_height = driver_data->config_max_width; + dev->mode_config.funcs = driver_data->mode_config_funcs; /* display controller init */ ret = driver_data->init(to_platform_device(dev->dev)); diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index 2b660df60293..43be65f82a03 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -37,6 +37,8 @@ struct kirin_plane { struct kirin_drm_data { const u32 *channel_formats; u32 channel_formats_cnt; + int config_max_width; + int config_max_height; u32 num_planes; u32 prim_plane; From patchwork Thu Aug 1 03:44:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170297 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836434ile; Wed, 31 Jul 2019 20:45:15 -0700 (PDT) X-Received: by 2002:a63:ff66:: with SMTP id s38mr118478342pgk.363.1564631115769; Wed, 31 Jul 2019 20:45:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631115; cv=none; d=google.com; s=arc-20160816; b=AJ4lIDTasxxXY4lqhBMFJqY8uRuRpl2w7JLyrYN632x+W+XlDcxLE0ivwrp7VLO7TU HtoempCLuV7vpZYRx8GfOkBAiaGBV1unWp/V7Bnb1+1+U4CU3h2NHdCqNSvh+MlaF8w8 oBgRBD0xJXQbStIGXhQ/PDKRk8M2aiY17WrBqPz5cOTFlklVWfOX/dW/jsz+7pd+0T16 ib6sxTjvKe0lgIOZatag0QSjd7Ji2nZQAL9pf5qSFIEnAP+bGKGuJ1MQBX/RBtIsOzUV uWZI1xpcj3T+UmAs2QFx5VHrGofnUKZIhfOOA1miMvgWbcO8PT/7qdLH0DRmSI5Ut8Sl s6EA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=d3sEljspMlQIAiShTnfM2IjhPeCj5SRiVz8r3dXvpDo=; b=lXquahz+J7ahR92EGkBPwY/qkDVOvSRIHn3umheUYyoB/V2chz7jcusjZKz+4lUHAX 5aGq2I6YL0zINPbhIJBPVNechLFKxNf3Gw9UHIRKYyxHoFxdtg4+QAuNVUPICwRgwehn aKhIWk0FuGEtrHnNAck3ZriF+78SEFDcGFvscreEY/tEl2PoZBxWaUeM6HHfLNyLQjUc zTFeZEWcE1e+3790lurWgk3DWKJl4JU8qOpXNrh9YcOQw761IhIyDThMTMRKR/6l+w8x fA3BVEB85m5azgVXzIPPjYLsTPyDog26JKQc77Es0TijK3YQ6cCK+YIjYiTiXrwodD1p joXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BydHUUSi; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id m23sor46711172pgv.70.2019.07.31.20.45.15 for (Google Transport Security); Wed, 31 Jul 2019 20:45:15 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BydHUUSi; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=d3sEljspMlQIAiShTnfM2IjhPeCj5SRiVz8r3dXvpDo=; b=BydHUUSiT20SAUk27O+sKiKIquEgQlulyY6dU/gC2UmKgEktIN0Rx/LvVfS7gs2qto tmlBJEWvWywWG4tdoS6df9QyBp7bl/llwZW9M4/Wn/dTE7Ljrn6Rhklm1dIW3zEXipH5 d6OZU6RjSWgQXDLazTgi5fGbQ/PP5dufywgI8jXGgHb3aWWNCh21uxqBnYQ7L4XrVXBB s9kIwzzS0LQyLeiI2v1T4RCcucF8GHsAnsIjekCFMJ5oPvFvpgGtePG/7mpYll7pdD18 UY2xMDZzBjmZPgB+dNvQo2fgyiH5zWeVj/MG6Y1BUGKLkhKL8ieGCWv/Mbs2TL1QI1uD 1sxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=d3sEljspMlQIAiShTnfM2IjhPeCj5SRiVz8r3dXvpDo=; b=gtj2Suqd1ulIlWWORMCValwMZ1HG/VssugvN99C3E4DCoQXQIyNec91UT1UQe3F3Nd nk2GZBBre3zUtbUoLOFzJ6l1Ahicavf9kU91X89iGfGl0EdIcJCbrotxiJhwtUIjoC+5 jRgyYSyrEanEFX1wqJq+OCAsco8tQ9vbR+bipQTz0QbZukS3SMLcToUmK3Jc01jaY+XY 52yHcMUunUQ+sAYQxuSLopnytpVivaC3+vdiuYYvSCYktCbKhA5beEwCFr8wox9jq4l/ dlsS/g0TuDus22sWPeY4qQY7bfMomuDHwBqqZzsFwcDWB+BupLfPx2HpD0GFqliPcYNf D13Q== X-Gm-Message-State: APjAAAXjxrR3oz3NQPzMZgTdd83ATu+ib12ZT1A5Oam8XLHb5aPLLzrK fad9IzqaD1yPZ/8RRcHaN4QDOdSr X-Google-Smtp-Source: APXvYqyD/YWV+1Wx506fls2aoMsn8TTMxGWQILHtVKrHObaPsnrK/p/p43Zc7qzvH6Z8uzb593UFlw== X-Received: by 2002:a63:b346:: with SMTP id x6mr117423145pgt.218.1564631115305; Wed, 31 Jul 2019 20:45:15 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.13 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:14 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 19/26] drm: kirin: Move drm driver to driver data Date: Thu, 1 Aug 2019 03:44:32 +0000 Message-Id: <20190801034439.98227-20-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch moves the drm_driver structure to be under device specific driver data. This will allow us to more easily add support for kirin960 hardware with later patches. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: Reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 27 +++++++++++++ .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 38 +------------------ .../gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 1 + 3 files changed, 29 insertions(+), 37 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 68efd508d86b..0bc2e538913b 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -1049,6 +1049,32 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = { }; +DEFINE_DRM_GEM_CMA_FOPS(ade_fops); + +static struct drm_driver ade_driver = { + .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | + DRIVER_ATOMIC, + .fops = &ade_fops, + .gem_free_object_unlocked = drm_gem_cma_free_object, + .gem_vm_ops = &drm_gem_cma_vm_ops, + .dumb_create = drm_gem_cma_dumb_create_internal, + .prime_handle_to_fd = drm_gem_prime_handle_to_fd, + .prime_fd_to_handle = drm_gem_prime_fd_to_handle, + .gem_prime_export = drm_gem_prime_export, + .gem_prime_import = drm_gem_prime_import, + .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, + .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, + .gem_prime_vmap = drm_gem_cma_prime_vmap, + .gem_prime_vunmap = drm_gem_cma_prime_vunmap, + .gem_prime_mmap = drm_gem_cma_prime_mmap, + + .name = "kirin", + .desc = "Hisilicon Kirin620 SoC DRM Driver", + .date = "20150718", + .major = 1, + .minor = 0, +}; + struct kirin_drm_data ade_driver_data = { .num_planes = ADE_CH_NUM, .prim_plane = ADE_CH1, @@ -1056,6 +1082,7 @@ struct kirin_drm_data ade_driver_data = { .channel_formats_cnt = ARRAY_SIZE(channel_formats), .config_max_width = 2048, .config_max_height = 2048, + .driver = &ade_driver, .crtc_helper_funcs = &ade_crtc_helper_funcs, .crtc_funcs = &ade_crtc_funcs, .plane_helper_funcs = &ade_plane_helper_funcs, diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index 7956d698d368..296661ba300f 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -92,41 +92,6 @@ static int kirin_drm_kms_init(struct drm_device *dev) return ret; } -DEFINE_DRM_GEM_CMA_FOPS(kirin_drm_fops); - -static int kirin_gem_cma_dumb_create(struct drm_file *file, - struct drm_device *dev, - struct drm_mode_create_dumb *args) -{ - return drm_gem_cma_dumb_create_internal(file, dev, args); -} - -static struct drm_driver kirin_drm_driver = { - .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | - DRIVER_ATOMIC, - .fops = &kirin_drm_fops, - - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = kirin_gem_cma_dumb_create, - - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_export = drm_gem_prime_export, - .gem_prime_import = drm_gem_prime_import, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, - - .name = "kirin", - .desc = "Hisilicon Kirin SoCs' DRM Driver", - .date = "20150718", - .major = 1, - .minor = 0, -}; - static int compare_of(struct device *dev, void *data) { return dev->of_node == data; @@ -134,11 +99,10 @@ static int compare_of(struct device *dev, void *data) static int kirin_drm_bind(struct device *dev) { - struct drm_driver *driver = &kirin_drm_driver; struct drm_device *drm_dev; int ret; - drm_dev = drm_dev_alloc(driver, dev); + drm_dev = drm_dev_alloc(driver_data->driver, dev); if (IS_ERR(drm_dev)) return PTR_ERR(drm_dev); diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index 43be65f82a03..fdbfc4a90f22 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -42,6 +42,7 @@ struct kirin_drm_data { u32 num_planes; u32 prim_plane; + struct drm_driver *driver; const struct drm_crtc_helper_funcs *crtc_helper_funcs; const struct drm_crtc_funcs *crtc_funcs; const struct drm_plane_helper_funcs *plane_helper_funcs; From patchwork Thu Aug 1 03:44:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170298 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836466ile; Wed, 31 Jul 2019 20:45:17 -0700 (PDT) X-Received: by 2002:a63:184b:: with SMTP id 11mr56539029pgy.112.1564631117256; Wed, 31 Jul 2019 20:45:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631117; cv=none; d=google.com; s=arc-20160816; b=XPh6+E4UJZz8zAMmfQEckL0/G7a+a1zj5EZMWogNVfzW6i+Te9rwypATFF7hr5yXLR GdlDHD1Phpcqe2GiU/3QSF9LkKQJV8VFOcFT+YYkP/VxqBbkndGVJEfH9eY7hzEtJjSx 161Lf2fOECUVf9ZJLkh5Giv4azAiApwbbDZREYD0T1jp1A2oi7dq2I6bA+cwXc1FRarI wf4rf2KfZVU8RUXNzsvmyoMxSu8RtmuI57NjeK1hvtpg/oJz0/KmSHFjhRLasIGf/B6w z8pQx7FB3Pu1RtOhktLvCE5NUxj/rZdAYiqrzD/PHjixcM/z3Fnhl8D4q17iIE6qNbdl FuIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=zuYtIfU+UT/PNXXXBYUFuMDBxtjn9glQQrqM7vGxjYE=; b=TiH6We1yOy8VAjddUvlXxuXGT0Go4TYedohvnwwAzcBVFZinTVjU35MjBWwSmk2xqc JvCUoZQU8CX2TxyunUroxpzAK82gy+C3Z5tpwrGrTBnz5xKCPyEjsX1XcIT/e0f++zVg rqZ7+1tvM9IW9TXCU6h1tvEg3YLUi40sGLOqeDjSWYxV5/+lyXJT6QQF90bXa+a0I3Tb ZSCVMB9lzRqlsetl+lh3H5p2mRPLd5q9LSAt7jSQPNKlZAD33Eu+xWHFpzHeb9CTz+Zf PkITZKfoAkTTNVgBt9rJ+71y6rK3eQB8xGSf68sTAyQWIV4O+xQKUkGRKhpiC24NF0Td BSXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=a5VbWHzE; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id o11sor85116866plk.18.2019.07.31.20.45.17 for (Google Transport Security); Wed, 31 Jul 2019 20:45:17 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=a5VbWHzE; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zuYtIfU+UT/PNXXXBYUFuMDBxtjn9glQQrqM7vGxjYE=; b=a5VbWHzEBLlu3fIz+fCVmCe94QAY4LsuQSJPED6ssrg/nwTK/5Mt/n4elQQgHSmiar Oet4P6qsMMOv9o+cf6wahhatHdyJDKzPhGlfGyZa9qy9qm4g4E2RyvLb7IKMC8Ax5Cs0 FB7IrETlv2TW5rn7rxJt3xsY/T0g7K245ivpcEvRzhPvtmY7N6shhLGFQhBAWPS/PdX0 iWPQLutk2shT0xcDZUWDf4PeMGQ76Sv2gbz0zylYt4LDmeUSTgkgO+WUBe/+IJZuL3SZ c3gJKLsURrOdoIppdcUQ8XQwk9Mg1mNaK7DoJfxUxWdQdecQ9UhzKQcgRneFo5biIsye Olpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=zuYtIfU+UT/PNXXXBYUFuMDBxtjn9glQQrqM7vGxjYE=; b=ZvqoUuOyBCPjszpr8+0hfhxpECGUxu5+2l34ZtQ49P+9pptszRos1PGvv3hUj5x2GX 1K+svEfb06U0rQ+eeaFB/EyQPkwVSe9uEDzcrQYuG+Mtmc6vOpSjtYbAxW9hVd50OrI7 B0lKNsCFQmUdtxwQtyb40nMvd3K/OAQpHFp7z+uJXesskPHWWy19B2yA2QZsPS3kQjbd 3pnmS7HOfxcSuutK3gyY0fTUkQ8GEoHBXQxAWEJZPsSKd4eL0eiKfFikXSMuwU24nXEq bGbWAelg3ZD4+imAPzG4uKAVYSJqXCHVtdGqnG9VjZ51mc41p+TeD4OITvyj915b3/eA f/lg== X-Gm-Message-State: APjAAAXZ9DN9Ao1KP0ijLO2KAF1P61p1XEW2s4h7wM+WiNcSEHO3Pepp YRAlTWQIQ8A4Vkw/pnYH4ZxhBretOURyzQ== X-Google-Smtp-Source: APXvYqwB4SrO/uHgu51bOWy2W68HjOxGfBkUOryPOB8eQxWuCtrE3RRTyK8dT+4vf/lBmWbGaodg1w== X-Received: by 2002:a17:902:6b02:: with SMTP id o2mr69099475plk.99.1564631116882; Wed, 31 Jul 2019 20:45:16 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.15 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:16 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 20/26] drm: kirin: Add register connect helper functions in drm init Date: Thu, 1 Aug 2019 03:44:33 +0000 Message-Id: <20190801034439.98227-21-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch adds a flag to the device specific driver data so that we can conditionally register the connectors at init. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 1 + .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 43 +++++++++++++++++++ .../gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 1 + 3 files changed, 45 insertions(+) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 0bc2e538913b..66434c0cce6e 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -1076,6 +1076,7 @@ static struct drm_driver ade_driver = { }; struct kirin_drm_data ade_driver_data = { + .register_connects = false, .num_planes = ADE_CH_NUM, .prim_plane = ADE_CH1, .channel_formats = channel_formats, diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index 296661ba300f..1c9658e9565e 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -97,6 +97,40 @@ static int compare_of(struct device *dev, void *data) return dev->of_node == data; } +static int kirin_drm_connectors_register(struct drm_device *dev) +{ + struct drm_connector *connector; + struct drm_connector *failed_connector; + struct drm_connector_list_iter conn_iter; + int ret; + + mutex_lock(&dev->mode_config.mutex); + drm_connector_list_iter_begin(dev, &conn_iter); + drm_for_each_connector_iter(connector, &conn_iter) { + ret = drm_connector_register(connector); + if (ret) { + failed_connector = connector; + goto err; + } + } + drm_connector_list_iter_end(&conn_iter); + mutex_unlock(&dev->mode_config.mutex); + + return 0; + +err: + drm_connector_list_iter_begin(dev, &conn_iter); + drm_for_each_connector_iter(connector, &conn_iter) { + if (failed_connector == connector) + break; + drm_connector_unregister(connector); + } + drm_connector_list_iter_end(&conn_iter); + mutex_unlock(&dev->mode_config.mutex); + + return ret; +} + static int kirin_drm_bind(struct device *dev) { struct drm_device *drm_dev; @@ -116,8 +150,17 @@ static int kirin_drm_bind(struct device *dev) drm_fbdev_generic_setup(drm_dev, 32); + /* connectors should be registered after drm device register */ + if (driver_data->register_connects == true) { + ret = kirin_drm_connectors_register(drm_dev); + if (ret) + goto err_drm_dev_unregister; + } + return 0; +err_drm_dev_unregister: + drm_dev_unregister(drm_dev); err_kms_cleanup: kirin_drm_kms_cleanup(drm_dev); err_drm_dev_put: diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index fdbfc4a90f22..95f56c9960d5 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -39,6 +39,7 @@ struct kirin_drm_data { u32 channel_formats_cnt; int config_max_width; int config_max_height; + bool register_connects; u32 num_planes; u32 prim_plane; From patchwork Thu Aug 1 03:44:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170299 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836495ile; Wed, 31 Jul 2019 20:45:18 -0700 (PDT) X-Received: by 2002:a17:90a:710c:: with SMTP id h12mr6128387pjk.36.1564631118747; Wed, 31 Jul 2019 20:45:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631118; cv=none; d=google.com; s=arc-20160816; b=dyuD98Bt8242CfQeu33vXAgRN9iE1b7kIYe8qEgbe2OpVgsNo0VMa66b/5Ju+W2D9K LdPxwQkED73kvZJ8up++4oADouyAaQT9oc02NWMc8Mh1pEaQfK7YwIWAYs8QGsLWtXHd g/6jgikTJmkTEd8A64aHyzCEFxZklV5kPZHolkoTOldckuu85R+GuOV8qCo9O+NqBBwZ DlQwXwd7qkFYAA1F78LfA7rmUALIvDnRtqUSX+dk3ABcErdfMAdougsArrCUNwGHBPqj FAWW5SzDjcMhs+akusWdiRdE8uduINYJiqPlsXu/45BbVlB9VdMLEJCycxFQO0lqCRmx WguA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=WjHqeb4FH0iNPLGVjtm/IuQE2HpCUqPIHkrvBOle06A=; b=Cwp9I8WqDvUgPdzkyPqpyBaFRiXG1vc2QzIMWy9l3Q8cqc1R7++2V8y7HNicQNhheY USbwINVstYi6KGHgSVw5AyFbeIWVwmKwsf7+m3rdCV+MK6YonUW+ednATat94w5x3d5F puiffdxQoepwVWVW7aQatwXzwi6GiZ/aDWIvCLCiPqDr9lNaVBIyY79YjWVq5LqTnAFu nKbFKI+TtOhAlsNQoTerN5X2I0B4ijC7E+MCD2KifNcn9PtGuNsM35jukGjyUu1Htv0V ztrGwes17yr4L0ulZKbm+14hlWH32H+lHN59QX0hs/6Oz2OytjKFC1KwR09OeSZK+ECZ tsWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="zr0/ngFt"; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id c2sor47159909pge.58.2019.07.31.20.45.18 for (Google Transport Security); Wed, 31 Jul 2019 20:45:18 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="zr0/ngFt"; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=WjHqeb4FH0iNPLGVjtm/IuQE2HpCUqPIHkrvBOle06A=; b=zr0/ngFt5h5LHU72dl+EtYw2C13wCz8o1t7dZMhdyUVncveQH7+C+i5FhpQD7uH03n /jIlvAzXiSVskXqndgi4tjf0TksEDwJJOzk44IMe27eMSWRiMfMyHSZpJYs8kKSFL23X OdcQh+IUi+060D487nmTDlDzz6iXtLb6P63tMjbSjzkEQ34dKDLpR3jtDFz4ty7UU79d zecB7/VA0b4oc7whmXb37/mD7m+1gRLLZPMrOXCzXl9dow5nM/qZ0As6xg3KNddln4pa kpSqieLfnQ4DCgTXp+dzk1BxOVGqkYHfWxeLfV8QnOWJBbMHU1Y3NPzDwakC48jNrn3I 9CUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=WjHqeb4FH0iNPLGVjtm/IuQE2HpCUqPIHkrvBOle06A=; b=lTz+ccKhgWuEABoE6qghlo2JH+6P3r5lNGjN3nKGDhs8b+agFZToohisbg3Z0to9Qn 6LE0BRuB6SLDc8eOgXSwhGk8Lzm0wDDRMlNG7S+sLWKqtxTkxHsBx9CIsgjOZbPPbM4e QwmcinuTJzwTfFxk6RcEGMHyLw5Q0CNxgV0n4jO88ik3S62Oc15bbZHxvjHA/BhZNGuS J/SW7u75uTneHk6rUn9f1l+5OWtsSC0SljtTBaIKI7KFtAQsxrF8KhecIgC6NNGUG1wT 40DxZxXKt5gTYDCPuDX0aKCo+Xhtg3ThBNxoWgVk/C/KM28/AT9QCNyFMf9oKWQqXuFz GBdg== X-Gm-Message-State: APjAAAVQflvOVuX6zTHe8oTX0I1BHwcm7waQfREYYEElYRPdW2cxD618 D/I5XPI+V5g00l6F40oWSnzbiAYD X-Google-Smtp-Source: APXvYqyVvZeMN6yRDkQ4uJom/1mFt8PdcwoWOHTKKQIAhsK+H2xzvml2+Hg38NdQbaAZeqmJIa0zMQ== X-Received: by 2002:a65:6497:: with SMTP id e23mr112657820pgv.89.1564631118292; Wed, 31 Jul 2019 20:45:18 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.16 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:17 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 21/26] drm: kirin: Rename plane_init and crtc_init Date: Thu, 1 Aug 2019 03:44:34 +0000 Message-Id: <20190801034439.98227-22-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch renames ade_crtc/plane_init kirin_plane/crtc_init, as they will later be moved to kirin drm drv and shared with the kirin960 hardware support. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 66434c0cce6e..0bdcac981d8b 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -571,7 +571,7 @@ static const struct drm_crtc_funcs ade_crtc_funcs = { .disable_vblank = ade_crtc_disable_vblank, }; -static int ade_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, +static int kirin_drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, struct drm_plane *plane) { struct device_node *port; @@ -892,8 +892,9 @@ static struct drm_plane_funcs ade_plane_funcs = { .atomic_destroy_state = drm_atomic_helper_plane_destroy_state, }; -static int ade_plane_init(struct drm_device *dev, struct kirin_plane *kplane, - enum drm_plane_type type) +static int kirin_drm_plane_init(struct drm_device *dev, + struct kirin_plane *kplane, + enum drm_plane_type type) { int ret = 0; @@ -1024,13 +1025,13 @@ static int ade_drm_init(struct platform_device *pdev) else type = DRM_PLANE_TYPE_OVERLAY; - ret = ade_plane_init(dev, kplane, type); + ret = kirin_drm_plane_init(dev, kplane, type); if (ret) return ret; } /* crtc init */ - ret = ade_crtc_init(dev, &kcrtc->base, + ret = kirin_drm_crtc_init(dev, &kcrtc->base, &ade->planes[ade_driver_data.prim_plane].base); if (ret) return ret; From patchwork Thu Aug 1 03:44:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170301 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836552ile; Wed, 31 Jul 2019 20:45:21 -0700 (PDT) X-Received: by 2002:a63:e010:: with SMTP id e16mr110460961pgh.285.1564631121801; Wed, 31 Jul 2019 20:45:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631121; cv=none; d=google.com; s=arc-20160816; b=nU86+kPDPr005oB0avqaMJvNk7NAkObLN87AY1goH/iHGfuicUtjeF2HMm0eUVxqQ4 cIdCAHCJT6717O9wV4Zm0741Kz7iXodJuIdY/DDFIfB1oiXEEcqsXO9yeo77Ng3tSL/5 XeHIjpzcT+55ONrYyNoKAr4JdKi92LpeVntM+6fUPDJL/6ksYq76kjZFmgLl3sbuPvmX 6D4cnmmvb7XVwaZMQvs0jq2MmmFsEAA5zzuLYkxuiHayfqO7EG68j2cYxZk7o1fbbY1j tgv9WuXcl7jymMSpp54EqF0uQVMemONcnZPA7FXrrr05WeEafwFJSM7BDy95xf9Rk8Od AzNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=rs9Szavz01lGhxB105GpAFsAJ0GA/GmuWwL2NPh/1Lc=; b=UScrK4cnMXE4isBCr8yAd6le/MJMgpT1eqAr8g0TI9dhYTl+z/V573yJF4/xOOwvvZ jyZqeAezjGaKObBF1OowqfQUida0fvhWVpjPxxFbdNA1LN/rPog51hOew1NO0MeLx7iK p8SXYveg6WOn1bURHIeLeqBIQ54do/oZpIt5V8YKHSuz7GVmEXjD9/m2B6gF9ICU/Bne 8eWv2Dl6kzDikjNRFZSkP7STLdT94ynRZPGsHmlpHsNhoxByKOmcydbJgyAojSHgKkjW kyx8xiWGEMZ7erR7AlkiqwdBcnI3TXv8yIZqGt4sLXflVJIoYktvXBKOtykVsgg4nuqk Z9Bw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=RP6VNmIX; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id j5sor4414719pjf.7.2019.07.31.20.45.21 for (Google Transport Security); Wed, 31 Jul 2019 20:45:21 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=RP6VNmIX; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rs9Szavz01lGhxB105GpAFsAJ0GA/GmuWwL2NPh/1Lc=; b=RP6VNmIXUw1IL4IlU/gJX7/aS4NwEOhx/k3T7v40iplb7HaAg2bBR7EI8juAW1lE55 vw6RqUXZQn3tzgtDzP0XsTs3ja9B/7159KzfkX54QjTFKlyTP+7rUMdBpNEwM8f4H+Q1 RQAJii8IzqE0kjvaAjt8x0QfrS6CnWwcPgJkWJ4u29rnqq4ZQrWc6T7B90GtioTl7Mej 1zTbWRFa5mNN66sboTxlSVMNtib5QODg6O7jwD0QqAsNBUlDidIDNhI1tKeHcQHqb4pT /7z7Olx6LVMSexR8gg28q5lGFz3YVQXSjv55qaYe9xAdqIzMauUdjH45JsfirfZl4b/+ 84lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=rs9Szavz01lGhxB105GpAFsAJ0GA/GmuWwL2NPh/1Lc=; b=mYMWhfW5c22TZgi2BIGm8JMJTFaP8LjXja2VvLrMLQa3k8VQatQXIk6pomIfL8Yj55 yR3dhOHU1q9LeFBbnwpF1asfjQL2Wsr8xdYtJHzfBgnc2v683VmA+46qQPvQIteCXP8M v57M4tviO/wydFobYv4Qumr1/iCqnq1G0hK6gK7tITmu/jCWyf9q5ITr8st7eFp4jSxB luqX7Ev6A6//WIWfQ0c3pPXgJPwWjx1OWSC4fEC1uQI5W1+gdhKHONb3jW5tvDehYR3h 0MgXMSXQpgz86pi+InZmy4M+wUpgdcAYAH44zdBdZWO/2Hgcnks/uzysbesLQYHo2/tV tNSg== X-Gm-Message-State: APjAAAUPMZccJYwhpdFzcSa4JMXTBVw639RmMIWIGCodgvZjimTURhjb 6kXPOhHhHoiAf/jzTqJ89yB6Qe4e X-Google-Smtp-Source: APXvYqx6GQJiArHkNMY5CkBCvPwyOdt4fTOYA/3VTALL2+Rl1TPDFGIT8W/5hN361RUoQi54wouXQw== X-Received: by 2002:a17:90b:f0e:: with SMTP id br14mr6233618pjb.117.1564631121372; Wed, 31 Jul 2019 20:45:21 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.19 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:20 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 23/26] drm: kirin: Make driver_data variable non-global Date: Thu, 1 Aug 2019 03:44:36 +0000 Message-Id: <20190801034439.98227-24-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch changes the driver_data value to not be a global variable. Instead the driver_data value is accessed via the of_device_get_match_data() when needed. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: Reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index f1853b84ab58..cc79bd4ecec2 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -28,18 +28,9 @@ #include "kirin_drm_drv.h" -static struct kirin_drm_data *driver_data; -static int kirin_drm_kms_cleanup(struct drm_device *dev) -{ - drm_kms_helper_poll_fini(dev); - driver_data->cleanup(to_platform_device(dev->dev)); - drm_mode_config_cleanup(dev); - - return 0; -} - -static int kirin_drm_kms_init(struct drm_device *dev) +static int kirin_drm_kms_init(struct drm_device *dev, + const struct kirin_drm_data *driver_data) { int ret; @@ -95,6 +86,21 @@ static int compare_of(struct device *dev, void *data) return dev->of_node == data; } +static int kirin_drm_kms_cleanup(struct drm_device *dev) +{ + const struct kirin_drm_data *driver_data; + + drm_kms_helper_poll_fini(dev); + + driver_data = of_device_get_match_data(dev->dev); + if (driver_data->cleanup) + driver_data->cleanup(to_platform_device(dev->dev)); + + drm_mode_config_cleanup(dev); + + return 0; +} + static int kirin_drm_connectors_register(struct drm_device *dev) { struct drm_connector *connector; @@ -131,15 +137,21 @@ static int kirin_drm_connectors_register(struct drm_device *dev) static int kirin_drm_bind(struct device *dev) { + struct kirin_drm_data *driver_data; struct drm_device *drm_dev; int ret; + driver_data = (struct kirin_drm_data *)of_device_get_match_data(dev); + if (driver_data == NULL) + return -EINVAL; + drm_dev = drm_dev_alloc(driver_data->driver, dev); if (IS_ERR(drm_dev)) return PTR_ERR(drm_dev); dev_set_drvdata(dev, drm_dev); - ret = kirin_drm_kms_init(drm_dev); + /* display controller init */ + ret = kirin_drm_kms_init(drm_dev, driver_data); if (ret) goto err_drm_dev_put; @@ -189,12 +201,6 @@ static int kirin_drm_platform_probe(struct platform_device *pdev) struct component_match *match = NULL; struct device_node *remote; - driver_data = (struct kirin_drm_data *)of_device_get_match_data(dev); - if (!driver_data) { - DRM_ERROR("failed to get dt id data\n"); - return -EINVAL; - } - remote = of_graph_get_remote_node(np, 0, 0); if (!remote) return -ENODEV; @@ -208,7 +214,6 @@ static int kirin_drm_platform_probe(struct platform_device *pdev) static int kirin_drm_platform_remove(struct platform_device *pdev) { component_master_del(&pdev->dev, &kirin_drm_ops); - driver_data = NULL; return 0; } From patchwork Thu Aug 1 03:44:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170305 Delivered-To: patch@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836720ile; Wed, 31 Jul 2019 20:45:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqySmn5CRRvjYr8sOOfBLiRZs3x4s/2mvXxBv+wZaqCkuKjaiDJsZljabg9mLZAFS6WwlVkw X-Received: by 2002:a63:4c46:: with SMTP id m6mr120170692pgl.59.1564631130376; Wed, 31 Jul 2019 20:45:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631130; cv=none; d=google.com; s=arc-20160816; b=eDjSnsfRPNEWXuevZ9cXgRK6TpZDIyI20yv8vFe0LqNBA7zNlmGndpl7IQYfpGFRoY /DaFyqt5fbrssE2V+c6+iUSpqlwICPap8y9P/Gj52QX9C5ReRThruJ99nhR6BOEgYFMs zIzobcaufYqArNcQhPu8q7YlVcntvww+LJ8jY7zyiWWR9ace5mxm52bgfgn2deI987lY OaNYi9FdfhTSMuMBaBVlbnKgFmeFlLdwMmxJ5e1LZIxvhmzhAEiomdjikcmNifszFNlJ gJD3MJBkqAUPerkxP87frPd1jx0BL56/LxCvNKArI6m537i0wXfvwXCiC03GLnHmOwLY otXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=2SJ1RQl/uOMyO19jnUD0lNyv6QH0nUllbiw6Ng6yqJk=; b=cHqkLTJvITdgpCPrpBti6/F9ePIGdMcjz815oC+Xw8aeJr/wv1TuzyyXE0b9Ncu7SI UVuFU7w1+HL8SO3LUTWlm3YkELeFIllg1f5ACy9/CfQj/2iMS4/ZZo3p/ptTm2vR3WmC WkxCR6r+vLvmNuUb21Zg93zIOldSOVsySS27LY+rbrOuPD6PHlNpaPv42/OtyAcCgDcR dDRVm0d0XgxXHgLcRq7nizjWXRP0JKrBL/zOymLxeJYzETZQev3TwpGSXI+Yxj2OggJy xbcEcpaAf6/+3pYHWwZORpfpjkk/oN5KUmL6WCUzEASD+jCeUJaDEbYhEF+SRZnV9Kqq WGCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J9+JMcr9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n11si2868235pgr.460.2019.07.31.20.45.30; Wed, 31 Jul 2019 20:45:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J9+JMcr9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729508AbfHADp3 (ORCPT + 29 others); Wed, 31 Jul 2019 23:45:29 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:40329 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730118AbfHADpX (ORCPT ); Wed, 31 Jul 2019 23:45:23 -0400 Received: by mail-pl1-f193.google.com with SMTP id a93so31451069pla.7 for ; Wed, 31 Jul 2019 20:45:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=2SJ1RQl/uOMyO19jnUD0lNyv6QH0nUllbiw6Ng6yqJk=; b=J9+JMcr9OJwYMvFdAQKEduvl+84Dbc0aKweDgAVS6yk5/OwhMtRLqwB4r2kVnlOsMu bD+I8lt4/jXDaMSPdSrQjRhh0kj+/khxqEWaq/lwumFQO39/kuBdW+LsU0+VQJVdVhqQ s+Wb186mN++XDw4Qg8lbk9cNdsBm+amjRFNKSkXherrYJvCoTTp4M8WXPiEyGPaxWQTa /5Ido9xiaIN1fyY7qYfW7VvSDOP+bR6ZtCdL+QsTyrlPttSRxJQt3lOWLTQF0kyIUaVB eEbr4nTKN01fimxQihjv76yuG01+ASJV/ENmAAxuw/dQOH8EGa+4yWpICxWzLaRPdPfJ gzzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2SJ1RQl/uOMyO19jnUD0lNyv6QH0nUllbiw6Ng6yqJk=; b=K9Ifz/NczumawupQgon2lrtLUvNwIkM7PAXDqcpZLnalocavTex1Cq7ZldTDEnZPUl iFKd/T/XIhVgyOP9KNFqTsNCw+gwDjgoDiYSw/CY66M7FRrYVxid3pnxC+49U6TxVis+ pYwS3E9K6X+JThMCIEXi+tgSAiO2MuSTzsg1FVWG3VI1pki314zd9M88ata3eO1AQi4R Moq2fLF0JqdwwHv5v/TfnAMm9OvbiuOw3HArEOdAPDM+vobkPHs0Op4vTSEGA0E77cY0 bpiS33pv3ij3yXA91RmbSOOZ+6dYnWnnp9gczDWk9YGCpowjKBZYswSrcp19zoWa0wfY X1tA== X-Gm-Message-State: APjAAAUVnHEL5vgNtTMP4aJc2Hlm/ZrFgTLfR/hti5WH8F09uKS3nkds BxN+/1/8kq0zBxplMUNz8ZRLb4cDKos= X-Received: by 2002:a17:902:e2:: with SMTP id a89mr124513000pla.210.1564631122837; Wed, 31 Jul 2019 20:45:22 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:22 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 24/26] drm: kirin: Add alloc_hw_ctx/clean_hw_ctx ops in driver data Date: Thu, 1 Aug 2019 03:44:37 +0000 Message-Id: <20190801034439.98227-25-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch changes the alloc/clean_hw_ctx functions to be called via driver_data specific funciton pointers. This will allow the ade_drm_init to later be made generic and moved to kirin_drm_drv.c Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: Reworded commit message] Signed-off-by: John Stultz --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 9 ++++++++- drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 09dc2c07533d..f729a1de6e14 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -999,7 +999,7 @@ static int ade_drm_init(struct platform_device *pdev) return -ENOMEM; } - ctx = ade_hw_ctx_alloc(pdev, &ade->crtc.base); + ctx = ade_driver_data.alloc_hw_ctx(pdev, &ade->crtc.base); if (IS_ERR(ctx)) { DRM_ERROR("failed to initialize kirin_priv hw ctx\n"); return -EINVAL; @@ -1038,6 +1038,10 @@ static int ade_drm_init(struct platform_device *pdev) return 0; } +static void ade_hw_ctx_cleanup(void *hw_ctx) +{ +} + static void ade_drm_cleanup(struct platform_device *pdev) { } @@ -1090,6 +1094,9 @@ struct kirin_drm_data ade_driver_data = { .plane_funcs = &ade_plane_funcs, .mode_config_funcs = &ade_mode_config_funcs, + .alloc_hw_ctx = ade_hw_ctx_alloc, + .cleanup_hw_ctx = ade_hw_ctx_cleanup, + .init = ade_drm_init, .cleanup = ade_drm_cleanup }; diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index 95f56c9960d5..1663610d2cd8 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -49,6 +49,11 @@ struct kirin_drm_data { const struct drm_plane_helper_funcs *plane_helper_funcs; const struct drm_plane_funcs *plane_funcs; const struct drm_mode_config_funcs *mode_config_funcs; + + void *(*alloc_hw_ctx)(struct platform_device *pdev, + struct drm_crtc *crtc); + void (*cleanup_hw_ctx)(void *hw_ctx); + int (*init)(struct platform_device *pdev); void (*cleanup)(struct platform_device *pdev); }; From patchwork Thu Aug 1 03:44:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170302 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836614ile; Wed, 31 Jul 2019 20:45:24 -0700 (PDT) X-Received: by 2002:aa7:8383:: with SMTP id u3mr51044082pfm.175.1564631124885; Wed, 31 Jul 2019 20:45:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631124; cv=none; d=google.com; s=arc-20160816; b=eIhKeBQV+AMSV51j7FFnZfd1k0CHPCCnk6Qf3/LLmyH3aCNwPX6BEbuNm7qIYX5iL6 XBVYLtHO/aV6fTIIG4AmRGMlmqGaXJCQFs0tizp07+GX1Ox9zSe53P2gqL4vjW2zk4mg xV/56bZx9s8U5w9uNNPELHTCc3wZ7H4WyTDzOz7AlDuCm/uDsHuiQWlkCajd71Ou4sjq 4r64jIwZxpc7NhXIob9UtSPslOnZZe29dpf4j9dR996lN5c+MUErII9gKDU1lTnv4QQa NsaXF8+YCDyZSwRfZIG3UXkqAuHhtCcamZUv8raoeMKJ76yl0flx89O8Jq+VVz4jDYeK E+YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=gE/41V3p8E7KtwwzgftBMLTA6SAC75G2Kpa5UKCO8Qo=; b=m9RtA0tRy/dVjiAAgqvNelZ4Yc3CyokgCE4iS8dI6l13WJKkoAfiXf5nIDsdncvlqx yRVcwOUGqXckiVh84oLzIzzen6R7OLV9cmeR5jTbuFlS+rkSSlJmHv7q81MDd21TFd8S zs1geqr5bxDveizKRZ5kOWJ9y367Y1qw6NzPjcOTh5SOOOS1NgVggH1r+H+qbR9gFI6v uvAtaUuwEbCTC16Ja07UaEc3QlG5/qf+JfElefedq6rnLuLu31ydcvj8pCffowRb0RCG UDPeMWbovNPGtShrHC5+4cmzlFx09hbPsJPv6kBkbiPFFijCMbgXzaYYU/oNyZLbto+V 0smQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=C5j8hBfr; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id l6sor21672992pgt.33.2019.07.31.20.45.24 for (Google Transport Security); Wed, 31 Jul 2019 20:45:24 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=C5j8hBfr; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=gE/41V3p8E7KtwwzgftBMLTA6SAC75G2Kpa5UKCO8Qo=; b=C5j8hBfr3aQsA/OwNaVL8RCHkNAn9o85zTFnFGuituGatDhp15FNjaHXBlQlTMU6rz R9Ueq+9X6/0S14B9yYKbMcun3w2oWE/LS2TLZtVeagOiBxnh6zj4VD9+wgFm8U/37cqw FsiOGw/k9+82qWFd/6b3+1sKJwJmKS4rmnrGjNbWYe/U+gCgkMNLxgOdd0CFCrmaOV43 0K5yQZTMiRJy7XWuING4I+3VjkycyWBXP3G9qfOOFokyx0en29yAN4ha6CvcK7Fe3d0k PuqkPSdckPrm32/FuFGSFPpayCgH1l5vV3xwmBy4dlS/yIVPUbWbBRiOLkgguX/cQqYm g3FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=gE/41V3p8E7KtwwzgftBMLTA6SAC75G2Kpa5UKCO8Qo=; b=Nf5KnshG+IMFZUffcK+dhMKG+8G8T/BoFaT7Zmg738AmpOFSy6+q7tiVJNRRCtWWUc afEplpIRD3vUJZz1RULRuBgAsENQsS6LEPIT0ueHpBe7TpDNlqHDhHDJHECWiYrY3QE0 InCEZ1ilYdwWS9v0CbukP/YFFaD1hT1LuHQd7mFxQhsKd5Gb6cqn6gN0BtJ0J0s3y4oF 38Nigvz4RBdz7K3f958MCmiHxGbJ51ig44MIvV4pYHgFkyYDEsn3o8TNpfz1ApCc6vDi 8byt7SV1tMCwi0YGQizQR3vn3V5Kp9/L+RTSXIqtZEq1hj4JLSme/+wOE4tzsr91jHJ6 u7oQ== X-Gm-Message-State: APjAAAWhwDfvQae9hKoaewV5Cl3RD802RXad2Wxv2vf1nHM0cHrogoEF ETElLbZ+P5JiyzhB+Qe0z2k8d7Hp X-Google-Smtp-Source: APXvYqwT1VFMzc9tchbe9OkpDTvnzfmXSm4NMZYpWM+g4G4Q0+yWy9eVQ91PrnNFB3Ofujh71vMk+Q== X-Received: by 2002:a63:5c7:: with SMTP id 190mr114583297pgf.67.1564631124394; Wed, 31 Jul 2019 20:45:24 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.22 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:23 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 25/26] drm: kirin: Pass driver data to crtc init and plane init Date: Thu, 1 Aug 2019 03:44:38 +0000 Message-Id: <20190801034439.98227-26-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch changes the code via a passed in driver_data pointer, rather than hardcoding them via ade_driver_data variable. This will allow those funcitons to be later moved to the generic kirin_drm_drv.c using alternative driver_data structures that support other hardware. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: Reworded commit message] Signed-off-by: John Stultz --- v2: Whitespace fixups, commit message tweaks suggested by Sam. --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index f729a1de6e14..ab0c5d03903d 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -572,7 +572,8 @@ static const struct drm_crtc_funcs ade_crtc_funcs = { }; static int kirin_drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, - struct drm_plane *plane) + struct drm_plane *plane, + const struct kirin_drm_data *driver_data) { struct device_node *port; int ret; @@ -589,13 +590,13 @@ static int kirin_drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, crtc->port = port; ret = drm_crtc_init_with_planes(dev, crtc, plane, NULL, - ade_driver_data.crtc_funcs, NULL); + driver_data->crtc_funcs, NULL); if (ret) { DRM_ERROR("failed to init crtc.\n"); return ret; } - drm_crtc_helper_add(crtc, ade_driver_data.crtc_helper_funcs); + drm_crtc_helper_add(crtc, driver_data->crtc_helper_funcs); return 0; } @@ -894,21 +895,22 @@ static struct drm_plane_funcs ade_plane_funcs = { static int kirin_drm_plane_init(struct drm_device *dev, struct kirin_plane *kplane, - enum drm_plane_type type) + enum drm_plane_type type, + const struct kirin_drm_data *driver_data) { int ret = 0; ret = drm_universal_plane_init(dev, &kplane->base, 1, - ade_driver_data.plane_funcs, - ade_driver_data.channel_formats, - ade_driver_data.channel_formats_cnt, - NULL, type, NULL); + driver_data->plane_funcs, + driver_data->channel_formats, + driver_data->channel_formats_cnt, + NULL, type, NULL); if (ret) { DRM_ERROR("fail to init plane, ch=%d\n", kplane->ch); return ret; } - drm_plane_helper_add(&kplane->base, ade_driver_data.plane_helper_funcs); + drm_plane_helper_add(&kplane->base, driver_data->plane_helper_funcs); return 0; } @@ -1024,14 +1026,15 @@ static int ade_drm_init(struct platform_device *pdev) else type = DRM_PLANE_TYPE_OVERLAY; - ret = kirin_drm_plane_init(dev, kplane, type); + ret = kirin_drm_plane_init(dev, kplane, type, &ade_driver_data); if (ret) return ret; } /* crtc init */ ret = kirin_drm_crtc_init(dev, &kcrtc->base, - &ade->planes[ade_driver_data.prim_plane].base); + &ade->planes[ade_driver_data.prim_plane].base, + &ade_driver_data); if (ret) return ret; From patchwork Thu Aug 1 03:44:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 170303 Delivered-To: patches@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp4836654ile; Wed, 31 Jul 2019 20:45:26 -0700 (PDT) X-Received: by 2002:a63:c009:: with SMTP id h9mr89468340pgg.166.1564631126445; Wed, 31 Jul 2019 20:45:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564631126; cv=none; d=google.com; s=arc-20160816; b=awtlEE+/KsJBxDxOPA93NVblHTyBAEFMNNtkbuaDF+7mcF8165FCZih2Osqn+kYX/L dr/eGVK/3q5vAfXalIoC9tO3HmabUiMAYXgBSpMiAsfE7aUXMmyM6Oks5vbfrUs84cJr Zi0DFedH2YprLz9ptd+UN/20EWnL06j4uZhZnRSwyToVAO8yXh/NXdMdzx126yQJf3eI cjuRs7GjA9bc74AHBUjj7GKNGfbCUsb5vYkseiSssQcr0ndtuyY3Z2Tm12z7hGoByduF 4Dq50my8UecZEzA1PBBy15ksq2YH56t8EJlzrtp152TjuoiuGcuE2JKLlnZaP8H2E6N1 sdFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HhMIn30NGQPjpNlDhfy9DcnrYxhEXRl6eLNUApeeF2w=; b=MOE55jmH4bSbAeZqf/bmjXXY3E9oRL8006sjWoKaU74pPdRYYTzrTaEcPUw+xLo6me af61U2GOlbqR3FA5xNSet9EiL6xZiUoF04wYjmGE6oVFxAxIjueshz+XtKpKGsr4UsYA j1zP+0NHWZn2B8l0PympYGu9HHTUBYJ1+0cwor3ooyDI1uaFvb/OZiMRLdDlsyN8RZEf 0BM6/4O3EsmeF1Qot9ktnIYFqeJKbEgeH7gCoH1pWvOBAjXl6Une0mz5NiIUS6MK0idU ZmZ5vnir5uLNPckiXc1n4i8xct0EuzAoKVYDkEl513o87iJCRwNtKcqgyA/TZPcSSQPM reiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yaE2aHpJ; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id e20sor3060025pgn.31.2019.07.31.20.45.26 for (Google Transport Security); Wed, 31 Jul 2019 20:45:26 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yaE2aHpJ; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=HhMIn30NGQPjpNlDhfy9DcnrYxhEXRl6eLNUApeeF2w=; b=yaE2aHpJcLNGKXg1altIIh5GNPFlGtSSFrlmrvbBhzQSCv71asI2Y7odiccGrQkEZf z3Xt5p1bLoXT/bSZCS9ov/O/cHQMBc3hjyi0bE0BpF5ItV3lbbQu+P7E7CUPUY6/CzLp hNdi0LXvTqBc1h3GGHLINxCn9jQJVJt4hmrlGEPFoDv88itgmSp1jTwum1DenSGNLL03 PnHeOmOKuKsuhbn+USbugKVqkCRE+yh7jK9C33YFUhFyKB06bjye/TbE0hR2MCQlypxd cXzXsTj8QUG2U8tq3ans4HrlceHfXzYM9GevndFNuP9b+JBo68VRLV9gLyQ0iMDqBS5Z RJTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=HhMIn30NGQPjpNlDhfy9DcnrYxhEXRl6eLNUApeeF2w=; b=kvMZPw9TjURk+Rxdog2BkQfmv0zwbcWjTRcmfONgWFqQ8x6yOTaGpDYqXH8WCUR9Kl epuYfG+LDt2GB2ZduSZnaZA0LLyu5w6hYpslOV8SH+Xn15M9wj/2Zt4ukmlYAILAc1Td AN3aOksDcdDfbkQMJvs/jtrWWzT1AjkvkEmmyHU3ti9/bS7F+U0ZiPwFtgDaOXYZx+7L ihAnaBzDRMNu67I2uUyffVtv7V5XmIsGoEV+qEDFlMz2KvOKpy1Cs5hGgMka2KBvPd4q hn1KPj24i9d+2AiMK8JfAKF5JjJZEIzMtEzg565m8XULTLuhi9YVtkyenPoQglDAwRTR be7g== X-Gm-Message-State: APjAAAUGgyuCmVnsqT3vGZdThC6Nu+GNlL42WEuv8hv7RnGUtSuTYzfJ qWiUAFjqoIxs3ONxEW7i63h5A0NO X-Google-Smtp-Source: APXvYqzmDE3vrbXtgfpWu0Jf/Brz4wpDtd1VmuWSpxeAOSd9rkgS8DKORyoZVSUdxBfo777rZkNnHg== X-Received: by 2002:a65:654d:: with SMTP id a13mr100328602pgw.196.1564631125865; Wed, 31 Jul 2019 20:45:25 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id h70sm64775674pgc.36.2019.07.31.20.45.24 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 31 Jul 2019 20:45:25 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [PATCH v3 26/26] drm: kirin: Move ade drm init to kirin drm drv Date: Thu, 1 Aug 2019 03:44:39 +0000 Message-Id: <20190801034439.98227-27-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190801034439.98227-1-john.stultz@linaro.org> References: <20190801034439.98227-1-john.stultz@linaro.org> From: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch renames ade_data to kirin_drm_private, and moves crtc_init and plane_init to kirin drm drv too. Now that they are generic the functions can be shared between the kirin620 and (to be added later) kirin960 specific support code. Cc: Rongrong Zou Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Xu YiPing [jstultz: Reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 123 --------------- .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 141 ++++++++++++++++-- .../gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 5 - 3 files changed, 129 insertions(+), 140 deletions(-) -- 2.17.1 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index ab0c5d03903d..428206eccfa0 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -53,13 +53,6 @@ struct ade_hw_ctx { struct drm_crtc *crtc; }; -struct ade_data { - struct kirin_crtc crtc; - struct kirin_plane planes[ADE_CH_NUM]; - struct ade_hw_ctx *hw_ctx; -}; - -/* ade-format info: */ static const struct kirin_format ade_formats[] = { /* 16bpp RGB: */ { DRM_FORMAT_RGB565, ADE_RGB_565 }, @@ -571,36 +564,6 @@ static const struct drm_crtc_funcs ade_crtc_funcs = { .disable_vblank = ade_crtc_disable_vblank, }; -static int kirin_drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, - struct drm_plane *plane, - const struct kirin_drm_data *driver_data) -{ - struct device_node *port; - int ret; - - /* set crtc port so that - * drm_of_find_possible_crtcs call works - */ - port = of_get_child_by_name(dev->dev->of_node, "port"); - if (!port) { - DRM_ERROR("no port node found in %pOF\n", dev->dev->of_node); - return -EINVAL; - } - of_node_put(port); - crtc->port = port; - - ret = drm_crtc_init_with_planes(dev, crtc, plane, NULL, - driver_data->crtc_funcs, NULL); - if (ret) { - DRM_ERROR("failed to init crtc.\n"); - return ret; - } - - drm_crtc_helper_add(crtc, driver_data->crtc_helper_funcs); - - return 0; -} - static void ade_rdma_set(void __iomem *base, struct drm_framebuffer *fb, u32 ch, u32 y, u32 in_h, u32 fmt) { @@ -893,28 +856,6 @@ static struct drm_plane_funcs ade_plane_funcs = { .atomic_destroy_state = drm_atomic_helper_plane_destroy_state, }; -static int kirin_drm_plane_init(struct drm_device *dev, - struct kirin_plane *kplane, - enum drm_plane_type type, - const struct kirin_drm_data *driver_data) -{ - int ret = 0; - - ret = drm_universal_plane_init(dev, &kplane->base, 1, - driver_data->plane_funcs, - driver_data->channel_formats, - driver_data->channel_formats_cnt, - NULL, type, NULL); - if (ret) { - DRM_ERROR("fail to init plane, ch=%d\n", kplane->ch); - return ret; - } - - drm_plane_helper_add(&kplane->base, driver_data->plane_helper_funcs); - - return 0; -} - static void *ade_hw_ctx_alloc(struct platform_device *pdev, struct drm_crtc *crtc) { @@ -984,71 +925,10 @@ static void *ade_hw_ctx_alloc(struct platform_device *pdev, return ctx; } -static int ade_drm_init(struct platform_device *pdev) -{ - struct drm_device *dev = platform_get_drvdata(pdev); - struct ade_data *ade; - struct ade_hw_ctx *ctx; - struct kirin_crtc *kcrtc; - struct kirin_plane *kplane; - enum drm_plane_type type; - int ret; - u32 ch; - - ade = devm_kzalloc(dev->dev, sizeof(*ade), GFP_KERNEL); - if (!ade) { - DRM_ERROR("failed to alloc ade_data\n"); - return -ENOMEM; - } - - ctx = ade_driver_data.alloc_hw_ctx(pdev, &ade->crtc.base); - if (IS_ERR(ctx)) { - DRM_ERROR("failed to initialize kirin_priv hw ctx\n"); - return -EINVAL; - } - ade->hw_ctx = ctx; - - kcrtc = &ade->crtc; - kcrtc->hw_ctx = ctx; - - /* - * plane init - * TODO: Now only support primary plane, overlay planes - * need to do. - */ - for (ch = 0; ch < ade_driver_data.num_planes; ch++) { - kplane = &ade->planes[ch]; - kplane->ch = ch; - kplane->hw_ctx = ctx; - - if (ch == ade_driver_data.prim_plane) - type = DRM_PLANE_TYPE_PRIMARY; - else - type = DRM_PLANE_TYPE_OVERLAY; - - ret = kirin_drm_plane_init(dev, kplane, type, &ade_driver_data); - if (ret) - return ret; - } - - /* crtc init */ - ret = kirin_drm_crtc_init(dev, &kcrtc->base, - &ade->planes[ade_driver_data.prim_plane].base, - &ade_driver_data); - if (ret) - return ret; - - return 0; -} - static void ade_hw_ctx_cleanup(void *hw_ctx) { } -static void ade_drm_cleanup(struct platform_device *pdev) -{ -} - static const struct drm_mode_config_funcs ade_mode_config_funcs = { .fb_create = drm_gem_fb_create, .atomic_check = drm_atomic_helper_check, @@ -1099,7 +979,4 @@ struct kirin_drm_data ade_driver_data = { .alloc_hw_ctx = ade_hw_ctx_alloc, .cleanup_hw_ctx = ade_hw_ctx_cleanup, - - .init = ade_drm_init, - .cleanup = ade_drm_cleanup }; diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index cc79bd4ecec2..69aa5e1821d6 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -28,6 +28,130 @@ #include "kirin_drm_drv.h" +#define KIRIN_MAX_PLANE 2 + +struct kirin_drm_private { + struct kirin_crtc crtc; + struct kirin_plane planes[KIRIN_MAX_PLANE]; + void *hw_ctx; +}; + +static int kirin_drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, + struct drm_plane *plane, + const struct kirin_drm_data *driver_data) +{ + struct device_node *port; + int ret; + + /* set crtc port so that + * drm_of_find_possible_crtcs call works + */ + port = of_get_child_by_name(dev->dev->of_node, "port"); + if (!port) { + DRM_ERROR("no port node found in %pOF\n", dev->dev->of_node); + return -EINVAL; + } + of_node_put(port); + crtc->port = port; + + ret = drm_crtc_init_with_planes(dev, crtc, plane, NULL, + driver_data->crtc_funcs, NULL); + if (ret) { + DRM_ERROR("failed to init crtc.\n"); + return ret; + } + + drm_crtc_helper_add(crtc, driver_data->crtc_helper_funcs); + + return 0; +} + +static int kirin_drm_plane_init(struct drm_device *dev, struct drm_plane *plane, + enum drm_plane_type type, + const struct kirin_drm_data *data) +{ + int ret = 0; + + ret = drm_universal_plane_init(dev, plane, 1, data->plane_funcs, + data->channel_formats, + data->channel_formats_cnt, + NULL, type, NULL); + if (ret) { + DRM_ERROR("fail to init plane, ch=%d\n", 0); + return ret; + } + + drm_plane_helper_add(plane, data->plane_helper_funcs); + + return 0; +} + +static void kirin_drm_private_cleanup(struct drm_device *dev) +{ + struct kirin_drm_private *kirin_priv = dev->dev_private; + struct kirin_drm_data *data; + + data = (struct kirin_drm_data *)of_device_get_match_data(dev->dev); + if (data->cleanup_hw_ctx) + data->cleanup_hw_ctx(kirin_priv->hw_ctx); + + devm_kfree(dev->dev, kirin_priv); + dev->dev_private = NULL; +} + +static int kirin_drm_private_init(struct drm_device *dev, + const struct kirin_drm_data *driver_data) +{ + struct platform_device *pdev = to_platform_device(dev->dev); + struct kirin_drm_private *kirin_priv; + struct drm_plane *prim_plane; + enum drm_plane_type type; + void *ctx; + int ret; + u32 ch; + + kirin_priv = devm_kzalloc(dev->dev, sizeof(*kirin_priv), GFP_KERNEL); + if (!kirin_priv) { + DRM_ERROR("failed to alloc kirin_drm_private\n"); + return -ENOMEM; + } + + ctx = driver_data->alloc_hw_ctx(pdev, &kirin_priv->crtc.base); + if (IS_ERR(ctx)) { + DRM_ERROR("failed to initialize kirin_priv hw ctx\n"); + return -EINVAL; + } + kirin_priv->hw_ctx = ctx; + + /* + * plane init + * TODO: Now only support primary plane, overlay planes + * need to do. + */ + for (ch = 0; ch < driver_data->num_planes; ch++) { + if (ch == driver_data->prim_plane) + type = DRM_PLANE_TYPE_PRIMARY; + else + type = DRM_PLANE_TYPE_OVERLAY; + ret = kirin_drm_plane_init(dev, &kirin_priv->planes[ch].base, + type, driver_data); + if (ret) + return ret; + kirin_priv->planes[ch].ch = ch; + kirin_priv->planes[ch].hw_ctx = ctx; + } + + /* crtc init */ + prim_plane = &kirin_priv->planes[driver_data->prim_plane].base; + ret = kirin_drm_crtc_init(dev, &kirin_priv->crtc.base, + prim_plane, driver_data); + if (ret) + return ret; + kirin_priv->crtc.hw_ctx = ctx; + dev->dev_private = kirin_priv; + + return 0; +} static int kirin_drm_kms_init(struct drm_device *dev, const struct kirin_drm_data *driver_data) @@ -43,7 +167,7 @@ static int kirin_drm_kms_init(struct drm_device *dev, dev->mode_config.funcs = driver_data->mode_config_funcs; /* display controller init */ - ret = driver_data->init(to_platform_device(dev->dev)); + ret = kirin_drm_private_init(dev, driver_data); if (ret) goto err_mode_config_cleanup; @@ -51,7 +175,7 @@ static int kirin_drm_kms_init(struct drm_device *dev, ret = component_bind_all(dev->dev, dev); if (ret) { DRM_ERROR("failed to bind all component.\n"); - goto err_dc_cleanup; + goto err_private_cleanup; } /* vblank init */ @@ -73,11 +197,10 @@ static int kirin_drm_kms_init(struct drm_device *dev, err_unbind_all: component_unbind_all(dev->dev, dev); -err_dc_cleanup: - driver_data->cleanup(to_platform_device(dev->dev)); +err_private_cleanup: + kirin_drm_private_cleanup(dev); err_mode_config_cleanup: drm_mode_config_cleanup(dev); - return ret; } @@ -88,14 +211,8 @@ static int compare_of(struct device *dev, void *data) static int kirin_drm_kms_cleanup(struct drm_device *dev) { - const struct kirin_drm_data *driver_data; - drm_kms_helper_poll_fini(dev); - - driver_data = of_device_get_match_data(dev->dev); - if (driver_data->cleanup) - driver_data->cleanup(to_platform_device(dev->dev)); - + kirin_drm_private_cleanup(dev); drm_mode_config_cleanup(dev); return 0; diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h index 1663610d2cd8..4d5c05a24065 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h @@ -7,8 +7,6 @@ #ifndef __KIRIN_DRM_DRV_H__ #define __KIRIN_DRM_DRV_H__ -#define MAX_CRTC 2 - #define to_kirin_crtc(crtc) \ container_of(crtc, struct kirin_crtc, base) @@ -53,9 +51,6 @@ struct kirin_drm_data { void *(*alloc_hw_ctx)(struct platform_device *pdev, struct drm_crtc *crtc); void (*cleanup_hw_ctx)(void *hw_ctx); - - int (*init)(struct platform_device *pdev); - void (*cleanup)(struct platform_device *pdev); }; extern struct kirin_drm_data ade_driver_data;