Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp869867ybl; Wed, 11 Dec 2019 08:45:28 -0800 (PST) X-Google-Smtp-Source: APXvYqzaWVhUYuvm/KhHs5mDQHB3KsHGzrBqtCyFeVMLGNfvvyRD14w1ihCywHiNqkph6AEgFFAm X-Received: by 2002:a9d:7999:: with SMTP id h25mr2918693otm.347.1576082728464; Wed, 11 Dec 2019 08:45:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576082728; cv=none; d=google.com; s=arc-20160816; b=IxG/9gYB0I2sPTNvSpeHwp8f0ZixGl6hxPyIYXmelCL5EkIkkAlYUPwVVgh2CPNFP1 Qys0GMO3dBhb5lDiLSwMjQRccRFGCyMpRiEAyE7VpgvHjqSxTBsulrDaOQ+1/skpgFRE lgSQJAk3JJNwb3Z0YiU5eUkbQrdXRlbQxVHMQxzLOXxM07zKsjd51tXGAPdoBqnXoIBY XY3WiY2HAbPBCsxnFhUk/DIN4zDHFECZ7FLb2NqfKZiSFgJcGcI7mKy5aueijuX5chpv OCFuWE8jC78rjC/Y7rq+tgyEGfJn8vnX5Sjbt1PZgwR9Hky/hxsGTq9WLF2X3CsJJE76 DNow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ykUwY1kg8rX2f+jqm8kL4ulwaSFsc4VCSgH9REJCzik=; b=hIou49UbzJmXQ7u03FddQjqbIAqvYstk5fQIgTMTeXBYN5Wsek8mbLcRZC/Wnq10Vu uAHDE4P3/SsqqRDlhM4qsodKNQvKaLiSalyZ6IMnbNh/eG2zNRfw6VGF0aM0Lubt2LTL S0ia3wgd76WBZ2x/7MicEAp+Ek3afaqedES5fcgzaBBxOHgSPrSE58I71ckwk7P1H3AQ uuVnW6hEFEQAy7VrCqZlvOwMFzkUVMkvV52iRQxV7pZMYEf9f0nzO4g56X3OEB8VSgjQ HXtdtyr4Drr10RzP8cHR8HNRPxFxKR9TX0vLHd/BO2TzJk9gqGmZsiBYu51sWIR8F70t mwRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ypNoi5fJ; 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 p16si1327363oto.287.2019.12.11.08.45.12; Wed, 11 Dec 2019 08:45:28 -0800 (PST) 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=@kernel.org header.s=default header.b=ypNoi5fJ; 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 S1732894AbfLKPYs (ORCPT + 99 others); Wed, 11 Dec 2019 10:24:48 -0500 Received: from mail.kernel.org ([198.145.29.99]:56170 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732876AbfLKPYo (ORCPT ); Wed, 11 Dec 2019 10:24:44 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id ED0FC208C3; Wed, 11 Dec 2019 15:24:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576077883; bh=+tUap1Kb/lal8rHG71c3bSLAIRXCJ/bSSaakJcTY2To=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ypNoi5fJkzQemzPtOwp2BRyYdtEWrX7TZyihQl1iVXxIrSuGOAIye6rZ+qZuY6UdM IYecHrjCG2tsKxSsz1jmhKzpbEFZ8gbMxAjUIGq/PpVp6qp8hOMsuG4NFj9MkhU/sb L8EOh+j9ut7e/9gZnyHfIDMpjUSlz0uhqvCPcBHY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Niklas=20S=C3=B6derlund?= , Wolfram Sang , Geert Uytterhoeven , Sasha Levin Subject: [PATCH 4.19 190/243] clk: renesas: rcar-gen3: Set state when registering SD clocks Date: Wed, 11 Dec 2019 16:05:52 +0100 Message-Id: <20191211150351.996407413@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191211150339.185439726@linuxfoundation.org> References: <20191211150339.185439726@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Niklas Söderlund [ Upstream commit ecda0a09fa9933bcd67e33c952f778f0872392ed ] The driver tries to figure out which state a SD clock is in when the clock is registered, instead of setting a known state. This can be problematic for two reasons. 1. If the clock driver can't figure out the state of the clock, registration of the clock fails, and setting of a known state by a clock user is not possible. 2. The state of the clock depends on if and how the bootloader configured it. The driver only checks that the rate is known, not if the clock is stopped or not for example. Fix this by setting a known state and making sure the clock is stopped. Signed-off-by: Niklas Söderlund Tested-by: Wolfram Sang Acked-by: Wolfram Sang Signed-off-by: Geert Uytterhoeven Signed-off-by: Sasha Levin --- drivers/clk/renesas/rcar-gen3-cpg.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/drivers/clk/renesas/rcar-gen3-cpg.c b/drivers/clk/renesas/rcar-gen3-cpg.c index 628b63b85d3f0..9ace7d39cd1b5 100644 --- a/drivers/clk/renesas/rcar-gen3-cpg.c +++ b/drivers/clk/renesas/rcar-gen3-cpg.c @@ -361,7 +361,7 @@ static struct clk * __init cpg_sd_clk_register(const struct cpg_core_clk *core, struct sd_clock *clock; struct clk *clk; unsigned int i; - u32 sd_fc; + u32 val; clock = kzalloc(sizeof(*clock), GFP_KERNEL); if (!clock) @@ -378,17 +378,9 @@ static struct clk * __init cpg_sd_clk_register(const struct cpg_core_clk *core, clock->div_table = cpg_sd_div_table; clock->div_num = ARRAY_SIZE(cpg_sd_div_table); - sd_fc = readl(clock->csn.reg) & CPG_SD_FC_MASK; - for (i = 0; i < clock->div_num; i++) - if (sd_fc == (clock->div_table[i].val & CPG_SD_FC_MASK)) - break; - - if (WARN_ON(i >= clock->div_num)) { - kfree(clock); - return ERR_PTR(-EINVAL); - } - - clock->cur_div_idx = i; + val = readl(clock->csn.reg) & ~CPG_SD_FC_MASK; + val |= CPG_SD_STP_MASK | (clock->div_table[0].val & CPG_SD_FC_MASK); + writel(val, clock->csn.reg); clock->div_max = clock->div_table[0].div; clock->div_min = clock->div_max; -- 2.20.1