[{"id":3684586,"web_url":"http://patchwork.ozlabs.org/comment/3684586/","msgid":"<CAJZ5v0hs98RHqZxcMjsnQDB5JJ2gKQGG6c38y3vR3WO1aLgf3w@mail.gmail.com>","list_archive_url":null,"date":"2026-04-30T10:03:30","subject":"Re: [PATCH v4 2/2] platform/x86: x86-android-tablets: enable fwnode\n matching of GPIO chips","submitter":{"id":64267,"url":"http://patchwork.ozlabs.org/api/people/64267/","name":"Rafael J. Wysocki","email":"rafael@kernel.org"},"content":"On Thu, Apr 30, 2026 at 9:34 AM Bartosz Golaszewski\n<bartosz.golaszewski@oss.qualcomm.com> wrote:\n>\n> In order to allow GPIOLIB to match cherryview and baytrail GPIO\n> controllers by their firmware nodes instead of their names, we need to\n> attach the - currently \"dangling\" - existing software nodes to their\n> target devices dynamically.\n>\n> The driver uses platform_create_bundle() and expects all required\n> providers to be present before it itself is probed. We know the name of\n> the device we're waiting for so look them up and assign the appropriate\n> software node as the secondary firmware node of the underlying ACPI node.\n>\n> Scheduling fine-grained devres actions allows for proper teardown and\n> unsetting of the secondary firmware nodes.\n>\n> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>\n\nI may have missed something subtle, but overall it looks reasonable to me, so\n\nReviewed-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>\n\n> ---\n>  drivers/platform/x86/x86-android-tablets/core.c | 78 ++++++++++++++++++++++++-\n>  1 file changed, 75 insertions(+), 3 deletions(-)\n>\n> diff --git a/drivers/platform/x86/x86-android-tablets/core.c b/drivers/platform/x86/x86-android-tablets/core.c\n> index 021009e9085bec3db9c4daa1f6235600210a6099..8fd0cffe351577182f31c90c104b616cec78c481 100644\n> --- a/drivers/platform/x86/x86-android-tablets/core.c\n> +++ b/drivers/platform/x86/x86-android-tablets/core.c\n> @@ -13,6 +13,7 @@\n>  #include <linux/acpi.h>\n>  #include <linux/device.h>\n>  #include <linux/dmi.h>\n> +#include <linux/fwnode.h>\n>  #include <linux/gpio/consumer.h>\n>  #include <linux/gpio/machine.h>\n>  #include <linux/irq.h>\n> @@ -360,6 +361,76 @@ static const struct software_node *cherryview_gpiochip_node_group[] = {\n>         NULL\n>  };\n>\n> +static void auto_secondary_unset(void *data)\n> +{\n> +       struct fwnode_handle *fwnode = data;\n> +\n> +       fwnode->secondary = NULL;\n> +}\n> +\n> +static int acpi_set_secondary_fwnode(struct device *parent, struct device *dev,\n> +                                    const struct software_node *const swnode)\n> +{\n> +       struct acpi_device *device = to_acpi_device(dev);\n> +       struct fwnode_handle *fwnode;\n> +       int ret;\n> +\n> +       fwnode = software_node_fwnode(swnode);\n> +       if (WARN_ON(!fwnode))\n> +               return -ENOENT;\n> +\n> +       fwnode->secondary = ERR_PTR(-ENODEV);\n> +       device->fwnode.secondary = fwnode;\n> +\n> +       ret = devm_add_action_or_reset(parent, auto_secondary_unset, &device->fwnode);\n> +       if (ret)\n> +               dev_err(parent, \"Failed to schedule the unset action for secondary fwnode\\n\");\n> +\n> +       return ret;\n> +}\n> +\n> +static void auto_secondary_unregister_node_group(void *data)\n> +{\n> +       const struct software_node **nodes = data;\n> +\n> +       software_node_unregister_node_group(nodes);\n> +}\n> +\n> +static int auto_secondary_fwnode_init(struct device *parent)\n> +{\n> +       const struct software_node *const *swnode;\n> +       int ret;\n> +\n> +       if (!gpiochip_node_group)\n> +               return 0;\n> +\n> +       ret = software_node_register_node_group(gpiochip_node_group);\n> +       if (ret)\n> +               return ret;\n> +\n> +       ret = devm_add_action_or_reset(parent,\n> +                                      auto_secondary_unregister_node_group,\n> +                                      gpiochip_node_group);\n> +       if (ret)\n> +               return ret;\n> +\n> +       for (swnode = gpiochip_node_group; *swnode; swnode++) {\n> +               struct device *dev __free(put_device) =\n> +                               acpi_bus_find_device_by_name((*swnode)->name);\n> +               if (!dev) {\n> +                       dev_err(parent, \"Failed to find the required GPIO controller: %s\\n\",\n> +                               (*swnode)->name);\n> +                       return -ENODEV;\n> +               }\n> +\n> +               ret = acpi_set_secondary_fwnode(parent, dev, *swnode);\n> +               if (ret)\n> +                       return ret;\n> +       }\n> +\n> +       return 0;\n> +}\n> +\n>  static void x86_android_tablet_remove(struct platform_device *pdev)\n>  {\n>         int i;\n> @@ -391,7 +462,6 @@ static void x86_android_tablet_remove(struct platform_device *pdev)\n>\n>         software_node_unregister_node_group(gpio_button_swnodes);\n>         software_node_unregister_node_group(swnode_group);\n> -       software_node_unregister_node_group(gpiochip_node_group);\n>  }\n>\n>  static __init int x86_android_tablet_probe(struct platform_device *pdev)\n> @@ -427,9 +497,11 @@ static __init int x86_android_tablet_probe(struct platform_device *pdev)\n>                 break;\n>         }\n>\n> -       ret = software_node_register_node_group(gpiochip_node_group);\n> -       if (ret)\n> +       ret = auto_secondary_fwnode_init(&pdev->dev);\n> +       if (ret) {\n> +               x86_android_tablet_remove(pdev);\n>                 return ret;\n> +       }\n>\n>         ret = software_node_register_node_group(dev_info->swnode_group);\n>         if (ret) {\n>\n> --","headers":{"Return-Path":"\n <linux-gpio+bounces-35864-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=Fbm7bm/t;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35864-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"Fbm7bm/t\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5qjG2Jt9z1xqf\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 20:12:18 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 3678A3070350\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 10:03:47 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 6701B3FB7C2;\n\tThu, 30 Apr 2026 10:03:45 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 2648A3ACA42\n\tfor <linux-gpio@vger.kernel.org>; Thu, 30 Apr 2026 10:03:45 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id E09CCC2BCFB\n\tfor <linux-gpio@vger.kernel.org>; Thu, 30 Apr 2026 10:03:44 +0000 (UTC)","by mail-lf1-f45.google.com with SMTP id\n 2adb3069b0e04-5a40cfab24dso821642e87.2\n        for <linux-gpio@vger.kernel.org>;\n Thu, 30 Apr 2026 03:03:44 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777543425; cv=none;\n b=I/bJa6XJ6TIXanwD6ipatXpWlRxLdHUwPtoSVg+lI5X3vbEMmWEXt3vu7nzAMH7qc+76IZHkNa0qq9dbZkkEC52d4OKJKoyMOTHfJAO0yrM6Yv5GJakvq6HmXRUH5WUO2H8pnYKlu/LkoPlW1d+/ZB/qwCUVHw5HyY1bX3jGftU=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777543425; c=relaxed/simple;\n\tbh=24SUM8XNpgpD/jIkyrnqaESV6KB3r9PWuq9baM/oPwY=;\n\th=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:\n\t To:Cc:Content-Type;\n b=KC7MLsvfY5oLiDLIolinxp0CpZfNGSQ6GLoF0bOBV0lTEw288W4uyI+ya9yki7+HlGffworcbWEZNV3Hhejq6tG+x4GHlujNDzZn55iPRxlDbptJ4QT+LJl2GDqt20svZI5iIYSylfZbLnedqcoKJCin8YXpZROwIVEoVyE78+U=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=Fbm7bm/t; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777543424;\n\tbh=24SUM8XNpgpD/jIkyrnqaESV6KB3r9PWuq9baM/oPwY=;\n\th=References:In-Reply-To:From:Date:Subject:To:Cc:From;\n\tb=Fbm7bm/t+vu34+9t7voUW+wOOxbMCkLpxRdCIh99peme7yF2xulZ4cKP5EXb+2VzC\n\t Na+wpuETQ5x14dQJBJzo7rvklFJzOPeGYHO8rl0LUk8cZ3Uzib9TxhE658iCRzfM5f\n\t mq4oOK/NZeuMww+eKDCVvZz3ZbP1dEuRZ2S4kz++hJmsEb0UfGLGNdDfqGxQFRrL+t\n\t dF0jNT3lrD7+4/Zl52hk+xHKr4EFZL/wQMaoUU+LlYmZxuJ2eGnghCkj7+6XVm3R+M\n\t 4EOmrnHGa6rhUqo4kt8iAEg+4pVCob+Dsyc0S5UR8W7FDyp/+q5oBig5vcpNJuc6IH\n\t M8CvFJxUuPTwg==","X-Forwarded-Encrypted":"i=1;\n AFNElJ8QWNZSPgr5z4ARdl+bX/bH4JofGDPM2OhGHa8/r48dqd96aVN5mYE+PcBuxUOqlrTucp6FxakgSNNY@vger.kernel.org","X-Gm-Message-State":"AOJu0YxpdVtELf+Fn2earRMYCgMZbz70rtfK2DwYI/bmx4zu7nbjH8E4\n\tRWjKbYJI2zcvYTXkR/kdUci5GgmNsHT+UOVLrySt7X4F/O9fuiLSjWgs9b3n+m+34hRgNGqx7fs\n\ta42npvL7sY7XEWXjDk+VOKj49CanYJB8=","X-Received":"by 2002:a05:6512:10cb:b0:5a4:157:5354 with SMTP id\n 2adb3069b0e04-5a8522bc5ffmr780440e87.12.1777543423188; Thu, 30 Apr 2026\n 03:03:43 -0700 (PDT)","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","References":"<20260430-baytrail-real-swnode-v4-0-767bcda6667f@oss.qualcomm.com>\n <20260430-baytrail-real-swnode-v4-2-767bcda6667f@oss.qualcomm.com>","In-Reply-To":"\n <20260430-baytrail-real-swnode-v4-2-767bcda6667f@oss.qualcomm.com>","From":"\"Rafael J. Wysocki\" <rafael@kernel.org>","Date":"Thu, 30 Apr 2026 12:03:30 +0200","X-Gmail-Original-Message-ID":"\n <CAJZ5v0hs98RHqZxcMjsnQDB5JJ2gKQGG6c38y3vR3WO1aLgf3w@mail.gmail.com>","X-Gm-Features":"AVHnY4LRkqUG78amCXaKPu70AEG71fakKJrwqW9j-y8MndL15_3hAR17pY87BOk","Message-ID":"\n <CAJZ5v0hs98RHqZxcMjsnQDB5JJ2gKQGG6c38y3vR3WO1aLgf3w@mail.gmail.com>","Subject":"Re: [PATCH v4 2/2] platform/x86: x86-android-tablets: enable fwnode\n matching of GPIO chips","To":"Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>","Cc":"Andy Shevchenko <andriy.shevchenko@linux.intel.com>,\n Daniel Scally <djrscally@gmail.com>,\n  Heikki Krogerus <heikki.krogerus@linux.intel.com>,\n  Sakari Ailus <sakari.ailus@linux.intel.com>,\n  Greg Kroah-Hartman <gregkh@linuxfoundation.org>,\n \"Rafael J. Wysocki\" <rafael@kernel.org>,  Danilo Krummrich <dakr@kernel.org>,\n Mika Westerberg <mika.westerberg@linux.intel.com>,\n  Andy Shevchenko <andy@kernel.org>, Linus Walleij <linusw@kernel.org>,\n Hans de Goede <hansg@kernel.org>,\n =?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,\n  Dmitry Torokhov <dmitry.torokhov@gmail.com>, Len Brown <lenb@kernel.org>,\n linux-acpi@vger.kernel.org,  driver-core@lists.linux.dev,\n linux-kernel@vger.kernel.org,  linux-gpio@vger.kernel.org,\n platform-driver-x86@vger.kernel.org,  brgl@kernel.org","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable"}},{"id":3684683,"web_url":"http://patchwork.ozlabs.org/comment/3684683/","msgid":"<afNQbtmd3j6wG0iI@ashevche-desk.local>","list_archive_url":null,"date":"2026-04-30T12:51:58","subject":"Re: [PATCH v4 2/2] platform/x86: x86-android-tablets: enable fwnode\n matching of GPIO chips","submitter":{"id":8583,"url":"http://patchwork.ozlabs.org/api/people/8583/","name":"Andy Shevchenko","email":"andriy.shevchenko@linux.intel.com"},"content":"On Thu, Apr 30, 2026 at 09:34:06AM +0200, Bartosz Golaszewski wrote:\n> In order to allow GPIOLIB to match cherryview and baytrail GPIO\n> controllers by their firmware nodes instead of their names, we need to\n> attach the - currently \"dangling\" - existing software nodes to their\n> target devices dynamically.\n> \n> The driver uses platform_create_bundle() and expects all required\n> providers to be present before it itself is probed. We know the name of\n> the device we're waiting for so look them up and assign the appropriate\n> software node as the secondary firmware node of the underlying ACPI node.\n> \n> Scheduling fine-grained devres actions allows for proper teardown and\n> unsetting of the secondary firmware nodes.\n\n...\n\n> +static void auto_secondary_unset(void *data)\n> +{\n> +\tstruct fwnode_handle *fwnode = data;\n> +\n> +\tfwnode->secondary = NULL;\n> +}\n> +\n> +static int acpi_set_secondary_fwnode(struct device *parent, struct device *dev,\n> +\t\t\t\t     const struct software_node *const swnode)\n> +{\n> +\tstruct acpi_device *device = to_acpi_device(dev);\n> +\tstruct fwnode_handle *fwnode;\n> +\tint ret;\n> +\n> +\tfwnode = software_node_fwnode(swnode);\n> +\tif (WARN_ON(!fwnode))\n> +\t\treturn -ENOENT;\n> +\n> +\tfwnode->secondary = ERR_PTR(-ENODEV);\n> +\tdevice->fwnode.secondary = fwnode;\n> +\n> +\tret = devm_add_action_or_reset(parent, auto_secondary_unset, &device->fwnode);\n> +\tif (ret)\n> +\t\tdev_err(parent, \"Failed to schedule the unset action for secondary fwnode\\n\");\n> +\n> +\treturn ret;\n> +}\n\nWhy don't we use set_secondary_fwnode() in the above functions?\nDrivers are not supposed to know the guts of the fwnode implementation.\n\n...\n\n> +static int auto_secondary_fwnode_init(struct device *parent)\n> +{\n> +\tconst struct software_node *const *swnode;\n> +\tint ret;\n> +\n> +\tif (!gpiochip_node_group)\n> +\t\treturn 0;\n> +\n> +\tret = software_node_register_node_group(gpiochip_node_group);\n> +\tif (ret)\n> +\t\treturn ret;\n> +\n> +\tret = devm_add_action_or_reset(parent,\n> +\t\t\t\t       auto_secondary_unregister_node_group,\n> +\t\t\t\t       gpiochip_node_group);\n> +\tif (ret)\n> +\t\treturn ret;\n> +\n> +\tfor (swnode = gpiochip_node_group; *swnode; swnode++) {\n> +\t\tstruct device *dev __free(put_device) =\n> +\t\t\t\tacpi_bus_find_device_by_name((*swnode)->name);\n> +\t\tif (!dev) {\n> +\t\t\tdev_err(parent, \"Failed to find the required GPIO controller: %s\\n\",\n> +\t\t\t\t(*swnode)->name);\n\nswnode at this point is registered, meaning we have an associated fwnode\nhandle, hence why not use %pfwP here?\n\n> +\t\t\treturn -ENODEV;\n> +\t\t}\n> +\n> +\t\tret = acpi_set_secondary_fwnode(parent, dev, *swnode);\n> +\t\tif (ret)\n> +\t\t\treturn ret;\n> +\t}\n> +\n> +\treturn 0;\n> +}","headers":{"Return-Path":"\n <linux-gpio+bounces-35917-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=kS18Ch94;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35917-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=\"kS18Ch94\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=192.198.163.13","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.intel.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linux.intel.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5vJJ1nlCz1xqf\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 22:54:24 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id AAFA53017C29\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 12:52:07 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id C7903401A07;\n\tThu, 30 Apr 2026 12:52:06 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [192.198.163.13])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 4016335F5EC;\n\tThu, 30 Apr 2026 12:52:05 +0000 (UTC)","from fmviesa009.fm.intel.com ([10.60.135.149])\n  by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 Apr 2026 05:52:05 -0700","from zzombora-mobl1 (HELO localhost) ([10.245.244.42])\n  by fmviesa009-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 Apr 2026 05:52:00 -0700"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777553526; cv=none;\n b=KhcZ31M7xnNcE4Z7oOe/98Isz53QCLWZDEqaBW29xSjr4Q4EmqRKu4h07BF/3BXqxYLyu4PEkjh/KqaFnVDTeI+aTRwvOGeaIbaaShj8mjDCDH9I+waXWjLK9zJanGPaHiAEgv0qsd+AvmmWXL3zBNNDdbrg66sxSeklq3IAaa4=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777553526; c=relaxed/simple;\n\tbh=3A+ZKlTiXYyj3m20/8ggC63q8vnO7tm6cFlVhOyzMLk=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=Oi8oQSw7PoklcwNxKfYI0HGRLvU/YT7fuepNwzvqoQCiYt83KNH2p1KI6xE4B/oFkiq+UFEZedMvqIZ08o+3pCUkM8VNrXTDP12RobmURh2CPaA+U7XOvx/TQO2TuSiQ5KY5sQTjVCgNRmB2olyhIlX6I7P14bITPrkLQlczQ+Q=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.intel.com;\n spf=pass smtp.mailfrom=linux.intel.com;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=kS18Ch94; arc=none smtp.client-ip=192.198.163.13","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1777553526; x=1809089526;\n  h=date:from:to:cc:subject:message-id:references:\n   mime-version:in-reply-to;\n  bh=3A+ZKlTiXYyj3m20/8ggC63q8vnO7tm6cFlVhOyzMLk=;\n  b=kS18Ch94nrLaE/ftqHPJuczTX2aWwuUS5U/nr0cpHWMNLjb4T1E5Hc3i\n   ounjhd/639I7Y2Fk3CdtCy568UUcY0tE48ixHyVl0FkvlNLBxefprhVZe\n   bWBcbxzxCbYj9pXZyR7R/xVc3lsJ72SY1JKcWwHVTg5rL+jNqowPw5MQv\n   9kxUX4uqmGjLkf9o2VfAfLsVNXVF8MgvA6u5/ksdi4uzQoW4KpBfRWPhq\n   3hO1JebzAQqYwIUloSEVjo6l9dg3Fi7No9yQD0Ah1QGx77JV4mC+R1Hdi\n   lEESrBps1xT4mgMkYEbfxDx5r2JiO4nbG5Z88q3nNFjUiA2/LByQ+gHle\n   Q==;","X-CSE-ConnectionGUID":["NLbwVlvSQKCaaC7c17397w==","3iFZh2LPSv6l+Uj1zSqRAQ=="],"X-CSE-MsgGUID":["Fd642AaTQmuvIt+EsSB9Hw==","bp9WQx6kRm6e+OedyEC20A=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11771\"; a=\"81075730\"","E=Sophos;i=\"6.23,208,1770624000\";\n   d=\"scan'208\";a=\"81075730\"","E=Sophos;i=\"6.23,208,1770624000\";\n   d=\"scan'208\";a=\"228063936\""],"X-ExtLoop1":"1","Date":"Thu, 30 Apr 2026 15:51:58 +0300","From":"Andy Shevchenko <andriy.shevchenko@linux.intel.com>","To":"Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>","Cc":"Daniel Scally <djrscally@gmail.com>,\n Heikki Krogerus <heikki.krogerus@linux.intel.com>,\n Sakari Ailus <sakari.ailus@linux.intel.com>,\n Greg Kroah-Hartman <gregkh@linuxfoundation.org>,\n \"Rafael J. Wysocki\" <rafael@kernel.org>, Danilo Krummrich <dakr@kernel.org>,\n Mika Westerberg <mika.westerberg@linux.intel.com>,\n Andy Shevchenko <andy@kernel.org>, Linus Walleij <linusw@kernel.org>,\n Hans de Goede <hansg@kernel.org>,\n Ilpo =?iso-8859-1?q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,\n Dmitry Torokhov <dmitry.torokhov@gmail.com>, Len Brown <lenb@kernel.org>,\n linux-acpi@vger.kernel.org, driver-core@lists.linux.dev,\n linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,\n platform-driver-x86@vger.kernel.org, brgl@kernel.org","Subject":"Re: [PATCH v4 2/2] platform/x86: x86-android-tablets: enable fwnode\n matching of GPIO chips","Message-ID":"<afNQbtmd3j6wG0iI@ashevche-desk.local>","References":"<20260430-baytrail-real-swnode-v4-0-767bcda6667f@oss.qualcomm.com>\n <20260430-baytrail-real-swnode-v4-2-767bcda6667f@oss.qualcomm.com>","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"\n <20260430-baytrail-real-swnode-v4-2-767bcda6667f@oss.qualcomm.com>","Organization":"Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6\n krs, Bertel Jungin Aukio 5, 02600 Espoo"}},{"id":3684690,"web_url":"http://patchwork.ozlabs.org/comment/3684690/","msgid":"<afNSn42sB7sC_L9x@ashevche-desk.local>","list_archive_url":null,"date":"2026-04-30T13:01:19","subject":"Re: [PATCH v4 2/2] platform/x86: x86-android-tablets: enable fwnode\n matching of GPIO chips","submitter":{"id":8583,"url":"http://patchwork.ozlabs.org/api/people/8583/","name":"Andy Shevchenko","email":"andriy.shevchenko@linux.intel.com"},"content":"On Thu, Apr 30, 2026 at 03:51:58PM +0300, Andy Shevchenko wrote:\n> On Thu, Apr 30, 2026 at 09:34:06AM +0200, Bartosz Golaszewski wrote:\n\n...\n\n> > +\tfor (swnode = gpiochip_node_group; *swnode; swnode++) {\n> > +\t\tstruct device *dev __free(put_device) =\n> > +\t\t\t\tacpi_bus_find_device_by_name((*swnode)->name);\n> > +\t\tif (!dev) {\n> > +\t\t\tdev_err(parent, \"Failed to find the required GPIO controller: %s\\n\",\n> > +\t\t\t\t(*swnode)->name);\n> \n> swnode at this point is registered, meaning we have an associated fwnode\n> handle, hence why not use %pfwP here?\n\nAfter reading the code again I think your version is KISS, no need for over\nengineering :-)\n\n> > +\t\t\treturn -ENODEV;\n> > +\t\t}","headers":{"Return-Path":"\n <linux-gpio+bounces-35924-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=YRG20x3q;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35924-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=\"YRG20x3q\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=192.198.163.10","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.intel.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linux.intel.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5vb42T5fz1xqf\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 23:07:12 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 86F15300D941\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 13:01:30 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id DC46340F8D8;\n\tThu, 30 Apr 2026 13:01:28 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [192.198.163.10])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F67940B6F0;\n\tThu, 30 Apr 2026 13:01:27 +0000 (UTC)","from orviesa008.jf.intel.com ([10.64.159.148])\n  by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 Apr 2026 06:01:26 -0700","from zzombora-mobl1 (HELO localhost) ([10.245.244.42])\n  by orviesa008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 Apr 2026 06:01:22 -0700"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777554088; cv=none;\n b=bLe4Jl23SJT5P5FR8X8zQd5FP7HKVLjG4ZZtDd5Lxclo73Ia5tlRHrM4a9Dl6jkdr+4yudEhNyEWE5xCQjLcy0Huv++1l2yta4BzvXRGisj/MU+2PKEJLKH1UVsvHQQgjksjSoDpVkrVSNOPScqfjDbf+T0JWe7kagABJocEEMQ=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777554088; c=relaxed/simple;\n\tbh=MZgJ0oBWrhy8i1yH1rGUVjfYjDAk40yvCjLYbXjWgTI=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=G4FCRSodAKU0SkNApfYrFoi7h0B8T1+uzv6uEGBtgn7QbJ62HX16cz08ZBx1MbAUMiwAaks0zlkppQSJdyRl9mWITME8HJAS9OeRqqWNNe0NfRFdQnPeoJqI39+NRq5dDet1Tul0gkTWM1cUo2cM+YEFEBCP2aZukkBVoWLCEpo=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.intel.com;\n spf=pass smtp.mailfrom=linux.intel.com;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=YRG20x3q; arc=none smtp.client-ip=192.198.163.10","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1777554087; x=1809090087;\n  h=date:from:to:cc:subject:message-id:references:\n   mime-version:in-reply-to;\n  bh=MZgJ0oBWrhy8i1yH1rGUVjfYjDAk40yvCjLYbXjWgTI=;\n  b=YRG20x3qMNpTzuSvCCCyzJhNZXIWttMP0hyxLEPRW5ZzRXWOBpwLRwmm\n   2ztjkfwRw3c7yhXR47VrAK6ElyLvwVZwnHMJRuCeFSQz6StNwW8bN2FwF\n   t2/oZ6JbnhcP3WXEcHQ1rax6KL3hG2uCm4rt8tu+wgj/ufKOKKRa1pAV6\n   nBi7xdXLG7ua1m2BDRNJlU5Ub1cLfah+doIqhsH5ioPUALpj6L+ma922d\n   O8flL/tVu9Ul1y94wTpgSvQ8208217Kph2ciX2wbfz13oPXc7VoeFYCs4\n   FGNtlC5W66uWRj30VNDlrTHsDx5x7suM3+cvG/6O7QeqanBiIMIYcgHU9\n   g==;","X-CSE-ConnectionGUID":["qnxgHchOR0OlNMbnF/0bjg==","oq+UgGJGQSuAaaHPoJWDwA=="],"X-CSE-MsgGUID":["2TfPKjfzQSyhX3IeVX0K9g==","c+4LrUYMSXmrcstSM8JCag=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11771\"; a=\"89877496\"","E=Sophos;i=\"6.23,208,1770624000\";\n   d=\"scan'208\";a=\"89877496\"","E=Sophos;i=\"6.23,208,1770624000\";\n   d=\"scan'208\";a=\"234467576\""],"X-ExtLoop1":"1","Date":"Thu, 30 Apr 2026 16:01:19 +0300","From":"Andy Shevchenko <andriy.shevchenko@linux.intel.com>","To":"Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>","Cc":"Daniel Scally <djrscally@gmail.com>,\n Heikki Krogerus <heikki.krogerus@linux.intel.com>,\n Sakari Ailus <sakari.ailus@linux.intel.com>,\n Greg Kroah-Hartman <gregkh@linuxfoundation.org>,\n \"Rafael J. Wysocki\" <rafael@kernel.org>, Danilo Krummrich <dakr@kernel.org>,\n Mika Westerberg <mika.westerberg@linux.intel.com>,\n Andy Shevchenko <andy@kernel.org>, Linus Walleij <linusw@kernel.org>,\n Hans de Goede <hansg@kernel.org>,\n Ilpo =?iso-8859-1?q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,\n Dmitry Torokhov <dmitry.torokhov@gmail.com>, Len Brown <lenb@kernel.org>,\n linux-acpi@vger.kernel.org, driver-core@lists.linux.dev,\n linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,\n platform-driver-x86@vger.kernel.org, brgl@kernel.org","Subject":"Re: [PATCH v4 2/2] platform/x86: x86-android-tablets: enable fwnode\n matching of GPIO chips","Message-ID":"<afNSn42sB7sC_L9x@ashevche-desk.local>","References":"<20260430-baytrail-real-swnode-v4-0-767bcda6667f@oss.qualcomm.com>\n <20260430-baytrail-real-swnode-v4-2-767bcda6667f@oss.qualcomm.com>\n <afNQbtmd3j6wG0iI@ashevche-desk.local>","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<afNQbtmd3j6wG0iI@ashevche-desk.local>","Organization":"Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6\n krs, Bertel Jungin Aukio 5, 02600 Espoo"}}]