From patchwork Mon Jul 3 17:55:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Clark X-Patchwork-Id: 9823781 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 3C2DB604D9 for ; Mon, 3 Jul 2017 17:55:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 316BE26E49 for ; Mon, 3 Jul 2017 17:55:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 26145285C1; Mon, 3 Jul 2017 17:55:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B48A426E49 for ; Mon, 3 Jul 2017 17:55:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 990A16E11D; Mon, 3 Jul 2017 17:55:52 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-qk0-x243.google.com (mail-qk0-x243.google.com [IPv6:2607:f8b0:400d:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7AE656E11D for ; Mon, 3 Jul 2017 17:55:51 +0000 (UTC) Received: by mail-qk0-x243.google.com with SMTP id 91so24842449qkq.1 for ; Mon, 03 Jul 2017 10:55:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=ryWeDzqIP+9o67fZWzUySQ4iY7bZ+vJyMjwVH7WYN44=; b=WKQPGYxKK5CarVa/o+bDYH81aICfKmbyB6hQSQr/9yZkPiqDMYaXPTtfgtptai9jBe I++6Q6GOOAfn+U2Qi9UmRT56yDDsyN2f1ZuYhLayTKARLjiIUd0biZPASpGREBFGoS8I Rwwqi7YwgrlOg8xF8b7nU3+gtA+kaOWbx3/Clm5sedBNzukb52sRm+YD+36hxROsBNKY e0gNu3tufgazvgnAc78L5++h2ybrUlshx7Bzsm+n8G1YWTpx8u+ebT1ovAqojsMTvuEi QVW+7qH8kwLL6GdDaXuBDetuZ5rBlp9gVXYQ/Fgy3FDSn9APE0lTu6q7gfUpvRFQC/4g 5pXA== 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; bh=ryWeDzqIP+9o67fZWzUySQ4iY7bZ+vJyMjwVH7WYN44=; b=eZCXfD37nRvQkUtSxenmg+9f8dLc3fgp6rve2j0G3PB9AM5PqJcGXqzekF0yC5Xliz 8HSih2cWXNTc1PAuSWkxt50Y4txcUTTxGXsABIBezr8d3gvVeFHiCAN6UX1F1DazmFvi YcW4acUsojY5VHmWseCjGtfBA0wFRTZpUicKsRPiN4kF7u1JYYzTtYNEj0p4j+TpserB PbKiVffYihYaLiUdN3mn04a9F+L4xhip1IHSmc7bPJFmRlY8wkgZT1qs5ozTj7gV/rEm J94W7RIDXZoci11sZrwjg1jCLuEQ7PQFp6l6TVo+oKac5G8OU0tzHovC68IiOr/9td7A +/0A== X-Gm-Message-State: AKS2vOyJPrjBDo8cPmCuX54g+0ENT+VSCkRv3BZwB27vCaxJQiHG4qhI Lnf3lGE49oggcUXi2gc= X-Received: by 10.55.40.140 with SMTP id o12mr41408563qko.50.1499104550283; Mon, 03 Jul 2017 10:55:50 -0700 (PDT) Received: from localhost ([2601:184:4780:aac0:25f8:dd96:a084:785a]) by smtp.gmail.com with ESMTPSA id r191sm12128482qke.22.2017.07.03.10.55.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Jul 2017 10:55:48 -0700 (PDT) From: Rob Clark To: dri-devel@lists.freedesktop.org Subject: [PATCH 1/2] drm/msm/mdp5: add tracking for clk enable-count Date: Mon, 3 Jul 2017 13:55:41 -0400 Message-Id: <20170703175542.30760-1-robdclark@gmail.com> X-Mailer: git-send-email 2.9.4 Cc: linux-arm-msm@vger.kernel.org, pbrobinson@gmail.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Accessing registers for an unclocked block is an insta-reboot on snapdragon devices. So add a bit of logic to track the enable_count so we can WARN_ON() unclocked register writes. This makes it much easier to track down mistakes. Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 5 +++++ drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c index d3d6b4c..1189128 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c @@ -249,6 +249,9 @@ int mdp5_disable(struct mdp5_kms *mdp5_kms) { DBG(""); + mdp5_kms->enable_count--; + WARN_ON(mdp5_kms->enable_count < 0); + clk_disable_unprepare(mdp5_kms->ahb_clk); clk_disable_unprepare(mdp5_kms->axi_clk); clk_disable_unprepare(mdp5_kms->core_clk); @@ -262,6 +265,8 @@ int mdp5_enable(struct mdp5_kms *mdp5_kms) { DBG(""); + mdp5_kms->enable_count++; + clk_prepare_enable(mdp5_kms->ahb_clk); clk_prepare_enable(mdp5_kms->axi_clk); clk_prepare_enable(mdp5_kms->core_clk); diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h index 8bdb7ee..c78faf0 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h @@ -80,6 +80,8 @@ struct mdp5_kms { bool rpm_enabled; struct mdp_irq error_handler; + + int enable_count; }; #define to_mdp5_kms(x) container_of(x, struct mdp5_kms, base) @@ -171,11 +173,13 @@ struct mdp5_encoder { static inline void mdp5_write(struct mdp5_kms *mdp5_kms, u32 reg, u32 data) { + WARN_ON(mdp5_kms->enable_count <= 0); msm_writel(data, mdp5_kms->mmio + reg); } static inline u32 mdp5_read(struct mdp5_kms *mdp5_kms, u32 reg) { + WARN_ON(mdp5_kms->enable_count <= 0); return msm_readl(mdp5_kms->mmio + reg); }