From nobody Sat Apr 18 03:24:42 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 31B97367F20 for ; Wed, 11 Feb 2026 11:15:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770808507; cv=none; b=k2PUpumcalnWZqV47fHH8o+7XzKMbq8sNUEZ5RyhZgamCRbjncnbuN9zj87IWSAfS+AgIO/RHDUCviKrs8SmcEpqETXHVVwyXoGHayrseRHFdTkUVhgM2iXSZvXYAhA5j5ayYE/rad0MB5ix07pdm9AkQ/YEs4WzvQ6aSNazVXo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770808507; c=relaxed/simple; bh=qpVi0pOotkDTglEnkOeHaSMSTqV1ATNS3Kxf5dzY/TQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=OWsv2y7QOLhQdk6UQ79szbwnbFFrj/9XXiKstCzQCbRNdoFJVrxlKK/thC+1PQKPjNGXCVdf6vRa2SkACaDN0iUgtaXGI5TqTwguC3cG9XL2Pbv3qJJzDpVIuYQ7TPudGxT6XMxq6PZDrBbksQp6dJAsaJHIZKlp2uE+hZWTswA= 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=K92mR5gp; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=N/11YVM6; arc=none smtp.client-ip=205.220.180.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="K92mR5gp"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="N/11YVM6" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61BApCG53203811 for ; Wed, 11 Feb 2026 11:15:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=GFOHX3QhsTEHsBp+8Bj8FeFIaQREW/GahrF WdSGC1Ac=; b=K92mR5gpg72mdc2VdRGSEfvnFJN35ZqDrumWFgvOFeVgj9+eLkl ynLTVJ15ndzNJPLcfC9J/pp5XWwA5U7lkz6XaIUhbW5J/+tfE0KRaQZiKpsrARFB QqnsCZ29joa/z/3ZD9abwJ2w7hBLps2cOZLDjlFFOdbr91ve0uaXMSUtAqB8mN41 ZAJs+l/8wH7C3i2XTsARgHZXbQswEx5B+e8dTF3B+xP5upFC7E5UGePjyVqmSkze xqFZ6GjfEAe7UotYkqLGG+ylyOBV5spPI7LBMoa+zpdh9delr1121uXH2jhKlhNU dwmIKpnS9/7VFB9q+P9zpBqXBiChbukP4oQ== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c894g31he-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Feb 2026 11:15:03 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8c6a5bc8c43so2018292685a.2 for ; Wed, 11 Feb 2026 03:15:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770808503; x=1771413303; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=GFOHX3QhsTEHsBp+8Bj8FeFIaQREW/GahrFWdSGC1Ac=; b=N/11YVM6YblRrU8vHx5UOxN3F+A/w2ZEanaeXcNi4JwtwuJaYHLK4ZDidZJ4vBZolc SjInMZifUD5mViWYG6coK3sNsxKo3DCDHn3/Y+UWsI0uyVzFwhotYO5krVKdMXQbnRhR nKiPE3P1WhI0wgtPuIeXX/YS+ond3a9DSJOlvdNu18KArpeqsImx0EX5wshW2RPbCUfS EQh3U9tsZyBzg8vaXLlPk+4ff8EGIsCq4zROX8xqAumcz2jadqFTwCxXfa94aG5REGvQ 3b6tCT26zyHpq8+SRHt0/0TNh52HhA45L72ehEqLJPZb8GCzzyhkse3M+5xFAX0bZQI9 B3Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770808503; x=1771413303; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GFOHX3QhsTEHsBp+8Bj8FeFIaQREW/GahrFWdSGC1Ac=; b=fWuiBo0kO1UxcXU0t6+w5uZTzHGa+5CgUwB0gxAp11DE1mrJrBagid3WHchSrbIYeY ZJTSzts5h9h/v+56jkiPNUmhLlVXUe3VQA18/m6krMvqcJjJow2H20Tn2IpRJ3BUxyOK BOM4MhXbERRgZSd6Ly0wc6FvlqXw8UlrQwElLksjJZNu3NQ1/idEvWmSCTSX99CCIAzz cmr92PnORS0Cf7EsOzG7QaiFS0E+mjxV8Jy+fE1NJgBi4qtPNisDmFS3JwRXyU6F0CgN 3b7EgcE5EGly1C8fScSgydHpbsh52Z2jsfhHixAK9qbe+iPMlwi7209AVjpgXYZu0Lq/ rMGg== X-Forwarded-Encrypted: i=1; AJvYcCVKbobSR3dZ0bClYljDn1fQ/M2IM/6n9Cnk/zseQTLoV6B/Low8nhXCdEPjTPX0RJfzqCy04rg5R7hwCgY=@vger.kernel.org X-Gm-Message-State: AOJu0YwGdIZW+FQFe2mfwLV4U1Kfx+cVcz1sUpjKucdwC9VuHW+ks/iW rOasZeBbYanxXMS6crXs3NLrPo7vcku/3m84eQ7m0OBPiPN/GKZjP/V4GPBQrZ7xmQ+0Ow4Vflc Vg0VYxvVKxbi9W2tUw8QS9Wjp8Urad+k/yizNQQK1f3n52FEgl/A6xqDpywautXpF7ss= X-Gm-Gg: AZuq6aLfSYKTf1+E0cYLY0LX/SHwXU58mF8IQwG+oaOkVzCK6pepjydxI6Qc6FlFwY7 bCAWCesBpQ+MpmNDhlqpkxadyWdvEHMGq9ctAU7+Ie/FV1PPcJsR3pTNT7OoGVnEEOdn3bH1Cxd 1u4jNOoomjwDx2E7qtwzMiGpkxd6z51wdgRSxKPAaMT+tUWt6g/1nvWr91uke/niLyi6CFReVV8 G/qDnAbKLe5tqFDdis71riOXeZVo5jVV5pmoe3/+bfPFVXcZriwUDrFLWRvPE+ohkEjSZrnPt8b G8flrxN9uPWtz3oyjShvl+1gOg5tYseMyX0Fw3y2/3sRXJL853vWlTqJ4K4Plc1wIOwZNncLalK qda6vI3b80l83mksh/T0h0kKVCkia83PegO3fPycBoEDIIbhLhA== X-Received: by 2002:a05:620a:29d4:b0:891:bde8:56d7 with SMTP id af79cd13be357-8cb2acfd5f2mr126693985a.50.1770808503198; Wed, 11 Feb 2026 03:15:03 -0800 (PST) X-Received: by 2002:a05:620a:29d4:b0:891:bde8:56d7 with SMTP id af79cd13be357-8cb2acfd5f2mr126691085a.50.1770808502721; Wed, 11 Feb 2026 03:15:02 -0800 (PST) Received: from brgl-qcom.home ([2a01:cb1d:dc:7e00:d772:ba4c:782c:2fd6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4835ba69115sm15647725e9.11.2026.02.11.03.15.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 03:15:02 -0800 (PST) From: Bartosz Golaszewski To: Aaro Koskinen , Janusz Krzysztofik , Tony Lindgren , Russell King , Dmitry Torokhov , Arnd Bergmann , Hans de Goede Cc: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski Subject: [RFT PATCH] ARM: omap1: enable real software node lookup of GPIOs on Nokia 770 Date: Wed, 11 Feb 2026 12:14:49 +0100 Message-ID: <20260211111449.122593-1-bartosz.golaszewski@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjExMDA4OCBTYWx0ZWRfX41I3+Sb72n9i GH+zx6fRjOZOtXlyQ5pXZcOokWYXFZxgn5Wxl2jDW/kRKyRARt3s8gywo8In+0tyygv7UiYKNFE 2ztHXa/0+/eOj9cX8lYtVtHUcfjYxwgcY2nVTNkM0Jt8/HVr2DMm2I25BxMuIMHRe9iXkIR+zvf fgwfGTNrroweeNZ6FNRqDvCSaLj/0YfgUZoAC7DNUDhLF83Dm6QA6D2f91qD4cCV72DWd0Dmi7X wpOvEvWK0BD0Mo3OipkJ1aC8LM72aFHVyDhe6pbeBG9lW/k29tEGIubqC8QPtHtKep9P+LYVuC5 EY/y/iSXhWKmzFfMajk2iz95KBp2fG5ur5C1tiDnDcgU8umow11/0IIEXNgQrYVaglvYzU6kpKO 8j2xu7cXScsBcEOpMa4G+n7Hw+0WYG+Amkv+ECvzoHxxAoZkW4mgjlsy+gVAIpoJ5dDmtiC8t1i WcWHLpWJxqx1ipH2Vvg== X-Authority-Analysis: v=2.4 cv=R64O2NRX c=1 sm=1 tr=0 ts=698c64b7 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=mL5-Ybe71cLVbzrCEFIA:9 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-GUID: 6J_vS4ft9a-yeojYYJKdOfmEmDcm5GtE X-Proofpoint-ORIG-GUID: 6J_vS4ft9a-yeojYYJKdOfmEmDcm5GtE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-11_01,2026-02-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 suspectscore=0 impostorscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602110088 Content-Type: text/plain; charset="utf-8" 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. Signed-off-by: Bartosz Golaszewski --- This is a follow up to the following discussion[1]. I don't have the hardware for testing so only build-tested it. [1] https://lore.kernel.org/all/aYkdKfP5fg6iywgr@jekhomev/ arch/arm/mach-omap1/board-nokia770.c | 24 ++--------------------- arch/arm/mach-omap1/common.h | 4 ++++ arch/arm/mach-omap1/gpio16xx.c | 29 +++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/boa= rd-nokia770.c index a5bf5554800f..a81514c6f92c 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), { } }; @@ -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 7a7c3d9eb84a..34659b5fc6f0 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h @@ -35,6 +35,10 @@ #include "soc.h" #include "i2c.h" =20 +extern const struct software_node omap16xx_mpu_gpio_swnode; +extern const struct software_node omap16xx_gpio1_swnode; +extern const struct software_node omap16xx_gpio2_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 55acec22fef4..6eedb87cbf6b 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 +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 +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 +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,14 @@ 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