Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1011968yba; Thu, 4 Apr 2019 02:23:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqylx+zGFq5dOpx8C1AF8fsdCLkeYb1bH7mBQv6fFS03VMr/Bdr4Lr6iO18ejZrE8OtDua7H X-Received: by 2002:a62:480d:: with SMTP id v13mr4756796pfa.125.1554369824526; Thu, 04 Apr 2019 02:23:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554369824; cv=none; d=google.com; s=arc-20160816; b=l4BLm9DcyXJ6NTPSOnlKdQ0YPR/M/8212JdBk0K0Tk1+4SPJBZj7pAx8UaulXyHT5M uyEZdMhhSH8Om7fZfL0SVVEeHcWrXA+PSVii6JkkQacP3bkL1LopuybyWOfhWUCUzdGi qDmsVC7v3fEw+zlRkkYQ7g8ThyYFlVjS3tg4+B0VM6uK2LLkzqoeXBtinC74B7Vf4rZW 6Ts3aWwj+tTkbHUZ2uU1zjNL8XOk/fGr+w3ly3RuFySxVCAaTg3UHvIL1gQ4zuZy7bPG TMktTsp6lLvnzp9RZuNfJDOswRz5MlQOc0qFPcj78YZo1/tFTCdJwh1gH1cSSlOYIR8a sJ9g== 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=X/W40JzCiyAWtjO/D2nfSydMrKKiFYViYdaQy0chC3M=; b=jYlHT9Oi9hcJwwc7HxCJ3H73xcGY85GgD1JcBFKycUFS/Vn+RaSGHVWza2jhz0PueQ gd76YWYyFYrsnUbOLasuM0RPuth6ZDqT26vs2lRUiPObse9n0+6xyieO1OVg2I+Jgm2a Uxyvn4+wQ1b/YwOzpjB6J5opl/BB13sf0QjZH/e6kSTEEENred3AcFFl7MCGrNOZQ8ZH hUBQwWROLlr4wAqBcUXd3D4tbWzqDHA2OUQCGiiXMo9J+VIkAsdfcEL40hKTPF6Bm0rN WA+33AwHBff8Nw+r6Zpo9SJX1yT7JtaYXK4qXP4bGabaGGs7hq7/GkaV00mQpGE10M8m r6EQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=0s3H9YXA; 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 v5si14752485pfm.134.2019.04.04.02.23.29; Thu, 04 Apr 2019 02:23:44 -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=0s3H9YXA; 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 S2387900AbfDDJQu (ORCPT + 99 others); Thu, 4 Apr 2019 05:16:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:58042 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387691AbfDDJQq (ORCPT ); Thu, 4 Apr 2019 05:16:46 -0400 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 B72072054F; Thu, 4 Apr 2019 09:16:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554369405; bh=BvjuZ0m2CIC2YgjOvgOIcFzprWbKCHyP1cezF2QDwpM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0s3H9YXAti1pV1MQRLia9gsXjXl4RJwjvnaX25Okg/QkwgNSzdEg6Uk04NXZVKHOJ 2eq0lLpvCWz5GfV/agpPZ6E7SqlzCi+ZJkPvc5qb+ljQAe8H6kx5tZ1RAu4lqGtlht WifC0Cc7YcvXVnaBaTmRi49oqFWZs6UGdSmkhWKE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xingyu Chen , Jianxin Pan , Jerome Brunet , Linus Walleij , Sasha Levin Subject: [PATCH 5.0 211/246] pinctrl: meson: fix G12A ao pull registers base address Date: Thu, 4 Apr 2019 10:48:31 +0200 Message-Id: <20190404084626.579585540@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190404084619.236418459@linuxfoundation.org> References: <20190404084619.236418459@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 5.0-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit e66dd48e8b0dee104d16417d30361074b08baca8 ] Since Meson G12A SoC, Introduce new ao registers AO_RTI_PULL_UP_EN_REG and AO_GPIO_O. These bits of controlling output level are remapped to the new register AO_GPIO_O, and the AO_GPIO_O_EN_N support only controlling output enable. These bits of controlling pull enable are remapped to the new register AO_RTI_PULL_UP_EN_REG, and the AO_RTI_PULL_UP_REG support only controlling pull type(up/down). The new layout of ao gpio/pull registers is as follows: - AO_GPIO_O_EN_N [offset: 0x9 << 2] - AO_GPIO_I [offset: 0xa << 2] - AO_RTI_PULL_UP_REG [offset: 0xb << 2] - AO_RTI_PULL_UP_EN_REG [offset: 0xc << 2] - AO_GPIO_O [offset: 0xd << 2] >From above, we can see ao GPIO registers region has been separated by the ao pull registers. In order to ensure the continuity of the region on software, the ao GPIO and ao pull registers use the same base address, but can be identified by the offset. Fixes: 29ae0952e85f ("pinctrl: meson-g12a: add pinctrl driver support") Signed-off-by: Xingyu Chen Signed-off-by: Jianxin Pan Signed-off-by: Jerome Brunet Signed-off-by: Linus Walleij Signed-off-by: Sasha Levin --- drivers/pinctrl/meson/pinctrl-meson.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c index ea87d739f534..a4ae1ac5369e 100644 --- a/drivers/pinctrl/meson/pinctrl-meson.c +++ b/drivers/pinctrl/meson/pinctrl-meson.c @@ -31,6 +31,9 @@ * In some cases the register ranges for pull enable and pull * direction are the same and thus there are only 3 register ranges. * + * Since Meson G12A SoC, the ao register ranges for gpio, pull enable + * and pull direction are the same, so there are only 2 register ranges. + * * For the pull and GPIO configuration every bank uses a contiguous * set of bits in the register sets described above; the same register * can be shared by more banks with different offsets. @@ -488,23 +491,22 @@ static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc, return PTR_ERR(pc->reg_mux); } - pc->reg_pull = meson_map_resource(pc, gpio_np, "pull"); - if (IS_ERR(pc->reg_pull)) { - dev_err(pc->dev, "pull registers not found\n"); - return PTR_ERR(pc->reg_pull); + pc->reg_gpio = meson_map_resource(pc, gpio_np, "gpio"); + if (IS_ERR(pc->reg_gpio)) { + dev_err(pc->dev, "gpio registers not found\n"); + return PTR_ERR(pc->reg_gpio); } + pc->reg_pull = meson_map_resource(pc, gpio_np, "pull"); + /* Use gpio region if pull one is not present */ + if (IS_ERR(pc->reg_pull)) + pc->reg_pull = pc->reg_gpio; + pc->reg_pullen = meson_map_resource(pc, gpio_np, "pull-enable"); /* Use pull region if pull-enable one is not present */ if (IS_ERR(pc->reg_pullen)) pc->reg_pullen = pc->reg_pull; - pc->reg_gpio = meson_map_resource(pc, gpio_np, "gpio"); - if (IS_ERR(pc->reg_gpio)) { - dev_err(pc->dev, "gpio registers not found\n"); - return PTR_ERR(pc->reg_gpio); - } - return 0; } -- 2.19.1