Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp4236163ybi; Tue, 11 Jun 2019 03:19:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqwhvLAIYzdA0YWb+1EkJ565I5M1+qGvchx0sph6FHSEZiCqx5ox23RLj2vInmaPjgqHp/17 X-Received: by 2002:a17:90a:37ac:: with SMTP id v41mr13153887pjb.6.1560248361493; Tue, 11 Jun 2019 03:19:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560248361; cv=none; d=google.com; s=arc-20160816; b=mFTcm+quaT2JDAESby81NrV9Sca63cYxlVLGXwAhPiVu86nxJFX4/9gtjBUVtln+QS fo1Dbh2jS3OkRvxYbyOTMM8ZQhXG5e9Bmfq+XstrILLVfyhySSrab25X0k9FI6Uei5ZO sboLRA6b8CJUfkqptHgQwFEMCS8DyR8s6dyHEAcZITfj88WvrTlko0xuXADlROE9QdoC iGiJhxv7cZS2QsSHd/euqpQBUHrhMROA7+3ukBLi6FGFhc0i8VDg3q564L2A7hcRkg6t jP2MfqEA6IPQJYZ2tMmocqccefZvTEWyFFDqk5jButEfTC9gVyCQ5lEahyZ74Oqo80eL IKJw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=aXalJDAVe3HbMiE07YUjsJG4F1bmBRZ+mofbX3HuIqE=; b=jOsdO0yc/o+BZOXwdEG2PLrQMrhRtJCuQVrhlOLQJaaJ8ns+7UXRRxfxkb93ozw+Ts 3ZVwC5Qo2kBba9RJ8Xp8QGKjWVzzi0FATAIxFL8WDq2bQazmXmBXSBCiVcgKmWGQdA7u 8f2gEDCzSAtXgKsRb1mOm7526ngr3uW6K3zEh+SRXakEHII0zjUdDo6Hl8qd7pvzH2Ga hCFX2sOvtzCJ2GeW/RfQMbp3J8nsM8CstCmhownHqIlii5hGayjBJEf7JGJUQQQHyDQG ENP4ESYluK+ZwB6NzqCCGJj+yfiIitYT8p6sOnGhJJRsxrU6yWjqkaIGLqXaMpGb/nu4 3YUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=hhtOahOt; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y13si11094540pgq.172.2019.06.11.03.19.02; Tue, 11 Jun 2019 03:19:21 -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=@kernel.org header.s=default header.b=hhtOahOt; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405537AbfFKKSb (ORCPT + 99 others); Tue, 11 Jun 2019 06:18:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:45900 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405315AbfFKKRY (ORCPT ); Tue, 11 Jun 2019 06:17:24 -0400 Received: from wens.tw (mirror2.csie.ntu.edu.tw [140.112.30.76]) (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 3F49521726; Tue, 11 Jun 2019 10:17:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560248243; bh=2ZPf0hGuA6VMQm+7F68FVzilgXCREpNUpD7L4YolhBw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hhtOahOtrQzpNu57kAB0mvWffYFtZgBR0cXbnZ9m+mCeImaEVW/+OxijHOxCMbu9N lHhun62JZ1j9e7RBOXLcaTJioX3lqMnlUN6f0alqBSU9e00MrVrcMTCKAyBswC0Ue2 m16A1rtig0oMo5n9a0MgbxulPVue3nfG3YnjCaAU= Received: by wens.tw (Postfix, from userid 1000) id 43C1560411; Tue, 11 Jun 2019 18:17:18 +0800 (CST) From: Chen-Yu Tsai To: Maxime Ripard , Stephen Boyd , Michael Turquette Cc: Chen-Yu Tsai , linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Chen-Yu Tsai Subject: [PATCH v2 09/25] clk: sunxi-ng: sun8i-r: Use local parent references for CLK_HW_INIT_* Date: Tue, 11 Jun 2019 18:16:42 +0800 Message-Id: <20190611101658.23855-10-wens@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190611101658.23855-1-wens@kernel.org> References: <20190611101658.23855-1-wens@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chen-Yu Tsai With the new clk parenting code and CLK_HW_INIT_* macros, we can reference parents locally via pointers to struct clk_hw or DT clock-names. Convert existing CLK_HW_INIT_* definitions to describe parents using either struct clk_hw pointers or clock-names from the device tree binding. For the AR100, this also allows us to merge the generic AR100 and the A83T specific one, which only differed in the global clock names for their parent clocks. The device tree bindings used the same name specifiers. Acked-by: Maxime Ripard Signed-off-by: Chen-Yu Tsai --- drivers/clk/sunxi-ng/ccu-sun8i-r.c | 65 ++++++++++++------------------ 1 file changed, 25 insertions(+), 40 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-r.c b/drivers/clk/sunxi-ng/ccu-sun8i-r.c index 71feb7b24e8a..a43e8de873d7 100644 --- a/drivers/clk/sunxi-ng/ccu-sun8i-r.c +++ b/drivers/clk/sunxi-ng/ccu-sun8i-r.c @@ -25,10 +25,13 @@ #include "ccu-sun8i-r.h" -static const char * const ar100_parents[] = { "osc32k", "osc24M", - "pll-periph0", "iosc" }; -static const char * const a83t_ar100_parents[] = { "osc16M-d512", "osc24M", - "pll-periph0", "iosc" }; +static const struct clk_parent_data ar100_parents[] = { + { .fw_name = "losc" }, + { .fw_name = "hosc" }, + { .fw_name = "pll-periph" }, + { .fw_name = "iosc" }, +}; + static const struct ccu_mux_var_prediv ar100_predivs[] = { { .index = 2, .shift = 8, .width = 5 }, }; @@ -47,31 +50,10 @@ static struct ccu_div ar100_clk = { .common = { .reg = 0x00, .features = CCU_FEATURE_VARIABLE_PREDIV, - .hw.init = CLK_HW_INIT_PARENTS("ar100", - ar100_parents, - &ccu_div_ops, - 0), - }, -}; - -static struct ccu_div a83t_ar100_clk = { - .div = _SUNXI_CCU_DIV_FLAGS(4, 2, CLK_DIVIDER_POWER_OF_TWO), - - .mux = { - .shift = 16, - .width = 2, - - .var_predivs = ar100_predivs, - .n_var_predivs = ARRAY_SIZE(ar100_predivs), - }, - - .common = { - .reg = 0x00, - .features = CCU_FEATURE_VARIABLE_PREDIV, - .hw.init = CLK_HW_INIT_PARENTS("ar100", - a83t_ar100_parents, - &ccu_div_ops, - 0), + .hw.init = CLK_HW_INIT_PARENTS_DATA("ar100", + ar100_parents, + &ccu_div_ops, + 0), }, }; @@ -82,10 +64,10 @@ static struct ccu_div apb0_clk = { .common = { .reg = 0x0c, - .hw.init = CLK_HW_INIT("apb0", - "ahb0", - &ccu_div_ops, - 0), + .hw.init = CLK_HW_INIT_HW("apb0", + &ahb0_clk.hw, + &ccu_div_ops, + 0), }, }; @@ -115,7 +97,10 @@ static SUNXI_CCU_MP_WITH_MUX_GATE(ir_clk, "ir", BIT(31), /* gate */ 0); -static const char *const a83t_r_mod0_parents[] = { "osc16M", "osc24M" }; +static const struct clk_parent_data a83t_r_mod0_parents[] = { + { .fw_name = "iosc" }, + { .fw_name = "hosc" }, +}; static const struct ccu_mux_fixed_prediv a83t_ir_predivs[] = { { .index = 0, .div = 16 }, }; @@ -135,15 +120,15 @@ static struct ccu_mp a83t_ir_clk = { .common = { .reg = 0x54, .features = CCU_FEATURE_VARIABLE_PREDIV, - .hw.init = CLK_HW_INIT_PARENTS("ir", - a83t_r_mod0_parents, - &ccu_mp_ops, - 0), + .hw.init = CLK_HW_INIT_PARENTS_DATA("ir", + a83t_r_mod0_parents, + &ccu_mp_ops, + 0), }, }; static struct ccu_common *sun8i_a83t_r_ccu_clks[] = { - &a83t_ar100_clk.common, + &ar100_clk.common, &a83t_apb0_clk.common, &apb0_pio_clk.common, &apb0_ir_clk.common, @@ -182,7 +167,7 @@ static struct ccu_common *sun50i_a64_r_ccu_clks[] = { static struct clk_hw_onecell_data sun8i_a83t_r_hw_clks = { .hws = { - [CLK_AR100] = &a83t_ar100_clk.common.hw, + [CLK_AR100] = &ar100_clk.common.hw, [CLK_AHB0] = &ahb0_clk.hw, [CLK_APB0] = &a83t_apb0_clk.common.hw, [CLK_APB0_PIO] = &apb0_pio_clk.common.hw, -- 2.20.1