From patchwork Wed Mar 1 18:26:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1750190 X-Patchwork-Delegate: sr@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=LA7MS8BB; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PRjQF3mgXz240n for ; Thu, 2 Mar 2023 05:27:32 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 33A2B85B3F; Wed, 1 Mar 2023 19:27:25 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="LA7MS8BB"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D85C285B43; Wed, 1 Mar 2023 19:27:23 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x136.google.com (mail-il1-x136.google.com [IPv6:2607:f8b0:4864:20::136]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 3D8D985B34 for ; Wed, 1 Mar 2023 19:27:21 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x136.google.com with SMTP id a1so8850914iln.9 for ; Wed, 01 Mar 2023 10:27:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1677695239; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=XBqJpeaWCc3f38OuQSCoS0zkleE5kuA/a+QFSa7QswE=; b=LA7MS8BBQHxhu2EIZilpyw0Xz8aqPVJlqasGqMzRDHdOD5ZfIxyC7NcSuSHB43yc3f wl5Gv7/fbxxaPVQwJtcmTUp3J0VgrCkJf0o82si7vW7k2qSrjw7NMBF89T4FzavB3YWc cRW4CnDAYHsOZB/aQvRl6m2DBUV/kXKZCKPHc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677695239; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XBqJpeaWCc3f38OuQSCoS0zkleE5kuA/a+QFSa7QswE=; b=Rpm6mCEdygQPXCenAxHq9TrgOs5g4nJSoVeIuKnyjGJZAH10EWWPy/Pmvlo6d4YxEM Bp2IE1zFg8t0g8O4xw1Df8PnN00xwiI0CyCX+VbwpHo+6fzfCEY8E3V4fGnOFLnzNjMV Q8B6NvhugoGE8HSZFvyAjyNvTViu431rIRqwj8aI+6Zos2ardWJhbuz7Gb6Ya2njDlGb wqH+AcSc7zuVu8fQq+3oiB8eR5BpJ5Ig1xmCR7lL53hCC6i4+Ps1L1UhdREZ6J8otfFd o8ilM5Ivw7XAdURc9pRHfdj695TU4hP8/9lPz2kGxCuAj49gaUgKj3KZk++NHxpzd8Nz cFYg== X-Gm-Message-State: AO0yUKU7oEJmuNJEqNthRJz19b+H65NEKoIWv1OEEfmorv9Aj2u/bvZ5 hF+1hSkyP4EDlMAlIg3WuNReuK1Ux0I2bIsB X-Google-Smtp-Source: AK7set8NWATPSsT3bKmGpFvwK9TF6D2AJzyxDZc6fr9Zy46Bi+V34OCWGb20pbDyQtt6pYPZhQ/8cw== X-Received: by 2002:a05:6e02:194e:b0:315:9891:85d7 with SMTP id x14-20020a056e02194e00b00315989185d7mr5989710ilu.16.1677695239614; Wed, 01 Mar 2023 10:27:19 -0800 (PST) Received: from kea.bld.corp.google.com ([2620:15c:183:200:e275:7cc1:99a8:4736]) by smtp.gmail.com with ESMTPSA id s3-20020a02ad03000000b003eb3d37744dsm4047352jan.102.2023.03.01.10.27.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 10:27:19 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Stefan Roese , Robert Marko , Simon Glass Subject: [PATCH] WIP: Example pinctrl changes for armada 37xx Date: Wed, 1 Mar 2023 11:26:58 -0700 Message-Id: <20230301182658.1950930-1-sjg@chromium.org> X-Mailer: git-send-email 2.40.0.rc0.216.gc4246ad0f0-goog MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean The 'info' argument to armada_37xx_gpiochip_register() appears to be unused, so it should be possible to bind the GPIO driver at the same time as the pinctrl driver. This shows a possible option for testing. Signed-off-by: Simon Glass --- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 53 ++++++++------------- 1 file changed, 20 insertions(+), 33 deletions(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c index 1be6252227d..2767f00a99f 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c @@ -653,40 +653,33 @@ static struct driver armada_37xx_gpio_driver = { .ops = &armada_37xx_gpio_ops, }; -static int armada_37xx_gpiochip_register(struct udevice *parent, - struct armada_37xx_pinctrl *info) +static int armada_37xx_gpiochip_register(struct udevice *parent) { - const void *blob = gd->fdt_blob; - int node = dev_of_offset(parent); - struct uclass_driver *drv; struct udevice *dev; int ret = -ENODEV; - int subnode; - char *name; - - /* FIXME: Should not need to lookup GPIO uclass */ - drv = lists_uclass_lookup(UCLASS_GPIO); - if (!drv) { - puts("Cannot find GPIO driver\n"); - return -ENOENT; - } + ofnode subnode; + char dev_name[32], *name; - /* FIXME: Use livtree and check the result of device_bind() below */ - fdt_for_each_subnode(subnode, blob, node) { - if (fdtdec_get_bool(blob, subnode, "gpio-controller")) { + dev_for_each_subnode(subnode, parent) { + if (ofnode_read_bool(subnode, "gpio-controller")) { ret = 0; break; } - }; + } if (ret) return ret; - name = calloc(1, 32); - sprintf(name, "armada-37xx-gpio"); + strcpy(dev_name, "armada-37xx-gpio"); + name = strdup(dev_name); + if (!name) + return -ENOMEM; /* Create child device UCLASS_GPIO and bind it */ - device_bind(parent, &armada_37xx_gpio_driver, name, NULL, - offset_to_ofnode(subnode), &dev); + ret = device_bind(parent, &armada_37xx_gpio_driver, name, NULL, subnode, + &dev); + if (ret) + return ret; + device_set_name_alloced(dev); return 0; } @@ -738,22 +731,16 @@ static int armada_37xx_pinctrl_probe(struct udevice *dev) if (ret) return ret; - ret = armada_37xx_gpiochip_register(dev, info); - if (ret) - return ret; - return 0; } static int armada_37xx_pinctrl_bind(struct udevice *dev) { - /* - * Make sure that the pinctrl driver gets probed after binding - * as on A37XX the pinctrl driver is the one that is also - * registering the GPIO one during probe, so if its not probed - * GPIO-s are not registered as well. - */ - dev_or_flags(dev, DM_FLAG_PROBE_AFTER_BIND); + int ret; + + ret = armada_37xx_gpiochip_register(dev); + if (ret) + return ret; return 0; }