From patchwork Tue Dec 18 15:58:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 1015456 Return-Path: X-Original-To: incoming-imx@patchwork.ozlabs.org Delivered-To: patchwork-incoming-imx@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ppjENFL8"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="XzKbHqhR"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43K2lN6TSrz9s3q for ; Wed, 19 Dec 2018 02:59:28 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=bQu7QyVXaOK3/uSp6zULIFk/MOCc5+5NkcsUbXIebXM=; b=ppjENFL8OxuWaM hkPq0fnblAGR6TxdeQjD7S7TiVAfP2t0mWcaQ1v1XPUyOjk1vqWt4BW8xUOn3WYpIeJW0JgabX6QY nwDwN8LmQwEfbcSkLHJB4+ZSHfm5ylriaLrF/TistRycajTCq1nVSutE/oCRGmhURkjfThPx2R2eV xZR2lEeBKTB5d939/vcE3PROJkeiFw7aSgS5ap+dam2V5+pqvc36+s7d5nt6h3N105oavnczmkA47 L2TLCVUZlr8GQB62Dnwm6UwFE4aqMb/eJaBcAP4IYZtiYKrCAXk20hzNF1wL/rBzfdtR45C74dwqR a4kdihh2foHfMD9WOb2A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gZHmD-0004Vb-EI; Tue, 18 Dec 2018 15:59:21 +0000 Received: from mail-lj1-x243.google.com ([2a00:1450:4864:20::243]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gZHlN-0003kg-0l for linux-arm-kernel@lists.infradead.org; Tue, 18 Dec 2018 15:58:32 +0000 Received: by mail-lj1-x243.google.com with SMTP id k15-v6so14646669ljc.8 for ; Tue, 18 Dec 2018 07:58:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=AOxSxA2DTBN1MOMRADhDyHZ9Nkx7f7uCE3hXAzrT1aY=; b=XzKbHqhRMtE5i8PxD1Ei1M38nKxCW4rCD3ElaN7GKR4HB6fDPhy3H5ySpWnUfpl77f 6fDFxvHzvoO3Dw+vc1yFJ1SNhE6JpOBlU8JWjShtiY10/hEFHpEVq8CybQZWoQkWZ5pK ltQ0bnBJ3XEI7cBnlUYOV4wlt1tpn4zD9+X6Zwuxogkybrh9U+MbzKGXRwv+j5/yGOY8 2nzh7f0fdtYJ8Bvt3Pyago90PiwVbqL6zWqS9UsUKYidWy3SRZvKytKKXEQHG8MjR6L0 9yY+c4tceNOLOgWl8abAsisLfPM35TqVjMBmglw0MBMvUrtkKhAk1wfobdfYykksJg54 sVaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=AOxSxA2DTBN1MOMRADhDyHZ9Nkx7f7uCE3hXAzrT1aY=; b=FLWkUFFAIIGJnFI6gP6dsJ4Fi/O9+r6yS28jBn/gXelorIIa9Ly23UZvk5gjZo6U1v 3rK0JjYE6JiTnRHLmhT23l1fhBBfR6H/HlOVhb7QuaJUbAUSYiJsDafc6HKui6wVuQXV frOMOHeGQ5bsoJcyG6PnN9cKU/PjOcYwe4MDU7l/Y9d7Ma++MzF813GTGQEZ4I/ik5n4 +6G9EjXi6tfaQeX0xg2kIYpFOWcrmyy3HaEGXjKPpefEbrCbnV77NMYtiwM/VHnTfNCw /lwqOa08Rhc5mM3LxpR321/xoRPQD5ffpaBu/2YEFWAQZVLmWNc0VGdSmaZOi7HvGdRC JNpg== X-Gm-Message-State: AA+aEWag0i9kifnQVXTTwZ8PTMU9Idxwp54Q6l2KjpghSR7L+Ub0QF8g 9uPHfSuB7zKiAu4LmEj1cN4= X-Google-Smtp-Source: AFSGD/VIwLXwTX+pZ3dMwEJ7G4hslvVevAQtoGJTf3dyMkv9Cxxeisf9fi7wBMtquP8W5k5kzE/jQw== X-Received: by 2002:a2e:21a9:: with SMTP id h41-v6mr10270735lji.103.1545148696992; Tue, 18 Dec 2018 07:58:16 -0800 (PST) Received: from linux-veee.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id a18-v6sm3022061ljk.86.2018.12.18.07.58.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 18 Dec 2018 07:58:16 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Linus Walleij , linux-gpio@vger.kernel.org, Rob Herring , devicetree@vger.kernel.org Subject: [PATCH] pinctrl: bcm: ns: support updated DT binding as syscon subnode Date: Tue, 18 Dec 2018 16:58:08 +0100 Message-Id: <20181218155808.19517-1-zajec5@gmail.com> X-Mailer: git-send-email 2.13.7 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181218_075829_676434_D049A27B X-CRM114-Status: GOOD ( 18.22 ) X-Spam-Score: 0.1 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (0.1 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:243 listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (zajec5[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (zajec5[at]gmail.com) 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Florian Fainelli , Scott Branden , Ray Jui , bcm-kernel-feedback-list@broadcom.com, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= , linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org List-Id: linux-imx-kernel.lists.patchwork.ozlabs.org From: Rafał Miłecki Documentation has been recently updated specifying that pinctrl should be subnode of the CRU "syscon". Support that by using parent node for regmap and reading "offset" property from the DT. Signed-off-by: Rafał Miłecki --- drivers/pinctrl/bcm/pinctrl-ns.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/drivers/pinctrl/bcm/pinctrl-ns.c b/drivers/pinctrl/bcm/pinctrl-ns.c index d7f8175d2c1c..e79690bd8b85 100644 --- a/drivers/pinctrl/bcm/pinctrl-ns.c +++ b/drivers/pinctrl/bcm/pinctrl-ns.c @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -12,6 +13,7 @@ #include #include #include +#include #include #define FLAG_BCM4708 BIT(1) @@ -22,7 +24,8 @@ struct ns_pinctrl { struct device *dev; unsigned int chipset_flag; struct pinctrl_dev *pctldev; - void __iomem *base; + struct regmap *regmap; + u32 offset; struct pinctrl_desc pctldesc; struct ns_pinctrl_group *groups; @@ -229,9 +232,9 @@ static int ns_pinctrl_set_mux(struct pinctrl_dev *pctrl_dev, unset |= BIT(pin_number); } - tmp = readl(ns_pinctrl->base); + regmap_read(ns_pinctrl->regmap, ns_pinctrl->offset, &tmp); tmp &= ~unset; - writel(tmp, ns_pinctrl->base); + regmap_write(ns_pinctrl->regmap, ns_pinctrl->offset, tmp); return 0; } @@ -263,13 +266,13 @@ static const struct of_device_id ns_pinctrl_of_match_table[] = { static int ns_pinctrl_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; + struct device_node *np = dev->of_node; const struct of_device_id *of_id; struct ns_pinctrl *ns_pinctrl; struct pinctrl_desc *pctldesc; struct pinctrl_pin_desc *pin; struct ns_pinctrl_group *group; struct ns_pinctrl_function *function; - struct resource *res; int i; ns_pinctrl = devm_kzalloc(dev, sizeof(*ns_pinctrl), GFP_KERNEL); @@ -287,12 +290,18 @@ static int ns_pinctrl_probe(struct platform_device *pdev) return -EINVAL; ns_pinctrl->chipset_flag = (uintptr_t)of_id->data; - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, - "cru_gpio_control"); - ns_pinctrl->base = devm_ioremap_resource(dev, res); - if (IS_ERR(ns_pinctrl->base)) { - dev_err(dev, "Failed to map pinctrl regs\n"); - return PTR_ERR(ns_pinctrl->base); + ns_pinctrl->regmap = syscon_node_to_regmap(of_get_parent(np)); + if (IS_ERR(ns_pinctrl->regmap)) { + int err = PTR_ERR(ns_pinctrl->regmap); + + dev_err(dev, "Failed to map pinctrl regs: %d\n", err); + + return err; + } + + if (of_property_read_u32(np, "offset", &ns_pinctrl->offset)) { + dev_err(dev, "Failed to get register offset\n"); + return -ENOENT; } memcpy(pctldesc, &ns_pinctrl_desc, sizeof(*pctldesc));