Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp362096pxj; Thu, 27 May 2021 01:51:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtaELg5FV/tVbaDvSgHD7iFjeHwey4Ug5eXrrB/adKIywUv8sqL7+nY78f99SfyZ1HYfHK X-Received: by 2002:a17:907:1c20:: with SMTP id nc32mr2740171ejc.105.1622105490167; Thu, 27 May 2021 01:51:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622105490; cv=none; d=google.com; s=arc-20160816; b=qNk2/FZQbH2WmqE9+Te03ev1v+Le4+x4iF/E47OTr6P6zQ6NaBOMMNrySF6u+zoFh7 30tl0Gze1/Iza41Q6pkQWD/Koa0CGLZWzg1bqdEtNM4Ye0P9spsiBOxepI2ac56a2n+F 7cFO6pyR505dyT5359qPcVGApfPWuK1HDF8TF6L+bWTQ+FSyVBkRws2ncU6mj9jPCGK7 dDIidC0G2/eAYuFCzgNM362ffuIBigYdzkc+RmVBbIK5eoFIY8cMtjrTfV6W9ohk2IB4 QSeksvDPPtd4F7ZYqzESujsdiA6C582/B1NwCE9hGF1zbuTcQa7/xaRU1duFMoKbMTIm L75g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=s6QZc1a1k2RrUXStALODPQQ07+U44ltNTSbrQpxxNPA=; b=xoST8lVe9N/JHaP16t4CsPS2f7gHWY+xDoJ/CASARHKqB71YLkhcacVszvrfim1aA3 RmiRD57Z7cAUowPexTZtibwl4va7e80tmg5Q1TtlZghm6UDpyY2ZfOjjKO128H08kjxP T2oYCpNAeC3bKh6NARepckQpf75OBhccEPMCEA6pPWyLkOrfydBIWUmzXAH0IM3H0rOZ WyOnTyPWvfmOppXeCFKr6acScM1b1QSEBoaEe0Bw5sJShDRrgYRXSFumGHFjucUTns15 RYWRlGCIFrBipuwrNrEp+NW4F2tMb+ZGsrtJ7hcIEiktdbQ9D5huz7vcLuY6NQow9kOD OXxg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t20si1473902edw.7.2021.05.27.01.51.05; Thu, 27 May 2021 01:51:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235808AbhE0Iut (ORCPT + 99 others); Thu, 27 May 2021 04:50:49 -0400 Received: from gloria.sntech.de ([185.11.138.130]:35092 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235741AbhE0Iu1 (ORCPT ); Thu, 27 May 2021 04:50:27 -0400 Received: from ip5f5aa64a.dynamic.kabel-deutschland.de ([95.90.166.74] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lmBhB-0006sN-AU; Thu, 27 May 2021 10:48:49 +0200 From: Heiko =?ISO-8859-1?Q?St=FCbner?= To: linus.walleij@linaro.org, robh+dt@kernel.org, Jianqun Xu Cc: linux-gpio@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Jianqun Xu Subject: Re: [PATCH v5 5/7] gpio/rockchip: support next version gpio controller Date: Thu, 27 May 2021 10:48:48 +0200 Message-ID: <4162826.Y6S9NjorxK@diego> In-Reply-To: <20210527071345.1424493-1-jay.xu@rock-chips.com> References: <20210527071239.1424430-1-jay.xu@rock-chips.com> <20210527071345.1424493-1-jay.xu@rock-chips.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am Donnerstag, 27. Mai 2021, 09:13:45 CEST schrieb Jianqun Xu: > The next version gpio controller on SoCs like rk3568 have more write > mask bits for registers. > > Signed-off-by: Jianqun Xu > @@ -549,15 +677,33 @@ static int rockchip_get_bank_data(struct rockchip_pin_bank *bank) > return PTR_ERR(bank->reg_base); > > bank->irq = irq_of_parse_and_map(bank->of_node, 0); > - > - bank->gpio_regs = &gpio_regs_v1; > - bank->gpio_type = GPIO_TYPE_V1; > + if (!bank->irq) > + return -EINVAL; > > bank->clk = of_clk_get(bank->of_node, 0); > - if (!IS_ERR(bank->clk)) > - return clk_prepare(bank->clk); > + if (IS_ERR(bank->clk)) > + return PTR_ERR(bank->clk); > + > + clk_prepare_enable(bank->clk); > + id = readl(bank->reg_base + gpio_regs_v2.version_id); > + > + /* If not gpio v2, that is default to v1. */ > + if (id == GPIO_TYPE_V2) { > + bank->gpio_regs = &gpio_regs_v2; > + bank->gpio_type = GPIO_TYPE_V2; > + bank->db_clk = of_clk_get(bank->of_node, 1); > + if (IS_ERR(bank->db_clk)) { > + dev_err(bank->dev, "cannot find debounce clk\n"); > + bank->db_clk = NULL; > + clk_disable(bank->clk); > + return -EINVAL; > + } > + } else { > + bank->gpio_regs = &gpio_regs_v1; > + bank->gpio_type = GPIO_TYPE_V1; > + } > > - bank->clk = NULL; > + clk_disable(bank->clk); NIT: you could move the "always enable clock for gpio controller" patch before adding the v2 support. That way you save on not needing to add the clock handling here. Otherwise looks nice to me. Acked-by: Heiko Stuebner Heiko > return 0; > } > > diff --git a/drivers/pinctrl/pinctrl-rockchip.h b/drivers/pinctrl/pinctrl-rockchip.h > index 1b774b6bbc3e..589d4d2a98c9 100644 > --- a/drivers/pinctrl/pinctrl-rockchip.h > +++ b/drivers/pinctrl/pinctrl-rockchip.h > @@ -121,6 +121,7 @@ struct rockchip_drv { > * @reg_base: register base of the gpio bank > * @regmap_pull: optional separate register for additional pull settings > * @clk: clock of the gpio bank > + * @db_clk: clock of the gpio debounce > * @irq: interrupt of the gpio bank > * @saved_masks: Saved content of GPIO_INTEN at suspend time. > * @pin_base: first pin number > @@ -146,6 +147,7 @@ struct rockchip_pin_bank { > void __iomem *reg_base; > struct regmap *regmap_pull; > struct clk *clk; > + struct clk *db_clk; > int irq; > u32 saved_masks; > u32 pin_base; >