Received: by 10.223.164.221 with SMTP id h29csp261662wrb; Fri, 3 Nov 2017 08:44:25 -0700 (PDT) X-Google-Smtp-Source: ABhQp+TR5v2PR0+tSS2elLm0nF5m2HQmRxf9ip5OVEUQTJlCXXExuBItJAjMz7Zq9oehBNBEneNE X-Received: by 10.84.235.136 with SMTP id p8mr7023597plk.263.1509723865299; Fri, 03 Nov 2017 08:44:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509723865; cv=none; d=google.com; s=arc-20160816; b=Rlr+ldaOKcAIYmwMKR533hiR4CfQtw7plmxSiy0FSB4vJcIxADTbUQGaOxRKGjMPwv suU+viMeTvtdnqTiIiJwmVF17CVPtsmRnjipQPccKAf2otYBv03SBH4dzDVp4brTJLW2 NZltaWGfIlRAMKtmZ1ajADpSrdhWRe6CJ4XN/9ldfKa/DnS529oW1jxg+zSfhs8mdMp8 8xPATdTwuCGb7myxMsAEhVtLfaQE/eWL97ZZYPaGVcCFl2CUAKZENcAafOlv2ybdpsOR l1plhxYPugYiBPY7lYS+ASS/nBV2PorEkAiIALQOZlhG83f0fhgj/MIsIJTbu+O3L3Un d6nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=is80e3MsLjFSRQb3YC1gcvPWSbxy4knq7iyNNa5lowc=; b=rLMtdJj1bzvKZGRsx6Dd3h2rCd71nuc/7KXwyr07lkpZVB9KW7uUoQxDUMBs2rzJ4k nmUhQWpLNM/zeFE2SahhBOjkcJ6NEmPsCKaegobDpu5NlEoNYNB93ZJ4MQU8t01JG1Kn YxdMJEo3DFcU5IQ1FR+WALIoN9qztK/oqPpdyQZLjSvmxoN95Ra8cwqbhm1LTASLN3gd Ti4OfrMXpGIMCD9KoEP4vBhULmGONBveTX6XjUoKS/3xSFl2/b4b3vw/fgmb/n027uVd z57n2HTq36x1FLWA/9hlgSb05Q6/utCb8LUZYlMJBdWoa/4kL9SvD8CRy5R2V/7GfYXy C6Gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=A3PqW1oy; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e3si6324641pga.132.2017.11.03.08.44.11; Fri, 03 Nov 2017 08:44:25 -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=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=A3PqW1oy; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755825AbdKCPnd (ORCPT + 95 others); Fri, 3 Nov 2017 11:43:33 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:49101 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751736AbdKCPnb (ORCPT ); Fri, 3 Nov 2017 11:43:31 -0400 Received: by mail-wr0-f193.google.com with SMTP id 15so2885792wrb.5 for ; Fri, 03 Nov 2017 08:43:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=is80e3MsLjFSRQb3YC1gcvPWSbxy4knq7iyNNa5lowc=; b=A3PqW1oyij9u5fWcDKa+n59Pgyz9iEzChbLkHIHcZvLEThw7bN21Wn3H//qM8UwJNn 10/2nCMJSgkBTO1qlX2c5oOUaVPnUM2afNj+RW84JjfegxnD4uaoNq5mtOW6Wc8/yPhY jT7q0oFESpzZJVtUuvB+VAxdlwqitl65yYZpN90lMgTtbM6mLgCEusEXvUDE04huua6N Eb0PAgSsVZM1zPDAsqyKhT86OSVXofChlmYyFtSPi5MZYUSBzzLEg2y1ucUzHHQ6k7+O j238bkD/h2cSwXSbAMQJfcMB+7Z7hAqOklGfDzazeRJ3Q7O3Y+DeRWpFDG+GGwurAWvq DIMg== 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=is80e3MsLjFSRQb3YC1gcvPWSbxy4knq7iyNNa5lowc=; b=hbEjp12aCTCpaZDa8cv4MeS++4c2qtpNIn1kwngc4YB7iuIiVRKvZUgaFow3dx3qqP GPSrbVZvS02M3xW71ZZ33rPYYd0/nIjL1rMoEFMAQwRwi4asOFt1oMAWrgCk0ZrurjH1 UgfpIO/Gg65EIqnkuk3VM6jxsWc52a/9wiiipjQnJxruKx6ptGsbcXtcv8pwlbouT8bC +qhdskCuEorDG661kIvvERB8xoYUBtMAoDgHXg8eApFHAq0LEbtzr/B2u+TN4fBbFB/h kWGZ8oxTl4GP/igy6lzlGNvfXR6l04fdhciUB4Mm9/B4t/uP5ERI7SSvMBlIAKA1KBfg cZuQ== X-Gm-Message-State: AMCzsaVTwdwtgtlyaOkhGT6t0M/SRBIWV0gr+tWbxncqsV/AWUDJLOj0 8dL+wz4ecUgCGP7Mo1DQpbTLnw== X-Received: by 10.223.183.13 with SMTP id l13mr6710990wre.1.1509723809909; Fri, 03 Nov 2017 08:43:29 -0700 (PDT) Received: from localhost.localdomain ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id q3sm4248144wrd.78.2017.11.03.08.43.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 03 Nov 2017 08:43:29 -0700 (PDT) From: Neil Armstrong To: khilman@baylibre.com, carlo@caione.org Cc: Neil Armstrong , linux-pm@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] soc: amlogic: meson-gx-pwrc-vpu: fix power-off when powered by bootloader Date: Fri, 3 Nov 2017 16:43:24 +0100 Message-Id: <1509723804-21114-1-git-send-email-narmstrong@baylibre.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the case the VPU power domain has been powered on by the bootloader and no driver are attached to this power domain, the genpd will power it off after a certain amount of time, but the clocks hasn't been enabled by the kernel itself and the power-off will trigger some faults. This patch enable the clocks to have a coherent state for an eventual poweroff and switches to the pm_domain_always_on_gov governor. Fixes: 75fcb5ca4b46 ("soc: amlogic: add Meson GX VPU Domains driver") Signed-off-by: Neil Armstrong --- drivers/soc/amlogic/meson-gx-pwrc-vpu.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/drivers/soc/amlogic/meson-gx-pwrc-vpu.c b/drivers/soc/amlogic/meson-gx-pwrc-vpu.c index bf5190b..2bdeebc 100644 --- a/drivers/soc/amlogic/meson-gx-pwrc-vpu.c +++ b/drivers/soc/amlogic/meson-gx-pwrc-vpu.c @@ -34,7 +34,6 @@ struct meson_gx_pwrc_vpu { struct reset_control *rstc; struct clk *vpu_clk; struct clk *vapb_clk; - bool powered; }; static inline @@ -78,8 +77,6 @@ static int meson_gx_pwrc_vpu_power_off(struct generic_pm_domain *genpd) clk_disable_unprepare(pd->vpu_clk); clk_disable_unprepare(pd->vapb_clk); - pd->powered = false; - return 0; } @@ -91,7 +88,11 @@ static int meson_gx_pwrc_vpu_setup_clk(struct meson_gx_pwrc_vpu *pd) if (ret) return ret; - return clk_prepare_enable(pd->vapb_clk); + ret = clk_prepare_enable(pd->vapb_clk); + if (ret) + clk_disable_unprepare(pd->vpu_clk); + + return ret; } static int meson_gx_pwrc_vpu_power_on(struct generic_pm_domain *genpd) @@ -139,8 +140,6 @@ static int meson_gx_pwrc_vpu_power_on(struct generic_pm_domain *genpd) if (ret) return ret; - pd->powered = true; - return 0; } @@ -167,6 +166,8 @@ static int meson_gx_pwrc_vpu_probe(struct platform_device *pdev) struct reset_control *rstc; struct clk *vpu_clk; struct clk *vapb_clk; + bool powered_off; + int ret; regmap_ao = syscon_node_to_regmap(of_get_parent(pdev->dev.of_node)); if (IS_ERR(regmap_ao)) { @@ -205,8 +206,17 @@ static int meson_gx_pwrc_vpu_probe(struct platform_device *pdev) vpu_hdmi_pd.vpu_clk = vpu_clk; vpu_hdmi_pd.vapb_clk = vapb_clk; - pm_genpd_init(&vpu_hdmi_pd.genpd, &simple_qos_governor, - meson_gx_pwrc_vpu_get_power(&vpu_hdmi_pd)); + powered_off = meson_gx_pwrc_vpu_get_power(&vpu_hdmi_pd); + + /* If already powered, sync the clock states */ + if (!powered_off) { + ret = meson_gx_pwrc_vpu_setup_clk(&vpu_hdmi_pd); + if (ret) + return ret; + } + + pm_genpd_init(&vpu_hdmi_pd.genpd, &pm_domain_always_on_gov, + powered_off); return of_genpd_add_provider_simple(pdev->dev.of_node, &vpu_hdmi_pd.genpd); @@ -214,8 +224,7 @@ static int meson_gx_pwrc_vpu_probe(struct platform_device *pdev) static void meson_gx_pwrc_vpu_shutdown(struct platform_device *pdev) { - if (vpu_hdmi_pd.powered) - meson_gx_pwrc_vpu_power_off(&vpu_hdmi_pd.genpd); + meson_gx_pwrc_vpu_power_off(&vpu_hdmi_pd.genpd); } static const struct of_device_id meson_gx_pwrc_vpu_match_table[] = { -- 2.7.4 From 1583574035672058705@xxx Thu Nov 09 07:51:25 +0000 2017 X-GM-THRID: 1583464692798994006 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread