From nobody Thu Apr 2 05:52:40 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 365203D332E for ; Mon, 30 Mar 2026 12:41:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774874470; cv=none; b=VkH5dpcZDopZJ13wu8IcZ27EwUeksLGHwg4EyZqjYyvw9mEx53JcO/nxpx3xr99DKP7HVGQ7nA8Ut0tLNnAG5GrSF9dPsHFYRJiq4+Z6BANugen2fqGbE0OlLhzz28e/Fqe+KpMf4mgoeslXZT1CVOTMeJTiBi+hIf74LAOY7ug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774874470; c=relaxed/simple; bh=84lA+sQad0KFCHbORyyoFKtDWqR/112mWPWVfk7uVlo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M6DKEvpG+tJTOy/iXPey14Sd2KCTdwGi+/C8EDGI73gN9WwjbwwDxYNdJ1q3cXtIPXhpKwZruFOuoEeWaP4NRh6F2Nh+arZ9ahM8C2l71Bbkv4FFtoa+LdfbiLzRJY1Fo4n9zQ3M+ZH3Vgp/rdINbf+15gcYGNmPQOJ76y3XMik= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jmrmusQO; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=G3Nej+HZ; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jmrmusQO"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="G3Nej+HZ" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62UA7lLj3539773 for ; Mon, 30 Mar 2026 12:41:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ko1IaIbS30UK07529xORwTESC79YHbPzcSNYySWBN3s=; b=jmrmusQOEXUlkMAU RFn5qgz0heXaQtsy/G/nHKb6zRqKcKUC3ZQSJxeoDhcDzPKpywJcINRj4EVbc+JO JdQMjPmLG0qakAUl2oIC/+QzUuocxqOryXMUucfUlF+zgQcyOcqAq9PoQ6cXydR6 1hsce97+sPOMfBC0eeLr1pBnZJ9BxqZ/7ZcPSITCi0uLNMT6hbIxw4LGshTSnVBc hKVfpf/GoHFt4ssLIIT4D9JGinD+9VnjBiEsmbuFkruWuNU1hCegiwx6v+Kxw98R O/lVdHquwLk5dyl7xungLevWAn2MCVmE/obm7qywmyKdw0JWZqCJ6s/dWzBQl5e7 6qQYzA== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d7q59rkfg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 30 Mar 2026 12:41:08 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-509070bda13so138705161cf.1 for ; Mon, 30 Mar 2026 05:41:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774874467; x=1775479267; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ko1IaIbS30UK07529xORwTESC79YHbPzcSNYySWBN3s=; b=G3Nej+HZCAMNjxCiBXUk1kvxfDohzcbC1ZW1AlSlhNp+IL6ZfOImZixc7IPyyOZf5z tkA2uLWH3L0MFbNS1Hgn6NmnIhb0+Ox5jZl9jWBOLOYsUSy+16DRi9iKbZJr2kQ5LiMt iJfWU3dNKerIdp4HCYINb2Ry90UnhaX7VOLiGAhV82Am/71Q4Kd7dJHLF/H0sglabTaH Vl9+kuBl3ON+ndwgAih17IqImZ4qnmnVLUuQ3xHvH5n6L9fCeeJi/EZc4l+1VpZ5sSwN HDEaAAk9xHqedOPwaJJZxSKXCFJIDCSUYMNI38jfDU3JKDm/J+XJUPGstHmxxiOrtPSp lrvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774874467; x=1775479267; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ko1IaIbS30UK07529xORwTESC79YHbPzcSNYySWBN3s=; b=PaovPPALNNMxYf8xWfM/04TvT8uRlEZrOW1+u4K7BLYZvOqaAKHBIthciZcbqThefm e4K94Lc0d5cRzl3AD0CwxqXMS1xTozsK8bjDVYp26DmTYeUpQxwRy4eFkDGA4T/8Tubz OwFT/JfT/9nB0S7GLK1BEhWug6hvD5DG8pT7Z/Fj31eAqU3d4fzpsmpV06ost4f9ENk8 74+VubErGzrZ1iCn3aDXVBUAUjiJHlPvtR3kSAGR0YkvYUs8WETvbT6JzbiUOmEjusar SS7Zb3aVMa51HEFtsIftNr5AqFwPE9eVFLJZKQCCHGt18IuGQltatsUSuNWQnBoRIftF RSkw== X-Forwarded-Encrypted: i=1; AJvYcCX3b7X4JDpTQjBnoFo78ErzLdPMnFIZVRnXWUOnSC+HN9ZaF1NzPNv9Ag0ctPUtOoXFye+6x68BEw7FnwU=@vger.kernel.org X-Gm-Message-State: AOJu0YytVW3NiYQdBv6QxrlAzOqAfmwDw0gTCLEdV+DFCPC08Pbsp5xw /HOXvLWO22hmaifc5sKw8CcqE0NbdffDF7OwB+TEVQXR//5xk0WCaXzOb4w2BlWY8DMVem+55Fn J8BPJHf6c66qkTGChXgnnxP19ez1zdG4tNleu0EJxWdut2LUsLN+BoxzTihLoKbq3QV0= X-Gm-Gg: ATEYQzyNA0bdoIzkvbBUyY88W9EwLy0U5/Uzl8w8mi4xWJ4ZIQ3k04R4JSXI71POrAY GsSiQ1hL2BiOu+uY0JCWijL35rrM7qrCEVxuKU1dEZ4ts2gBkBF4jXM/IWadS/B/kQI7TcAobII o+TcMKw8/KFkY9EgAUIV6zgHJjHYaVgZhoPuGS5l0F++hmdc1eAMd/OAhWFCQw4IO7lT5V/7KZQ csCp0qeRCKaAzzm7Lv01CD7ZX2TRFwWvjaFykFDJK/3FWf0Zpy2MYDkWeiB70YCSResYKdBxUSm FYi7XHReIGpydxseK+L/N6OnyV2K7OvJCixGgIvj+omZrZIDw2K+091W1lDqYIJR019Eq+swt8k KzH07U2jKT6DAj/XHZVn2BHycGHg0cxg5IUlNcULIql+qYRE4E4jk X-Received: by 2002:ac8:5a89:0:b0:509:1b5c:fe25 with SMTP id d75a77b69052e-50b994a2ef2mr179889391cf.23.1774874467164; Mon, 30 Mar 2026 05:41:07 -0700 (PDT) X-Received: by 2002:ac8:5a89:0:b0:509:1b5c:fe25 with SMTP id d75a77b69052e-50b994a2ef2mr179889051cf.23.1774874466642; Mon, 30 Mar 2026 05:41:06 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:e931:8d81:9955:76ef]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43cf24739easm19576153f8f.30.2026.03.30.05.41.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 05:41:05 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 30 Mar 2026 14:40:48 +0200 Subject: [PATCH v4 3/3] ARM: omap1: enable real software node lookup of GPIOs on Nokia 770 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260330-nokia770-gpio-swnodes-v4-3-b68592e977d0@oss.qualcomm.com> References: <20260330-nokia770-gpio-swnodes-v4-0-b68592e977d0@oss.qualcomm.com> In-Reply-To: <20260330-nokia770-gpio-swnodes-v4-0-b68592e977d0@oss.qualcomm.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Aaro Koskinen , Janusz Krzysztofik , Tony Lindgren , Russell King , Dmitry Torokhov , Kevin Hilman , Arnd Bergmann Cc: brgl@kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7115; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=84lA+sQad0KFCHbORyyoFKtDWqR/112mWPWVfk7uVlo=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpym9YJCTjMaPTcRorvdqssCYI1k2/E5GJ4jytw ZR57hP5o8uJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCacpvWAAKCRAFnS7L/zaE w0NyEACit79oWBubTSXRaaJq6YU0cV2jClRR5Pm/4h8x5xRF2z/gLJIJSF+x1qXg0yuxJKR2haF 3Z0d+rFQ60Gl3L1OtJnvwMgRypx6zY0Q6MG7Mmy9ECWLZ+NXChFBipM4KtpNPz5dF+q+SieEr0w 64TQJX1O33B2L6MHdyDfT+QDp41ssoIhcVGDGAkzPeNIu+smVIm5BDURH5vyp05vGhHG+6VW9nH 8mfUAAwT6x1XYVl4uiRlKA0i4BVia0WY9+Ex+lMkSulG22R9hbs/iGoCKJEh2i9RJ0XR4KPP21A /40PNmYgZaVxkQHNFFaiDAVO+BbqHxxrFR47tqi/P8PvjiB/yvASU7SeF2s/8cjSD6YRmP7MEMO 6uc39r0lndgV5mL/Uvnv8Z7HCpixxbYh08vw1DgAusvSS6omRm6NGjmQyvvB+8OMynTzNC/P5W3 0npezTcalpAcC5Bhzn9gKkAXDB4abPIm/lsjFRTplB92tVP9ZLpukZ0poUDMekuKEPCtKYhECOa W5whKrHSRxv84A2oE07uonp3s08xZTguhMjkk2MSyTBSLLIdLFV8isuwT9xjQR18W2lH6rZwbhI NG4Qay4HfA4cXVkfjnX7pCsZAkexdAjVBYrKJdsHIYASkj89OmNZetU65DXT9JNARw0ZIFKC6LM tWqkSTVLaXfQ/Lw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: XyZ2X7pVYvwyp6wYKXeJAjRucMYS7aml X-Proofpoint-GUID: XyZ2X7pVYvwyp6wYKXeJAjRucMYS7aml X-Authority-Analysis: v=2.4 cv=EcXFgfmC c=1 sm=1 tr=0 ts=69ca6f64 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=mL5-Ybe71cLVbzrCEFIA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzMwMDA5OSBTYWx0ZWRfX27omMfL0SJ9w rRqD94xnPgNLTUR37Ej8zBpNKSxNcXtMgGWLbrF0kTUKQSF91rvEH7t36TON4uftMVMEV7mbN3d 3/G51Yev2ZYjPmG82skkx5nfJ/7ewclN3cJdTfgioaox6Dh3sfweR34t/LCKjsRSAx0H0W5Twuf pr+JAyoMaGfEtwC9h9LKVd7vsxWDvqrx95aC5ThDtDgogyn9lJYQTDnxnI3DCTfTQsJbBIYAAmI H36/CYIrgvY+Mwny5J5q0f9vKCs5/gdiQVJK5FiyT+i/UQvKuf9K6wTEg6CD/HGUAQLrxm5pdYC BloFD0vgW0XqPHOX/Hg7qqXCx9xufKHmlHdxhclJ0FqchEY5jlwAeQslX2nf1A66o1L0hS8rVRp q2T0ip54R7oU8QUSchVl1pGHwQ8hP6fS90pBCSK6hNiaYEKyoR5kVLMvp5W4+XBrGbs1xF+dKLe w020KDL86FWT8xibMZw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-29_05,2026-03-28_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 priorityscore=1501 clxscore=1015 bulkscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603300099 Currently the board file for Nokia 770 creates dummy software nodes not attached in any way to the actual GPIO controller devices and uses the fact that GPIOLIB matching swnode's name to the GPIO chip's label during software node lookup. This behavior is wrong and we want to remove it. To that end, we need to first convert all existing users to creating actual fwnode links. Create real software nodes for GPIO controllers on OMAP16xx and reference them from the software nodes in the nokia board file. Acked-by: Arnd Bergmann Acked-by: Janusz Krzysztofik Signed-off-by: Bartosz Golaszewski --- arch/arm/mach-omap1/board-nokia770.c | 30 +++++------------------------- arch/arm/mach-omap1/common.h | 3 +++ arch/arm/mach-omap1/gpio16xx.c | 28 +++++++++++++++++++++++++++- 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/boa= rd-nokia770.c index a5bf5554800fe17b430e84ae421ffa8da2bb11a0..46f817f6316b70ff37bb9dfde86= c675fd692999b 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c @@ -36,25 +36,6 @@ #include "clock.h" #include "mmc.h" =20 -static const struct software_node nokia770_mpuio_gpiochip_node =3D { - .name =3D "mpuio", -}; - -static const struct software_node nokia770_gpiochip1_node =3D { - .name =3D "gpio-0-15", -}; - -static const struct software_node nokia770_gpiochip2_node =3D { - .name =3D "gpio-16-31", -}; - -static const struct software_node *nokia770_gpiochip_nodes[] =3D { - &nokia770_mpuio_gpiochip_node, - &nokia770_gpiochip1_node, - &nokia770_gpiochip2_node, - NULL -}; - #define ADS7846_PENDOWN_GPIO 15 =20 static const unsigned int nokia770_keymap[] =3D { @@ -112,7 +93,7 @@ static const struct omap_lcd_config nokia770_lcd_config = __initconst =3D { }; =20 static const struct property_entry nokia770_mipid_props[] =3D { - PROPERTY_ENTRY_GPIO("reset-gpios", &nokia770_gpiochip1_node, + PROPERTY_ENTRY_GPIO("reset-gpios", &omap16xx_gpio1_swnode, 13, GPIO_ACTIVE_LOW), { } }; @@ -138,7 +119,7 @@ static const struct property_entry nokia770_ads7846_pro= ps[] =3D { PROPERTY_ENTRY_U16("ti,x-plate-ohms", 180), PROPERTY_ENTRY_U16("ti,debounce-tol", 3), PROPERTY_ENTRY_U16("ti,debounce-rep", 1), - PROPERTY_ENTRY_GPIO("pendown-gpios", &nokia770_gpiochip1_node, + PROPERTY_ENTRY_GPIO("pendown-gpios", &omap16xx_gpio1_swnode, ADS7846_PENDOWN_GPIO, GPIO_ACTIVE_LOW), { } }; @@ -225,9 +206,9 @@ static inline void nokia770_mmc_init(void) #if IS_ENABLED(CONFIG_I2C_CBUS_GPIO) =20 static const struct software_node_ref_args nokia770_cbus_gpio_refs[] =3D { - SOFTWARE_NODE_REFERENCE(&nokia770_mpuio_gpiochip_node, 9, 0), - SOFTWARE_NODE_REFERENCE(&nokia770_mpuio_gpiochip_node, 10, 0), - SOFTWARE_NODE_REFERENCE(&nokia770_mpuio_gpiochip_node, 11, 0), + SOFTWARE_NODE_REFERENCE(&omap16xx_mpu_gpio_swnode, 9, 0), + SOFTWARE_NODE_REFERENCE(&omap16xx_mpu_gpio_swnode, 10, 0), + SOFTWARE_NODE_REFERENCE(&omap16xx_mpu_gpio_swnode, 11, 0), }; =20 static const struct property_entry nokia770_cbus_props[] =3D { @@ -318,7 +299,6 @@ static void __init omap_nokia770_init(void) /* Unmask SleepX signal */ omap_writew((omap_readw(0xfffb5004) & ~2), 0xfffb5004); =20 - software_node_register_node_group(nokia770_gpiochip_nodes); platform_add_devices(nokia770_devices, ARRAY_SIZE(nokia770_devices)); =20 gpiod_add_lookup_table(&nokia770_irq_gpio_table); diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index 7a7c3d9eb84a06c18fbc70e7c94a161b487cd002..c0f6e231fdb4422c5d2c1aa3e33= dd6dd99d2710e 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h @@ -35,6 +35,9 @@ #include "soc.h" #include "i2c.h" =20 +extern const struct software_node omap16xx_mpu_gpio_swnode; +extern const struct software_node omap16xx_gpio1_swnode; + #ifdef CONFIG_OMAP_SERIAL_WAKE int omap_serial_wakeup_init(void); #else diff --git a/arch/arm/mach-omap1/gpio16xx.c b/arch/arm/mach-omap1/gpio16xx.c index 55acec22fef4e73f20935473602ef6cb2f4f379c..e371183e0213912ebfa7edd34ca= 7e7683869ab12 100644 --- a/arch/arm/mach-omap1/gpio16xx.c +++ b/arch/arm/mach-omap1/gpio16xx.c @@ -9,6 +9,7 @@ */ =20 #include +#include #include =20 #include "hardware.h" @@ -55,6 +56,8 @@ static struct omap_gpio_platform_data omap16xx_mpu_gpio_c= onfig =3D { .regs =3D &omap16xx_mpuio_regs, }; =20 +const struct software_node omap16xx_mpu_gpio_swnode =3D { }; + static struct platform_device omap16xx_mpu_gpio =3D { .name =3D "omap_gpio", .id =3D 0, @@ -99,6 +102,8 @@ static struct omap_gpio_platform_data omap16xx_gpio1_con= fig =3D { .regs =3D &omap16xx_gpio_regs, }; =20 +const struct software_node omap16xx_gpio1_swnode =3D { }; + static struct platform_device omap16xx_gpio1 =3D { .name =3D "omap_gpio", .id =3D 1, @@ -122,6 +127,8 @@ static struct resource omap16xx_gpio2_resources[] =3D { }, }; =20 +static const struct software_node omap16xx_gpio2_swnode =3D { }; + static struct omap_gpio_platform_data omap16xx_gpio2_config =3D { .bank_width =3D 16, .regs =3D &omap16xx_gpio_regs, @@ -155,6 +162,8 @@ static struct omap_gpio_platform_data omap16xx_gpio3_co= nfig =3D { .regs =3D &omap16xx_gpio_regs, }; =20 +static const struct software_node omap16xx_gpio3_swnode =3D { }; + static struct platform_device omap16xx_gpio3 =3D { .name =3D "omap_gpio", .id =3D 3, @@ -183,6 +192,8 @@ static struct omap_gpio_platform_data omap16xx_gpio4_co= nfig =3D { .regs =3D &omap16xx_gpio_regs, }; =20 +static const struct software_node omap16xx_gpio4_swnode =3D { }; + static struct platform_device omap16xx_gpio4 =3D { .name =3D "omap_gpio", .id =3D 4, @@ -201,6 +212,14 @@ static struct platform_device *omap16xx_gpio_dev[] __i= nitdata =3D { &omap16xx_gpio4, }; =20 +static const struct software_node *omap16xx_gpio_swnodes[] __initconst =3D= { + &omap16xx_mpu_gpio_swnode, + &omap16xx_gpio1_swnode, + &omap16xx_gpio2_swnode, + &omap16xx_gpio3_swnode, + &omap16xx_gpio4_swnode, +}; + /* * omap16xx_gpio_init needs to be done before * machine_init functions access gpio APIs. @@ -208,7 +227,7 @@ static struct platform_device *omap16xx_gpio_dev[] __in= itdata =3D { */ static int __init omap16xx_gpio_init(void) { - int i; + int i, ret; void __iomem *base; struct resource *res; struct platform_device *pdev; @@ -244,6 +263,13 @@ static int __init omap16xx_gpio_init(void) iounmap(base); =20 platform_device_register(omap16xx_gpio_dev[i]); + + ret =3D device_add_software_node(&omap16xx_gpio_dev[i]->dev, + omap16xx_gpio_swnodes[i]); + if (ret) { + dev_err(&pdev->dev, "Failed to add software node.\n"); + return ret; + } } =20 return 0; --=20 2.47.3