platform/x86: barco-p50-gpio: attach software node to its target GPIO device

The software node representing the GPIO controller to consumers is
"dangling": it's not really attached to the device. The GPIO lookup
relies on matching the name of the node to the chip's label. Switch to
using platform_device_register_full() and use the swnode field of struct
platform_device_info to attach the software node to the GPIO device.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Link: https://patch.msgid.link/20260427102459.110332-1-bartosz.golaszewski@oss.qualcomm.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
Bartosz Golaszewski 2026-04-27 12:24:58 +02:00 committed by Ilpo Järvinen
parent 6cf1c1e9f2
commit 49133d4ae0
No known key found for this signature in database
GPG Key ID: 59AC4F6153E5CE31

View File

@ -124,7 +124,6 @@ static const struct software_node vendor_key_node = {
};
static const struct software_node *p50_swnodes[] = {
&gpiochip_node,
&gpio_leds_node,
&identify_led_node,
&gpio_keys_node,
@ -424,6 +423,13 @@ MODULE_DEVICE_TABLE(dmi, dmi_ids);
static int __init p50_module_init(void)
{
struct resource res = DEFINE_RES_IO(P50_GPIO_IO_PORT_BASE, P50_PORT_CMD + 1);
struct platform_device_info pdevinfo = {
.name = DRIVER_NAME,
.id = PLATFORM_DEVID_NONE,
.res = &res,
.num_res = 1,
.swnode = &gpiochip_node,
};
int ret;
if (!dmi_first_match(dmi_ids))
@ -433,7 +439,7 @@ static int __init p50_module_init(void)
if (ret)
return ret;
gpio_pdev = platform_device_register_simple(DRIVER_NAME, PLATFORM_DEVID_NONE, &res, 1);
gpio_pdev = platform_device_register_full(&pdevinfo);
if (IS_ERR(gpio_pdev)) {
pr_err("failed registering %s: %ld\n", DRIVER_NAME, PTR_ERR(gpio_pdev));
platform_driver_unregister(&p50_gpio_driver);