From: Bartosz Golaszewski Date: Mon, 27 Apr 2026 10:24:58 +0000 (+0200) Subject: platform/x86: barco-p50-gpio: attach software node to its target GPIO device X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=49133d4ae0c9ceb63fa042c0b46b34e26e1c6676;p=thirdparty%2Fkernel%2Flinux.git 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 Link: https://patch.msgid.link/20260427102459.110332-1-bartosz.golaszewski@oss.qualcomm.com Reviewed-by: Ilpo Järvinen Signed-off-by: Ilpo Järvinen --- diff --git a/drivers/platform/x86/barco-p50-gpio.c b/drivers/platform/x86/barco-p50-gpio.c index 2a6d8607c4026..e1400382465dc 100644 --- a/drivers/platform/x86/barco-p50-gpio.c +++ b/drivers/platform/x86/barco-p50-gpio.c @@ -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);