Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2168132yba; Wed, 3 Apr 2019 02:44:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqzEeGXJnlnuwSQnYB8RGHvJc3boVIgdVoVhDHlSdISHg8HH3/uliEscI3rJhLfV7XzeAEce X-Received: by 2002:a17:902:f094:: with SMTP id go20mr52981517plb.159.1554284666418; Wed, 03 Apr 2019 02:44:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554284666; cv=none; d=google.com; s=arc-20160816; b=GcEEta2DsgDgpT3YYLm+r4mFzdnL54RExZvSHq67scBeqMQMeQK+ujzoM4RoUraTNc y15ENk6Y3SE9WSgGseE3Fk3VLdI6tI+pVCqbRG7Mg64n5ruBUXJv/jKs5Z7S0Yyth2XV n54k/iy8+F363xTsRYWVL+/WLW4tdtuGuGnenPqbOFKumdstfvx26pCBL+yuwhdn4OSN PRnJqPCxE0GQse4d90iIh7ONli77vzZ1CGLb1apDTTFL53RagaKPWH/q6c1Q3TQvRd74 8xGuBho1U5BJ0H1Lyq5/Bo+q4fjYeca/vHz4vY9UAQMkDnzUA7YjU2KuBnHKwu+oS6kK 79pg== 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; bh=zjHOsyCn3ab+8wr4G1vD7aia3MLX8at3vtxB67V497w=; b=Etr5hCCV7ft3nNuTnDuyE+KrpvFgrKL4ZJg5xdYGfecOjffQaBqGNnIv33YD6GyGVm GEouSNtGLl5S+A4tLz1srfOgvZVx4mRhO1Y7pKudFfenl+p5hE0ErIW7Qi8Hw0lcuVIp x6/LJPhWYHQm6cxY5riOsyuTREbpbTJSpZ7jGC+gG0TDnxKzHxuISVgumXxCc6/Mx8hP 0He+apJ4scc6A/kDCSow8koPedQZByhzW+ml/PpGC/uAju/ugLqjaJTrnXGc+7fL3wg7 fWZ+jQGSjtZXH0bUE34V4IsPgXT26F6ggL4bBdooF2UChQVPqLWVPUvxgdf4g7vE2idj NVwg== ARC-Authentication-Results: i=1; mx.google.com; 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 a1si7504028pgd.394.2019.04.03.02.44.11; Wed, 03 Apr 2019 02:44:26 -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; 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 S1726199AbfDCJmi (ORCPT + 99 others); Wed, 3 Apr 2019 05:42:38 -0400 Received: from regular1.263xmail.com ([211.150.70.201]:52044 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725907AbfDCJmi (ORCPT ); Wed, 3 Apr 2019 05:42:38 -0400 Received: from zhangqing?rock-chips.com (unknown [192.168.167.130]) by regular1.263xmail.com (Postfix) with ESMTP id 891D630D; Wed, 3 Apr 2019 17:42:35 +0800 (CST) X-263anti-spam: KSV:0;BIG:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ADDR-CHECKED4: 1 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ANTISPAM-LEVEL: 2 Received: from localhost.localdomain (unknown [58.22.7.114]) by smtp.263.net (postfix) whith ESMTP id P18217T139987412580096S1554284546411238_; Wed, 03 Apr 2019 17:42:33 +0800 (CST) X-IP-DOMAINF: 1 X-UNIQUE-TAG: <8bf4afa24df6c8ebd83ad45a928975ab> X-RL-SENDER: zhangqing@rock-chips.com X-SENDER: zhangqing@rock-chips.com X-LOGIN-NAME: zhangqing@rock-chips.com X-FST-TO: heiko@sntech.de X-SENDER-IP: 58.22.7.114 X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 From: Elaine Zhang To: heiko@sntech.de Cc: mturquette@baylibre.com, sboyd@kernel.org, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, xxx@rock-chips.com, xf@rock-chips.com, huangtao@rock-chips.com, Elaine Zhang Subject: [PATCH v1 4/6] clk: rockchip: add a clock-type for muxes based in the pmugrf Date: Wed, 3 Apr 2019 17:42:27 +0800 Message-Id: <1554284549-24916-5-git-send-email-zhangqing@rock-chips.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1554284549-24916-1-git-send-email-zhangqing@rock-chips.com> References: <1554284549-24916-1-git-send-email-zhangqing@rock-chips.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Rockchip socs often have some tiny number of muxes not controlled from the core clock controller but through bits set in the pmugrf. Use MUXPMUGRF() to cover this special clock-type. Signed-off-by: Elaine Zhang --- drivers/clk/rockchip/clk.c | 9 +++++++++ drivers/clk/rockchip/clk.h | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/drivers/clk/rockchip/clk.c b/drivers/clk/rockchip/clk.c index 0a8a694a41ab..875412043dd7 100644 --- a/drivers/clk/rockchip/clk.c +++ b/drivers/clk/rockchip/clk.c @@ -415,6 +415,8 @@ struct rockchip_clk_provider * __init rockchip_clk_init(struct device_node *np, ctx->grf = syscon_regmap_lookup_by_phandle(ctx->cru_node, "rockchip,grf"); + ctx->pmugrf = syscon_regmap_lookup_by_phandle(ctx->cru_node, + "rockchip,pmugrf"); return ctx; @@ -490,6 +492,13 @@ void __init rockchip_clk_register_branches( list->mux_shift, list->mux_width, list->mux_flags); break; + case branch_muxpmugrf: + clk = rockchip_clk_register_muxgrf(list->name, + list->parent_names, list->num_parents, + flags, ctx->pmugrf, list->muxdiv_offset, + list->mux_shift, list->mux_width, + list->mux_flags); + break; case branch_divider: if (list->div_table) clk = clk_register_divider_table(NULL, diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h index 20200a707611..1b30346f11e1 100644 --- a/drivers/clk/rockchip/clk.h +++ b/drivers/clk/rockchip/clk.h @@ -234,6 +234,7 @@ struct rockchip_clk_provider { struct clk_onecell_data clk_data; struct device_node *cru_node; struct regmap *grf; + struct regmap *pmugrf; spinlock_t lock; }; @@ -386,6 +387,7 @@ enum rockchip_clk_branch_type { branch_composite, branch_mux, branch_muxgrf, + branch_muxpmugrf, branch_divider, branch_fraction_divider, branch_gate, @@ -658,6 +660,21 @@ struct rockchip_clk_branch { .gate_offset = -1, \ } +#define MUXPMUGRF(_id, cname, pnames, f, o, s, w, mf) \ + { \ + .id = _id, \ + .branch_type = branch_muxpmugrf, \ + .name = cname, \ + .parent_names = pnames, \ + .num_parents = ARRAY_SIZE(pnames), \ + .flags = f, \ + .muxdiv_offset = o, \ + .mux_shift = s, \ + .mux_width = w, \ + .mux_flags = mf, \ + .gate_offset = -1, \ + } + #define DIV(_id, cname, pname, f, o, s, w, df) \ { \ .id = _id, \ -- 1.9.1