From nobody Fri Sep 25 16:03:01 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A47A248EC84 for ; Thu, 10 Sep 2026 14:16:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049813; cv=none; b=qFUzE/KuSMVHoyu2ADr+ribiM2ywsx2MFSbdvXEb6tKnBk4QDQVfEp3LbgYrbDq8aQ3ER/xPtykm1HzECEcRPvmyGME2sY0BZUZYNoGmK1P1UfmaKn61nBriTC5TAc0hbTYU7z08YCSYpiNj/1eRq+iGZCiicuXMEMcyWGx+4pM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049813; c=relaxed/simple; bh=f+oWL0l2lQ4U824rI7f2G+wEgBL0XsHytujTRnyC4Po=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aqDttCEj/x1vdqBPiN1Qx9Jkx8kkn3BaBxXY7tRAtipe8LV3nJv5/P216aUxRYleK/CjzQMajjIfv4c/A3/R0hLiYlfD3EbG7k7XqFs3DqE+VbhvKmiTWY2E7rYI/0gfJ0h2e1VgqCU85R/ruAJAJcrx1k+KRWAij7aCdbpH2UE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SoA3lIu0; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SoA3lIu0" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-49b0d78a801so70274895e9.2 for ; Thu, 10 Sep 2026 07:16:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789049810; x=1789654610; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=H7pblcn7/kuaqKjgHIuNVXFQ3fC4U6ULeesMxuIl3oA=; b=SoA3lIu02V/+HIQIJPbl1OTBto7tEri+nXWpDjgW9ky9I9ucv1dUFtJ/Nn/7XidKc2 vyJqZjKS9KjOJsGy0ixIw0XPyFN7G1sZNkwj+m4sbtOG1E80a+mgMhe+BKm8pIYuJnwL DX+mBfqd0gBXV6b4mH+TEH9iK8qumE/ewEsvSsQbM+ga04weCgzFzg+sCr20nbQTWFZX XvTkKz4jBL89Z4G6vTbzYP/JFHiuD3XHEqMQh7CZ87wDeoawiQasZHoynaFvsoAz6JdL 8A0DeaY7FN7pmrMSNOpGarEIsodrBjYEcF53adw0OjsjeTqJSiK8AG2ZahIXVmYgs+XC hY4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789049810; x=1789654610; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=H7pblcn7/kuaqKjgHIuNVXFQ3fC4U6ULeesMxuIl3oA=; b=bKvojJBXk0+fnDCWZCH8U8xaXw6WbhZOWbEE5eXg6H6yvfOoI3aoQsIgGxJuYTgXM1 l3hm+Fo0gYA4MC9nM/YpRM6Otk97AcwEPkYHAIf1+eyQvF2R5xGS17/mX6V2MxL7N+2f fqmGp0fxZIFaMgU3JtVFwmCrG8Hc1RmKFIk04jFir18+04FMy7ROmtzQDwj44oHSuKQX UkDNWIcRT0mZLCJ/hkZZgL491j36zqAMNRBXpoo2fbx7WPWbPCTnoOXClViOo5SImw9E abd/VzbacvJ96JnWSQMwgMfr0aY1VSPzhyk5VzOgPCkpmagVuSZoKdez0b+kjMsJ4dm+ grpA== X-Forwarded-Encrypted: i=1; AKwUvBy3mgioHJ0sS9expU9fW9EaaBE3K1UDDe4Nduuwq/qFg+nBza7KO1v6Dt7JipWlLRFAJyr9gP9PmKQqmQA=@vger.kernel.org X-Gm-Message-State: AFuF++lrvkqRxG4Tqv9J5porCnEHG29YPjT7eM9037P23DCOQecR5trj CBTzi5ciIkWrtijhFYFMwdVmodezHIGPo/TUIzm2JP2wVyEPFpqV3OIn2oP6L0iK X-Gm-Gg: AYBFou1vK3JhtcAdizI45RACp9dL5dQNFI9Rj1XnpTVBgnEAgEQYA1B2mY2us/rRPtw QNGml056GxLT8/mc+JdQ3fmDd3FbC+EZVdKYv+EhHvYr4eeOTX320s6qrDcNfWwLGtFryYKmTfQ BQDgFXG6vMjxGt3+iBd7g0Sj/N3c8bTfqmB2VLyPpV24VUiWL5smFeGmauyR63uN3x3zny1jCpd 7784WeSM+ftIo3pfYJojlcFM8GqEnbSxEc1XxG2x8KePigbbBmTz5tRhphwqBtvPhB3Hw9PKOkr SdKm53iigELK/yf4xzDFhPd/r0m8F2iI/w1VuWMTM5F0rscPvLBNs+gHs0SGaL+lhWbVgnCKKCw W6q4QdpXAx0ZvAB1ZDbwPrpkFZYXPbmmf9a2sRDskCAQa/JTPadKjeo7nffELUG6+i8qdumre/5 U1ooRUyECAvLF29XQu5vNrUkc1vsqAl8PXNjv9wSh2rvidU2zck3D8PBpq6fdbFUojBgEhY3RC3 kd8PfwRzUNeGnb2WCH6H8wF5E4TKqFTY/2YS++mP09OTZhKJgOdWQfhW8zZsVomoBO6Djx1jQ== X-Received: by 2002:a05:600c:190d:b0:49d:72d:9ba3 with SMTP id 5b1f17b1804b1-49d072d9bccmr328667225e9.14.1789049809381; Thu, 10 Sep 2026 07:16:49 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d20fce7a7sm293895575e9.4.2026.09.10.07.16.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 07:16:48 -0700 (PDT) From: Ernest Van Hoecke Date: Thu, 10 Sep 2026 16:16:42 +0200 Subject: [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO nexus maps 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: <20260910-fw-devlink-nexus-ready-v2-1-17ac82dbe226@toradex.com> References: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> In-Reply-To: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> To: Rob Herring , Saravana Kannan Cc: "Miquel Raynal (Schneider Electric)" , Frank Li , Kieran Bingham , Pengutronix Kernel Team , Stephen Boyd , Brian Masney , Linus Walleij , Bartosz Golaszewski , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Herve Codina , Greg Kroah-Hartman , Geert Uytterhoeven , Leonardo Costa , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Ernest Van Hoecke , stable@vger.kernel.org X-Mailer: b4 0.13.0 From: Ernest Van Hoecke GPIO consumers use of_parse_phandle_with_args_map() to resolve specifiers through gpio-map properties. fw_devlink instead parses GPIO properties as direct phandle references, so it records the nexus node as the supplier rather than the mapped GPIO provider. A nexus is a translation node, not the GPIO provider, and need not be populated as a device. The resulting fwnode link can therefore remain unresolved and indefinitely defer the consumer while device_links_check_suppliers() waits for the nexus. Use the map-aware parser for all supported GPIO property spellings. This makes fw_devlink resolve the same provider as the GPIO consumer API. Direct GPIO references continue to work because the map-aware parser returns the original provider when no gpio-map property is present. Fixes: 7f00be96f125 ("of: property: Add device link support for interrupt-p= arent, dmas and -gpio(s)") Reported-by: Leonardo Costa Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jba= uradujrre@gc5nbdhhixaf/ Tested-by: Leonardo Costa Cc: stable@vger.kernel.org Signed-off-by: Ernest Van Hoecke Reviewed-by: Bartosz Golaszewski Reviewed-by: Herve Codina Reviewed-by: Linus Walleij --- drivers/of/property.c | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/drivers/of/property.c b/drivers/of/property.c index 72cf12907de0..380df0861ab9 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -1311,6 +1311,19 @@ static struct device_node *parse_prop_cells(struct d= evice_node *np, return sup_args.np; } =20 +static struct device_node *parse_nexus_prop(struct device_node *np, + const char *prop_name, int index, + const char *stem_name) +{ + struct of_phandle_args sup_args; + + if (of_parse_phandle_with_args_map(np, prop_name, stem_name, index, + &sup_args)) + return NULL; + + return sup_args.np; +} + #define DEFINE_SIMPLE_PROP(fname, name, cells) \ static struct device_node *parse_##fname(struct device_node *np, \ const char *prop_name, int index) \ @@ -1361,6 +1374,15 @@ static struct device_node *parse_##fname(struct devi= ce_node *np, \ return parse_suffix_prop_cells(np, prop_name, index, suffix, cells); \ } =20 +#define DEFINE_SUFFIX_NEXUS_PROP(fname, suffix, stem) \ +static struct device_node *parse_##fname(struct device_node *np, \ + const char *prop_name, int index) \ +{ \ + if (!strends(prop_name, suffix)) \ + return NULL; \ + return parse_nexus_prop(np, prop_name, index, stem); \ +} + /** * struct supplier_bindings - Property parsing functions for suppliers * @@ -1416,7 +1438,7 @@ DEFINE_SIMPLE_PROP(pses, "pses", "#pse-cells") DEFINE_SIMPLE_PROP(power_supplies, "power-supplies", NULL) DEFINE_SIMPLE_PROP(mmc_pwrseq, "mmc-pwrseq", NULL) DEFINE_SUFFIX_PROP(regulators, "-supply", NULL) -DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells") +DEFINE_SUFFIX_NEXUS_PROP(gpio, "-gpio", "gpio") =20 static struct device_node *parse_pinctrl_n(struct device_node *np, const char *prop_name, int index) @@ -1436,8 +1458,10 @@ static struct device_node *parse_gpios(struct device= _node *np, if (strends(prop_name, ",nr-gpios")) return NULL; =20 - return parse_suffix_prop_cells(np, prop_name, index, "-gpios", - "#gpio-cells"); + if (!strends(prop_name, "-gpios")) + return NULL; + + return parse_nexus_prop(np, prop_name, index, "gpio"); } =20 static struct device_node *parse_iommu_maps(struct device_node *np, @@ -1452,8 +1476,6 @@ static struct device_node *parse_iommu_maps(struct de= vice_node *np, static struct device_node *parse_gpio_compat(struct device_node *np, const char *prop_name, int index) { - struct of_phandle_args sup_args; - if (strcmp(prop_name, "gpio") && strcmp(prop_name, "gpios")) return NULL; =20 @@ -1464,11 +1486,7 @@ static struct device_node *parse_gpio_compat(struct = device_node *np, if (of_property_read_bool(np, "gpio-hog")) return NULL; =20 - if (of_parse_phandle_with_args(np, prop_name, "#gpio-cells", index, - &sup_args)) - return NULL; - - return sup_args.np; + return parse_nexus_prop(np, prop_name, index, "gpio"); } =20 static struct device_node *parse_interrupts(struct device_node *np, --=20 2.43.0 From nobody Fri Sep 25 16:03:01 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8EED749481A for ; Thu, 10 Sep 2026 14:16:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049814; cv=none; b=obVJj+p+r6u/4HZUKQJGTriDKIFPid549xUpMFh6h4eVUNRcmwDNEOjQCXGOHSJcaLPRMaB3bcabmNeW0ezcpZUUoWashmJGw4aRYkOdKBqOgkJHGL8xcgj/1kqj/jsUeF+seLZDB3qx3Wh4NAzqLEKxc9+ffcnXHBg8KKxvoLY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049814; c=relaxed/simple; bh=hDP3r5l1mIBCej7ZQl0/zcQrANXp56hh67lg49xJb78=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dnrGzRcW3vDJmOOVoInTcjdzeo5e8BdHnwyIF0hLKZ+W5Rb45J2J1GfNLTOJDe6saE/RNMRvwD3X1ZZLjOVdnEq6GizeMFYzH60ACoB9k9fiqCRUlNYcqNnT+eElQZEmUPrRw8tV2M4jq1dRHCHJTl6dVTxMgAWjZaj0hdgRzmg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZlmMVHM1; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZlmMVHM1" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4998b5a63e2so82021775e9.1 for ; Thu, 10 Sep 2026 07:16:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789049811; x=1789654611; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=MwyHzbNwR9K/Z6ogERvs94oZtzGoKtSvzGu8br1Oetc=; b=ZlmMVHM10BdMZbjupyfy0OnfrhEmlb/3omDg/evvqVT0ujh9t45Pgg6FzspAxLZKB6 tI9ZkZk8cAhaXFIC9CFK8d2fhkQlLx9ld1JLQPK7LPchtHv4vEgihbRPIbskoD1q8PiK NWk9oCbhksClsK1fe5yW+wRyzL/Px1O0vlOxA/9wePk320EnLsWkGuRRDaHqU6caY9up t/RQsyKa3XuSrlfBW9jzpin7MtDuSun2QAx2bq79RZ308bkLmzgi5pE9bTgw2G8kqlZW TDPsklAkbQCQG782ghD2rh/wi2QZmlDiF0a2NmqS9fQcFvJ8mh2ca6yWuu+h7BeVI7pU BbBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789049811; x=1789654611; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=MwyHzbNwR9K/Z6ogERvs94oZtzGoKtSvzGu8br1Oetc=; b=eMsrEjYJc0VuERctY92NwUX+y+mdK7ZbVpIII04AYF8b0A3V4fecTJIYtpdWY2lM78 5NzopyFXd8FBPFr7GqD8zMC72heV62SZ1cKMIELD1FfSd1+zyHxPnnmgt6shY0rfWRzT i/TiWo4LxU2zQcfWKYPJ7hex5utd0wpT7CC1RdfvGZ8OV4YlnYTEhCKBl2bu5sghHcsQ eStchEcGE574pcqK9iSj4JmmUNTrVtKiT66fisnAn//EIqbJ8fHvHJoQ6NSeXGyt/o2n Y/wCf3g9H9dktM+C/2wXd36HvhLDqzidPgO+y5SCRfwktmirvq9aVKbRgdadZoLKxXEZ a+hQ== X-Forwarded-Encrypted: i=1; AKwUvBxA66co2KN4fq2YF4zFroec45YtfXshZ3lUVUbCFkdy9kQc45vvUPzDTYiXO4C4cMD2izzo2UaorXuzOoA=@vger.kernel.org X-Gm-Message-State: AFuF++kJwD5tJGQWRxofWE4lHlDLjxc3VUUHEndoxYNHHlkPlwMmbMFT 8cP/TRTPESR+1cAhv0h2Vp9vPBFZaB3bNrEU1fY4o5pX6fq99DmHFyiDB3goxX2+ X-Gm-Gg: AYBFou0YGbU5o+ZFy36aylhMsoMaBbpqD2U21wfnUfXQP8ZhjjvAangPiBGSFH01rN5 JJ/9wEeLI3F2sm20v0s+f8cz9ZLqKWZB9bOoEJ9ve6bLPun24iFMiVh60li0ECHMyoL5ZyM2o91 f+9/GArj4K2Tlax+oo2UdX8cc5YGyiMlCddLxYmY7GOWLgqd4wn4vReT2U8a0Aci35wazAw0aF3 /VBixpmiNmzNY3K5BDqTVIsXGXNOXBQdbIgfyvZpIJGZwMYanSQZepATlF2TKtfUlevmTNrDY1+ ECzx2qhaLU7IKUsENe3EAVXAwahLzN346j3VKhNibBP4HatoWPKbfgsQWo2G1OQiKQIVF0BAUMQ om4D2Fvefkx03YnaG2iEZls9dBu0lYMj17b0Iz+4NvqKhP2/clHgspQswPwXfeoiJcRveKta0cA Hq578LGvWgVNCXu86ySe/19xOaI2VtyuV0UdJOlxMlKc2LZw03ASVH6j5AHK/A5HgB1NQ/81m3F 0MVFtfM0su2jw3mtrELhFYczezWJEbsP7Swa1SIB3rrH4zgfXAtClh19lOwylsanUB76Er0BQ== X-Received: by 2002:a05:600c:190b:b0:49c:fc6c:be12 with SMTP id 5b1f17b1804b1-49cfc6cc0acmr351448145e9.24.1789049810601; Thu, 10 Sep 2026 07:16:50 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d20fce7a7sm293895575e9.4.2026.09.10.07.16.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 07:16:50 -0700 (PDT) From: Ernest Van Hoecke Date: Thu, 10 Sep 2026 16:16:43 +0200 Subject: [PATCH v2 2/7] of: property: fw_devlink: Report unsupported supplier linking 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: <20260910-fw-devlink-nexus-ready-v2-2-17ac82dbe226@toradex.com> References: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> In-Reply-To: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> To: Rob Herring , Saravana Kannan Cc: "Miquel Raynal (Schneider Electric)" , Frank Li , Kieran Bingham , Pengutronix Kernel Team , Stephen Boyd , Brian Masney , Linus Walleij , Bartosz Golaszewski , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Herve Codina , Greg Kroah-Hartman , Geert Uytterhoeven , Leonardo Costa , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Ernest Van Hoecke X-Mailer: b4 0.13.0 From: Ernest Van Hoecke OF supplier linking is deliberately disabled on OLPC and Intel CE4100 systems. The add_links operation currently returns zero on these systems, so callers cannot distinguish unsupported linking from success. Return -EOPNOTSUPP when supplier linking is unsupported. This allows OF unit tests to skip link assertions on these systems without exposing the private platform-support predicate. The driver core ignores the add_links return value and marks the fwnode as processed regardless, so its link creation and retry behavior remain unchanged. Signed-off-by: Ernest Van Hoecke Reviewed-by: Herve Codina --- drivers/of/property.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/of/property.c b/drivers/of/property.c index 380df0861ab9..eba7e9fe6c38 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -1691,7 +1691,7 @@ static int of_fwnode_add_links(struct fwnode_handle *= fwnode) struct device_node *con_np =3D to_of_node(fwnode); =20 if (!of_is_fwnode_add_links_supported()) - return 0; + return -EOPNOTSUPP; =20 if (!con_np) return -EINVAL; --=20 2.43.0 From nobody Fri Sep 25 16:03:01 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 43D0A49362E for ; Thu, 10 Sep 2026 14:16:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049817; cv=none; b=ZEwO+2hdg9jESd/Owiy49KFc/5yCgELsCLYcnPfz1CjELsxA35Ih1rvDEHgJ2NqBzZnCCSm8f1c+imIfYLBXfSxyqb/A5hFVZ+d9yNHYloayoCKcwDQYgnl5CRxOoFHwSwAG5fcqcBo9BCW9JszyeqTOLhulnd6rA7zXh+enq08= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049817; c=relaxed/simple; bh=14q/AGuCI/1cMUweJgIB0L3OMxxoLgdTw1EPzcv06eM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pjfMEWHX10PSdSZQLgsvaWGn1Ey7pVMvAvwe7LBAFpq10QN701+YpMB+Vv9a4cGZszTEPR6yyumgaBB7hd+xHswYpLAAoV63pw2IrY7eiKg+fEBFVRO3wl+UUTQ7dyrYv21/uSVO1uYwZBe4Jj4S5jXk0/eVBVxXTFO/Yc405Io= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=JlJAfg+h; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JlJAfg+h" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-49d0da752ffso52800785e9.3 for ; Thu, 10 Sep 2026 07:16:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789049813; x=1789654613; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=WwWBBZH7mpniW2ZzZNxzBtSQJ/59woxlB51LlnMYp5I=; b=JlJAfg+hycewDNa7L4DM6tPzQjnNrEqQt76IN4C3HIJgwfVJo8KXIybw8BH3ogGO+N heZthqX3VUqEvDJDVh/rcjgYeyTQV7+/2UFjwWWAZx6Xh0ZCrxVPjh+ZZLGcijDbJ9cJ Cdhl5Qo293+hugTNPsF4y0OkFh2r3aJZJNs6G8tUC+1oZi7knRkw8AzgrBxBQF9PiFtr erbVLZiX4+M/7fsieqB+6+aLusDT4nxqFcG0cu0LMfC7qkZhC+rkLhToIUBaprJbSvUY IZnscjIv4wv8XW6pUDNELFtxM1gEk2DZ2PxaMwZMU0A/bpATSnQgVZ3wX1eZw9ywucIw vv6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789049813; x=1789654613; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=WwWBBZH7mpniW2ZzZNxzBtSQJ/59woxlB51LlnMYp5I=; b=TYQMBryen3lJQzgFGKDEfE2MdkriykMhG+miqDCPzQ4Nd8u4zMdIfhznMkduCZVrL4 XtGJ5s65ZKEgRGwFv6u9DapwfZdl6yaTeZaRxNJy2uwNQnSVDVbZ1+y1Kp+Zetj6Gp4Q q/104e8t77cteuavWsjjVnBOZ2isJ19BlUqAAPuyBgXQZMQx9MIwhX8GMkLduqn3CJjh QLFa0TG3eEBGjty7G9xiHAy3Yk68ZTuGtLnegWnT/CrGD8aYrQ76wTre/iRNFQDk4A10 tN3TRUeEpKb4tsewXCk5DE5X0+IVk0nS0KAkwan+FXKRd1OVoOpu90l3z/pwyUZRfV36 NnJg== X-Forwarded-Encrypted: i=1; AKwUvBw+oRf+HTHB11ZOxt6SJHkTChiLbXWF/lS4mlVCyL7s1qWruHj+THGeZhEbY4G3iyolf4VrArGOyiqrQX4=@vger.kernel.org X-Gm-Message-State: AFuF++nEXtp3hX2fNNYF+dcrSVamcnHAwipv4RIXAHKs/wyiITfnD3ei 5oFasY4sfzJAgDJpkOYQc3iTWumfD8FCkaiYPFOQjXcOe3ClqyMPOlutxzO3AkaJ X-Gm-Gg: AYBFou2xaO1xH6w0webX00gA7qLtoxqWv8SeJVyKVnmHzN3aZBlXHjkeFzNsDnssaeH xOGHA1PVa+PaGbpiQ57Aua4osuJe6pHWM5frGgkaC85HJEgUnrf1khwJPbp1sUmHX/PvUxZCJTQ iUnD+0LzuYiuomrvPGr1mKAdrqaOSyYG3ODCeENgUp9BJ5Ievdja1zwf88QdupFUpnASJ2KL6aZ SxDALYzmfEUCPrKAlmFLaGqsrUOOKEmTPjBOgI+qU39RWbDGnOkUvblcvlhWmqZ2oW2nhE652hf l/HsRX6nypzgziZGdr+J7KEgPvDJAp4wgFOcAj9Bqbl76NUlMEm2uriBPjszYIMwYVVpXyr2tB3 4xsswJWnpLcz002GxVvgjeEUNQtGLVlYV9thIODlx4Y1EmD3bcDbp0gNY2lxkq+47Wft30/zL0P E6B2EhK7CAS8FaEkHTf5PnN1yupnHqKrEUaqfYtONJyKKML8gPTNYJ1fkampY6VkZSOrzfItwaJ z6k3sfFZQK+5+pQ9F2BGFLUwBi3ws2E6/C0zl5PnzHe50UeNIgJZ1h7/2Y3GpS6qI6WwaFbqA== X-Received: by 2002:a05:600c:4e46:b0:49c:fc6e:8cb4 with SMTP id 5b1f17b1804b1-49cfc6e8e51mr381246695e9.24.1789049813262; Thu, 10 Sep 2026 07:16:53 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d20fce7a7sm293895575e9.4.2026.09.10.07.16.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 07:16:52 -0700 (PDT) From: Ernest Van Hoecke Date: Thu, 10 Sep 2026 16:16:44 +0200 Subject: [PATCH v2 3/7] of: unittest: Test fw_devlink with GPIO nexus maps 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: <20260910-fw-devlink-nexus-ready-v2-3-17ac82dbe226@toradex.com> References: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> In-Reply-To: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> To: Rob Herring , Saravana Kannan Cc: "Miquel Raynal (Schneider Electric)" , Frank Li , Kieran Bingham , Pengutronix Kernel Team , Stephen Boyd , Brian Masney , Linus Walleij , Bartosz Golaszewski , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Herve Codina , Greg Kroah-Hartman , Geert Uytterhoeven , Leonardo Costa , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Ernest Van Hoecke X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Add OF unit tests that call the fw_devlink add_links operation for GPIOs routed through nexus maps. Verify that each mapped consumer has exactly one link to the final GPIO provider rather than to the nexus. Also cover direct references and all GPIO property spellings recognized by fw_devlink, including the deprecated singular and unprefixed forms. Signed-off-by: Ernest Van Hoecke Reviewed-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/of/unittest-data/tests-phandle.dtsi | 33 +++++++++++++ drivers/of/unittest.c | 75 +++++++++++++++++++++++++= ++++ 2 files changed, 108 insertions(+) diff --git a/drivers/of/unittest-data/tests-phandle.dtsi b/drivers/of/unitt= est-data/tests-phandle.dtsi index 554a996b2ef1..c3727ed15bde 100644 --- a/drivers/of/unittest-data/tests-phandle.dtsi +++ b/drivers/of/unittest-data/tests-phandle.dtsi @@ -79,6 +79,39 @@ consumer-b { phandle-list-bad-args =3D <&provider2 1 0>, <&provider4 0>; }; + + fw-devlink-tests { + gpio_provider: gpio-controller { + #gpio-cells =3D <2>; + }; + + fwdevlink_nexus: nexus { + #gpio-cells =3D <2>; + gpio-map =3D <0 0 &gpio_provider 1 0>; + gpio-map-mask =3D <0xffffffff 0>; + gpio-map-pass-thru =3D <0 0xffffffff>; + }; + + gpio-compat-consumer { + gpios =3D <&fwdevlink_nexus 0 0>; + }; + + gpio-compat-singular-consumer { + gpio =3D <&fwdevlink_nexus 0 0>; + }; + + gpio-consumer { + test-gpios =3D <&fwdevlink_nexus 0 0>; + }; + + gpio-direct-consumer { + test-gpios =3D <&gpio_provider 1 0>; + }; + + gpio-singular-consumer { + test-gpio =3D <&fwdevlink_nexus 0 0>; + }; + }; }; }; }; diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index e255f54f4d76..dfa3c885d142 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c @@ -10,6 +10,7 @@ #include /* to test phys_to_dma/dma_to_phys */ #include #include +#include #include #include #include @@ -710,6 +711,79 @@ static void __init of_unittest_parse_phandle_with_args= _map(void) } } =20 +static void __init of_unittest_fw_devlink_supplier(struct device_node *tes= ts, + const char *consumer_name, + const char *supplier_name) +{ + struct device_node *consumer, *supplier; + struct fwnode_handle *consumer_fwnode; + struct fwnode_link *link; + unsigned int link_count =3D 0; + bool found =3D false; + int rc; + + consumer =3D of_get_child_by_name(tests, consumer_name); + supplier =3D of_get_child_by_name(tests, supplier_name); + if (unittest(consumer && supplier, "missing consumer %s or supplier %s\n", + consumer_name, supplier_name)) + goto put_nodes; + + consumer_fwnode =3D of_fwnode_handle(consumer); + fwnode_links_purge(consumer_fwnode); + rc =3D fwnode_call_int_op(consumer_fwnode, add_links); + if (rc =3D=3D -EOPNOTSUPP) { + pr_info_once("fw_devlink tests skipped: OF supplier links are not suppor= ted\n"); + goto purge_links; + } + if (unittest(!rc, "failed to add links for %pOF: %d\n", consumer, rc)) + goto purge_links; + + /* + * The suppliers list should normally be accessed with fwnode_link_lock + * held, but that lock is private to the driver core. These test nodes + * are isolated and have no concurrent link updates. + */ + list_for_each_entry(link, &consumer_fwnode->suppliers, c_hook) { + link_count++; + if (link->supplier =3D=3D of_fwnode_handle(supplier)) + found =3D true; + } + + unittest(link_count =3D=3D 1, "%pOF has %u suppliers, expected 1\n", cons= umer, link_count); + unittest(found, "%pOF is not linked to supplier %pOF\n", consumer, suppli= er); + +purge_links: + fwnode_links_purge(consumer_fwnode); +put_nodes: + of_node_put(consumer); + of_node_put(supplier); +} + +static void __init of_unittest_fw_devlink(void) +{ + static const struct { + const char *consumer; + const char *supplier; + } cases[] =3D { + { "gpio-compat-consumer", "gpio-controller" }, + { "gpio-compat-singular-consumer", "gpio-controller" }, + { "gpio-consumer", "gpio-controller" }, + { "gpio-direct-consumer", "gpio-controller" }, + { "gpio-singular-consumer", "gpio-controller" }, + }; + struct device_node *tests; + int i; + + tests =3D of_find_node_by_path("/testcase-data/phandle-tests/fw-devlink-t= ests"); + if (unittest(tests, "missing fw_devlink test data\n")) + return; + + for (i =3D 0; i < ARRAY_SIZE(cases); i++) + of_unittest_fw_devlink_supplier(tests, cases[i].consumer, cases[i].suppl= ier); + + of_node_put(tests); +} + static void __init of_unittest_property_string(void) { const char *strings[4]; @@ -4533,6 +4607,7 @@ static int __init of_unittest(void) of_unittest_dynamic(); of_unittest_parse_phandle_with_args(); of_unittest_parse_phandle_with_args_map(); + of_unittest_fw_devlink(); of_unittest_printf(); of_unittest_property_string(); of_unittest_property_copy(); --=20 2.43.0 From nobody Fri Sep 25 16:03:01 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2FCE34A093B for ; Thu, 10 Sep 2026 14:16:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049819; cv=none; b=umMH3z4AWYdZGBIIzb0xcyXmEnQkuUVUok0Gr7HEI8X5DWCi/Jid/vZ+VAUOoFp6D0EtBMASzF2ER3A0UK//qoi4tImVuzbwtpO299GpowVBKdmD7tNR3bWlhddYxGdtmJdUWxgglsmTZyR3E9kmYFoAtj4Gwfcu2GG3vER5aFY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049819; c=relaxed/simple; bh=ZHk+OoghMCoHYA0fAqgJIcS5mK9yxj9zSLOS3Af/sOg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=C6+2zPafHkni1RnNJa82/DdPWlKxoKqlLZxFRkQ6wy7N2Gk4FNYHIoA5lpwOQwdFIQxwiUhoEZewlIl6c+LancX9Okueqx4oEiRwQ6l4/GrMNeL+goHv6QyNS406vId+7DjKhGUwO6UjC3JPGOpfoAv2HoSV/gq+8u2W56al4hU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mJBh6qOR; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mJBh6qOR" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-49cd77e0f95so56114505e9.3 for ; Thu, 10 Sep 2026 07:16:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789049815; x=1789654615; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=cfkoJaXJRyESn+mlV6qvPjMOAGJjSlzoQyRVAMURXQc=; b=mJBh6qORqrE0iRe9+QI0rJvrG0o05/+4qzEXS4PawP2R15wzEA9fgg6EByDgqMcQGU NBoKI7a+ShTEBZGtzABj0D/YCxGnJfjL8hGwCKaFgVubId9bqM4W3huDdvY2b8cHnP1l P99qJMSjSA3VInVW/hesfdHwnJ+iNdKaHDva+R6sElZ3glRY3E2VvtHs2I+cQnICnT9e ddnk6R06xHwROtyVXHq6zXTfdb/C7+zy5H8ZNhKXSznOr8Y+uHbrnfwGNmEgMHJq/ohl m9P970I1q/rUfIg8Et6e+IC1ZoPmetgTP2J22OSy9os3NJz0x9fH5Fn4CnTzUhD+RNdf WH5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789049815; x=1789654615; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=cfkoJaXJRyESn+mlV6qvPjMOAGJjSlzoQyRVAMURXQc=; b=KkIDTUgBwIPBuSbHXYxvmcLWq/OetG6g7wAdqeTUrO3IIzM71+hxOMptMqGDExF3Vs lGoCVt5iaRM0CEAgbGaULj1DRaaXDSne06++EohqOk0KbrwJQpENLkNLKZpT9DtRfpOC efYrUZembN2LAEBUlN97bseVSxngz1HT+zK03aTULRKwTxeGdJ60YpdYEub5obncfacB grhHL0DHwuwthArWAPNDVpu9j6Pg9iInXvX5v7SWUVNC/MBgcTKDJLY3T96hAtDcgdO0 E0Z6SB09TJq66LSCpwvfwDf6QXS9AQbjkFDXmu5CJdhgANSRoyvO8DWGhxbA8nlTfnvk rjIw== X-Forwarded-Encrypted: i=1; AKwUvBxUW12S251pyuLtP4gqJI+XIpJMVUaWIkr/gh1PvFIkdW4dRve7dHcA3abGd1J3JQX2ZcddPlOpyDTPkEg=@vger.kernel.org X-Gm-Message-State: AFuF++m9xPBkTyrQDYz43XsrhmW7qR+ERUu1Tkkq0RCVj+50cxIa7UJI TgURRr4i4GTYCGxCNvLTDzFwh0rSqmnCCoD8hQosrU5P+U+R9OzrmFoQcK+y0dDr X-Gm-Gg: AYBFou2q6p9Jr2/N1re/sjR3Eg2SoY3rwPUYlSVhHsmGGCy9JflJSNYh3NdOFtlq6uJ DkM69n8bFQsCk/e8TbbothFUhUmH/v/8Oz8EAwKub9fiLg49XFpaGBeBxbWysWPkQK1UaicleXk +wsBeSoQAy9jjloUZL6c7e8TsBcSXnycQnYiJvsZQnHly99PuZ/cFrHZoJFQLHBUriVrqjTinQk y/d3CWv5JGzJ9ZtdhbKCxgkYOU6a1Z7vC//6a6lBgxO9gCFrz5X77A/9K0zFG7av7jW44TtKiN9 rowsGZ4yjd2D1wYvHPOvAuGk3AYZyTFyN/INQyUk+cg3O114zdaoE1+AeM862uvf9IfJ8LGmG1q sM4apeHWmMRdiDYgazBSeD5UU8C0fdSplXIWFSks4i0oOyHq2gKDq5TIDXK/sW8cNVtnBKcSEqG PNLYgPfeCmum+na/v4dbf7qx2JEgXY93f3PKjDEh5ScFgz1wcD/AWx4fA3FoyXWclq9kKUM97tv XOCOL8NLXDW1vGHq6OgNkfEp1I+qaRn2kZ1Pg37edlKdL8NcgdlNjICvElUC78iixdnnM6lcg== X-Received: by 2002:a05:600c:8b29:b0:49c:ee22:364c with SMTP id 5b1f17b1804b1-49cf824743cmr422491675e9.9.1789049814830; Thu, 10 Sep 2026 07:16:54 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d20fce7a7sm293895575e9.4.2026.09.10.07.16.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 07:16:53 -0700 (PDT) From: Ernest Van Hoecke Date: Thu, 10 Sep 2026 16:16:45 +0200 Subject: [PATCH v2 4/7] of: property: fw_devlink: Follow PWM nexus maps 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: <20260910-fw-devlink-nexus-ready-v2-4-17ac82dbe226@toradex.com> References: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> In-Reply-To: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> To: Rob Herring , Saravana Kannan Cc: "Miquel Raynal (Schneider Electric)" , Frank Li , Kieran Bingham , Pengutronix Kernel Team , Stephen Boyd , Brian Masney , Linus Walleij , Bartosz Golaszewski , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Herve Codina , Greg Kroah-Hartman , Geert Uytterhoeven , Leonardo Costa , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Ernest Van Hoecke , stable@vger.kernel.org X-Mailer: b4 0.13.0 From: Ernest Van Hoecke PWM consumers use of_parse_phandle_with_args_map() to resolve specifiers through pwm-map properties. fw_devlink instead parses the pwms property as a direct phandle reference, so it records the nexus node as the supplier rather than the mapped PWM provider. A nexus is a translation node, not the PWM provider, and need not be populated as a device. The resulting fwnode link can therefore remain unresolved and indefinitely defer the consumer while device_links_check_suppliers() waits for the nexus. Use the map-aware parser for pwms so fw_devlink resolves the same provider as the PWM consumer API. Direct PWM references continue to work because the map-aware parser returns the original provider when no pwm-map property is present. Fixes: e71e46a6f19c ("pwm: Add support for pwm nexus dt bindings") Reported-by: Leonardo Costa Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jba= uradujrre@gc5nbdhhixaf/ Tested-by: Leonardo Costa Cc: stable@vger.kernel.org Signed-off-by: Ernest Van Hoecke Reviewed-by: Herve Codina --- drivers/of/property.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/of/property.c b/drivers/of/property.c index eba7e9fe6c38..a9c51d639a2b 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -1331,6 +1331,15 @@ static struct device_node *parse_##fname(struct devi= ce_node *np, \ return parse_prop_cells(np, prop_name, index, name, cells); \ } =20 +#define DEFINE_SIMPLE_NEXUS_PROP(fname, name, stem) \ +static struct device_node *parse_##fname(struct device_node *np, \ + const char *prop_name, int index) \ +{ \ + if (strcmp(prop_name, name)) \ + return NULL; \ + return parse_nexus_prop(np, prop_name, index, stem); \ +} + /** * parse_suffix_prop_cells - Suffix property parsing function for suppliers * @@ -1426,7 +1435,7 @@ DEFINE_SIMPLE_PROP(extcon, "extcon", NULL) DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", "#nvmem-cell-cells") DEFINE_SIMPLE_PROP(phys, "phys", "#phy-cells") DEFINE_SIMPLE_PROP(wakeup_parent, "wakeup-parent", NULL) -DEFINE_SIMPLE_PROP(pwms, "pwms", "#pwm-cells") +DEFINE_SIMPLE_NEXUS_PROP(pwms, "pwms", "pwm") DEFINE_SIMPLE_PROP(resets, "resets", "#reset-cells") DEFINE_SIMPLE_PROP(leds, "leds", NULL) DEFINE_SIMPLE_PROP(backlight, "backlight", NULL) --=20 2.43.0 From nobody Fri Sep 25 16:03:01 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0182E4A014E for ; Thu, 10 Sep 2026 14:16:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049820; cv=none; b=Pz3alJVQQZ6jnylJVO2YZQnlWk3AuhcuYE/HAmCoO5626lNwYsrfc1Jp1eOxkXCm27Yd8lDzM23Mvj56zkaUIS3Izqd8YsMhA8o1O+HWjNuxpgZXaWGh/Ml5JsoJgk9g/iB6Up8P+fghoC4Jbbp0AFbDrmOstMOds7zQ2F3YDEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049820; c=relaxed/simple; bh=xA45Y61XTBAgpBy6OAEVUm+aoRID/iBFxEHp4Q6aM/M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=COLR8OwnaDHaWfdtseWW/hfmaolQ6V2bydTxkuFGyeeSjRprg/JhP77Qy0UYARbZPdlJPHvE1gLcwfnR2Hv5z0Ps4I2T/8HiZkxkBh6+y7WR15OxN2/asK2ZDbf5gAT8Snuw0noh1revradRKC+BqZkx18z1fY9ZM0/RfrkGFuo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lQ9clEgS; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lQ9clEgS" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-498028b3d5eso68322745e9.1 for ; Thu, 10 Sep 2026 07:16:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789049816; x=1789654616; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5WKuPMePtnop5uPfXFl1ahyGCh0WOUAD5jTxVfDVb9I=; b=lQ9clEgS3Tw6dpdrUNTsv5JC6Pv6Mvk1nNq1+006g7fVDdjBRc9cF6cNuJpQYuJoLl rsSoRZbq8pwaV9OLBVFVWFcpKIIlHlhUeabZaTRxbyBpw7bEx0wVcdFk7Xbb/g/1FT3N tt3VK4Pps6RhuxY+6CfCO1mKKkMhQ1YwDRJ+/MbYaa0sM+jzi3rhP85Ksy8IlsE+Fq5f CI4e/dE8B0UkoC8hrq3QiCc/nQTsgjn7Y7bKH+yphaUuRPRTHtXZhKfl0oitdsGRrECb /5b3fFheIcitWvRzGSxrP421yH48vIuNZAHXTdyoTNti0MlyJpbMuxw1RUqBpPgpUdkq y4bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789049816; x=1789654616; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=5WKuPMePtnop5uPfXFl1ahyGCh0WOUAD5jTxVfDVb9I=; b=Wg8ycHd0WYDZuu5wziFt1fG9ZL1NW0L1yy2mcOdZbuG17FPDg+z66cVzCBRQ7yxv8O MR/ZB7K55DsectyI8t2Bkz1s0ayppCOR6zYOe5zRTt8e8oJY8w/nvDuNmc/gUxE5gXS3 tDLoUzptCLaRCZSTl/e1p7hs2kjZ72/qeT4YyOZ/lrRZJVciWoqni977RsqAU0fkjBFJ j0P7MFIdeSqiuhcZeBd28e+8/6ZxtHlohWx9PTVzryBGSMdKUNH9lwY1zKXDoeioAw4q qVJSIU5PPPbuJmxn4i19JRE2W9o2zBdTA+kAHS5NWR7MXVivZxNZDFFSAPnceX6Fg7hC Wv3A== X-Forwarded-Encrypted: i=1; AKwUvByrKvvWr5spS2xXXbtRQPKyuMOWqslaoiqtM1HvgLf82QHOzEtiX8wIqzfMuHbvEfsDX/JojQiAsEJhRDs=@vger.kernel.org X-Gm-Message-State: AFuF++ll4mdPkwqehumYVxQjh2osBrIHca5j0hAQU44AXfY0Mqx/rozA hpTn/7uJzMc+1WLs8Osgmr8z6z6rUdA+wlDDazAPFMXuAkpIdf6mZvfP0rYaMbnQ X-Gm-Gg: AYBFou3QyRKJugaQcP5Oo7ogNOmEi74oTzSrQ7u8H1ceJRUbiE9ERBJUVD/3u/OELxW 5L9wQLiS+ux9ZSwnf70vn0Cw0sSv02v59fxIOx2KBsm+3eFVLntUw2X8htUN0QcSuu7Lo1vkhsD oK5tj+B/2kYuBcRwYBWgqrBGxTPyiwZIqUs9lhCGQ8azkDUrzMQACGcMeEyuRxyW4mX3rI//1Q1 WuEHJLatuYSrLdV/jTuxN7AlJ+r2Jd4rLmaD3P/1NbHhrxSx+/EnFYeNHK9AK4xEJge+YwTuRD3 4RU+HKFg8jZ/WqDNhP5akTFzvCjYlmrXYLnVRfRd1XfeXeTlmZTjSXc82SwEmoi0c94xvRuCCcQ /VbmHCy6oU0OComxxF5eGTUTHlh6us67P32B+lrOBruHvUPJ42c55BTX6ghuIpXwCQR2brWei+o /oudci5dtSeAz7smDVxWlK+oZJh2zKBOcz8NPFwvKO8Er5qK/dJmbsUyahCMk7tfx9uwWzh1lIx IMwP+TQG3p/zM7sIHYaV90toNNZ8T97meSHnE92fttxG3gV1GAPq22DsZ1msTjHBLEo0leudQ== X-Received: by 2002:a05:600c:c168:b0:49c:edfa:15a with SMTP id 5b1f17b1804b1-49cf826c5f5mr415258855e9.13.1789049816022; Thu, 10 Sep 2026 07:16:56 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d20fce7a7sm293895575e9.4.2026.09.10.07.16.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 07:16:55 -0700 (PDT) From: Ernest Van Hoecke Date: Thu, 10 Sep 2026 16:16:46 +0200 Subject: [PATCH v2 5/7] of: unittest: Test fw_devlink with PWM nexus maps 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: <20260910-fw-devlink-nexus-ready-v2-5-17ac82dbe226@toradex.com> References: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> In-Reply-To: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> To: Rob Herring , Saravana Kannan Cc: "Miquel Raynal (Schneider Electric)" , Frank Li , Kieran Bingham , Pengutronix Kernel Team , Stephen Boyd , Brian Masney , Linus Walleij , Bartosz Golaszewski , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Herve Codina , Greg Kroah-Hartman , Geert Uytterhoeven , Leonardo Costa , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Ernest Van Hoecke X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Extend the fw_devlink OF unit tests with PWM references routed through a nexus map. Verify that the mapped consumer has exactly one link to the final PWM provider rather than to the nexus. Also cover a direct PWM reference to ensure that it continues to resolve to the original provider when no map is present. Signed-off-by: Ernest Van Hoecke --- drivers/of/unittest-data/tests-phandle.dtsi | 16 ++++++++++++++++ drivers/of/unittest.c | 2 ++ 2 files changed, 18 insertions(+) diff --git a/drivers/of/unittest-data/tests-phandle.dtsi b/drivers/of/unitt= est-data/tests-phandle.dtsi index c3727ed15bde..eef966615b22 100644 --- a/drivers/of/unittest-data/tests-phandle.dtsi +++ b/drivers/of/unittest-data/tests-phandle.dtsi @@ -85,11 +85,19 @@ gpio_provider: gpio-controller { #gpio-cells =3D <2>; }; =20 + pwm_provider: pwm-controller { + #pwm-cells =3D <2>; + }; + fwdevlink_nexus: nexus { #gpio-cells =3D <2>; + #pwm-cells =3D <2>; gpio-map =3D <0 0 &gpio_provider 1 0>; gpio-map-mask =3D <0xffffffff 0>; gpio-map-pass-thru =3D <0 0xffffffff>; + pwm-map =3D <0 0 &pwm_provider 1 0>; + pwm-map-mask =3D <0xffffffff 0>; + pwm-map-pass-thru =3D <0 0xffffffff>; }; =20 gpio-compat-consumer { @@ -111,6 +119,14 @@ gpio-direct-consumer { gpio-singular-consumer { test-gpio =3D <&fwdevlink_nexus 0 0>; }; + + pwm-consumer { + pwms =3D <&fwdevlink_nexus 0 0>; + }; + + pwm-direct-consumer { + pwms =3D <&pwm_provider 1 0>; + }; }; }; }; diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index dfa3c885d142..b739a69997a9 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c @@ -770,6 +770,8 @@ static void __init of_unittest_fw_devlink(void) { "gpio-consumer", "gpio-controller" }, { "gpio-direct-consumer", "gpio-controller" }, { "gpio-singular-consumer", "gpio-controller" }, + { "pwm-consumer", "pwm-controller" }, + { "pwm-direct-consumer", "pwm-controller" }, }; struct device_node *tests; int i; --=20 2.43.0 From nobody Fri Sep 25 16:03:01 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 36EB64A1E00 for ; Thu, 10 Sep 2026 14:16:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049822; cv=none; b=b1bD+43tYtTbwUrCfFgy9wW+NDxi5ZDF00xG9t82o+xyIwah4Sjznr5TcgVklqm5PLbK73kT+NoFbyFvBBWjvHkrQts7DTfsLUouDBans+kSsMAHZSKGwST4I2Oa1o8k9jN5p7FwKfNxDAn/3FX3G/ZqHG1lWOahCPlEvGXguFE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049822; c=relaxed/simple; bh=6RiQejsHuDMk8GZEMjpK5CDA0mBU2MCT5jsdy/qodsA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lxXCeepUcuLJUboBIZ9l/fZlIFcjQhm1UCSJ8dtRNvx7vFWXXBad3iTnWyzDxDCDNH1UbdWeuhnI66KwEGtXkkHSeWmHSK+yq5FDeHjXcoYfEkHaZfnplQY4qtNLEx+UIwROo3FkSTc5XA5UnI05ccXU8NUXkotUwjowVuulF9Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dY3VQiTw; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dY3VQiTw" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-49b392ccaacso103365375e9.2 for ; Thu, 10 Sep 2026 07:16:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789049817; x=1789654617; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=8QyDvfOaUygnD0ia8lPvpuZz5j554Ru/BlYaTHRuAo4=; b=dY3VQiTwDzR80KncepmjIcdBdEC+4r17wa+X4T5xC7PtE0Igomt86n3ONHLv4wISGR mhv4CRhgHvKxm6lMKHIv6uJq+48RE1k6OQ1hMGir6tSBjEW9yM1jxLqKg1YDn/eiwKqM M8w8s0bXM5CWYgaSaus7hUvAhzh4Y1UeMT47NbLQYRu7uBH1tx6fN7u7bwtpvdmvxeuR sPpF6sXYaxFv8ndv7O2ayuwwTdzQIIomt7IS+h4nmaVqnxwkJ6oD4dpnjPOEGbpzSSio TXf7316YJFm9w0i23MGQYGGiH9hp9BB4l6jhDsTz1DJOByvLGD4tHJFKA2Xg48BLq4ZR ZZdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789049817; x=1789654617; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8QyDvfOaUygnD0ia8lPvpuZz5j554Ru/BlYaTHRuAo4=; b=LMvDSV3ayFjHc87BE6jZjG2AWDKmM3jGzponXm6rZv8l63rtF5XKS640YwhmTxDhRd OGQFeOtxvmdYZAhyPZTKxNvh9kI5M7Pw9Aa1U0R3CaJEAJOs09WkTysKOy1NpW/nI7yy vYSazCQz5Ss9XCSR4enyn+s+6OjgLr9eCg08go8GEu9xaVgrxHT6lrMuYVTCeGhcco+I pP8blvQ8U74ZJYexzD4v+3G+MxP3UiCZi+3k1OoQaRrFTl4nXbjeEw70TO/foNhq2P07 +Nq3PCQpWnfyj7lGvQW6+d2g5ZwWdVerXoTN+My95WIPvGKOPtOHfD7s42DHBS2lrWEC QMjQ== X-Forwarded-Encrypted: i=1; AKwUvBydU7sHJJqNKYqilA2HFB45LPq6DB1bCVffwr1s+Uhia+nWW7FyzGR85IdkHHzqLsNPAlin1XZjDPlUla8=@vger.kernel.org X-Gm-Message-State: AFuF++m8yLbSYChPjceQTCiFNS+q3NxjHE8f5aZZYM0XFq0XfAZlOM7z wb6lOXOnc5um2vI8NHvDymdTmbab1fa4V76Wh+Zfj6eHuZSsu+G7V0POPcZWAfRO X-Gm-Gg: AYBFou3OCd8DkxU6nUvfu7IAkX5O1rh5Ov9IHdk8XPT6MyLzM8HVKP2joe0yOB3PmqA VpPmnVjMV0Tuawx9y7CP6Jlb2KAAO/34bs8eDGcWNw1xK7KwyO3UjjnKgHeOsmVkldx9HvMrRFc hN0tPdfT4XmBjmhBylExB1j1wgG3/AMI/XHQcoqZxYfUvZTGk7cduPF8KEFbtDocidSYnI/RH0o DgZyV4ctBhKz3Pl4kKT3q+/eRLSAwMXYu4P04HfN6O4R4YSH6C/antiWmOzqhbLe6rSb1KXE9lz 6yLXpf32qf2AsWfg88wkxpq+SekV+BGEaHcVPN6sfsrL0q+ayQAfO6u9tlGql5NnoGk4rMArDw4 n39Zjbd8JNK7ucpyWmHTwTFTEhZe05lOn8v237oFRkqXUIOYP5kyRYlSRQxKFbn+FymretZDIb6 Z9XTM1Jw1ztyLGnyPioEUVD2ATET7PdkzegSHCqHvLWIdkZm2xqa6X3Dz8q8Y832YC9XADhs3V/ Uu1Hp7BIoUmohvis37e5O45MDAgb7rX82DKcf8TllBYR6lanuQIPvlURHS0yVXIzOXFzHWUPA== X-Received: by 2002:a05:600c:3511:b0:49c:fa21:1c86 with SMTP id 5b1f17b1804b1-49cfa211cd7mr402624805e9.27.1789049817024; Thu, 10 Sep 2026 07:16:57 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d20fce7a7sm293895575e9.4.2026.09.10.07.16.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 07:16:56 -0700 (PDT) From: Ernest Van Hoecke Date: Thu, 10 Sep 2026 16:16:47 +0200 Subject: [PATCH v2 6/7] of: property: fw_devlink: Follow clock nexus maps 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: <20260910-fw-devlink-nexus-ready-v2-6-17ac82dbe226@toradex.com> References: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> In-Reply-To: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> To: Rob Herring , Saravana Kannan Cc: "Miquel Raynal (Schneider Electric)" , Frank Li , Kieran Bingham , Pengutronix Kernel Team , Stephen Boyd , Brian Masney , Linus Walleij , Bartosz Golaszewski , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Herve Codina , Greg Kroah-Hartman , Geert Uytterhoeven , Leonardo Costa , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Ernest Van Hoecke X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Clock consumers use of_parse_phandle_with_args_map() to resolve specifiers through clock-map properties. fw_devlink instead parses the clocks property as a direct phandle reference, so it records the nexus node as the supplier rather than the mapped clock provider. A nexus is a translation node, not the clock provider, and need not be populated as a device. The resulting fwnode link can therefore remain unresolved and indefinitely defer the consumer while device_links_check_suppliers() waits for the nexus. Use the map-aware parser for clocks so fw_devlink resolves the same provider as the clock consumer API. Direct clock references continue to work because the map-aware parser returns the original provider when no clock-map property is present. Fixes: aacc54c67869 ("clk: Add support for clock nexus dt bindings") Link: https://lore.kernel.org/all/20260807-schneider-v7-2-rc1-eip201-upstre= am-v5-0-8785f9531cf0@bootlin.com/ Signed-off-by: Ernest Van Hoecke --- drivers/of/property.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/of/property.c b/drivers/of/property.c index a9c51d639a2b..48e05f7bae2f 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -1422,7 +1422,7 @@ struct supplier_bindings { u8 fwlink_flags; }; =20 -DEFINE_SIMPLE_PROP(clocks, "clocks", "#clock-cells") +DEFINE_SIMPLE_NEXUS_PROP(clocks, "clocks", "clock") DEFINE_SIMPLE_PROP(interconnects, "interconnects", "#interconnect-cells") DEFINE_SIMPLE_PROP(iommus, "iommus", "#iommu-cells") DEFINE_SIMPLE_PROP(mboxes, "mboxes", "#mbox-cells") --=20 2.43.0 From nobody Fri Sep 25 16:03:01 2026 Received: from mail-wm2-f12.google.com (mail-wm2-f12.google.com [74.125.225.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D46F24A2613 for ; Thu, 10 Sep 2026 14:17:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049824; cv=none; b=pQilrzwdCP9fh03c0B3BRMTdhjh2QyE0xTLDHAvI+HYkXBgtMVK0m7ywZQp36QaDM2v5aWf9O4LwG8b12ZQsFTLk1dTpBH/pNzi3bdSRx4SxkgS03SMn6MqpR2OU9ZiZNo6TqnTHN9B7coXXWIm8E6sgSFakc1+ZX3nOtnx6CSs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789049824; c=relaxed/simple; bh=CjNNNaVv9KXfLBZwpOPF/OJsIKss3hZhjwJRSj/WrbY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=APjCYx1f6xdQDKpkGfUz5cUBiXtg64xF9G27UUidR4/HWm/FOdr+FXaZjwSC+HLTa3TNpxrd3dD+/2aTJHQV+3uQbOi11q3jxQTp2Oz+bpn7bd0CfxWkF/2gpT+vFp1831TzOJvcacZ7wkUlcr4wYU7cimN4m8gSLdBdb1HyavA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gzxWmu/b; arc=none smtp.client-ip=74.125.225.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gzxWmu/b" Received: by mail-wm2-f12.google.com with SMTP id 5b1f17b1804b1-49cc9f581c4so12377495e9.0 for ; Thu, 10 Sep 2026 07:17:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789049818; x=1789654618; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZNv1IJHXjclUxxs9te9sqmzRhOxAa9ASWy+fWccWYN4=; b=gzxWmu/bwG7kMmhfPbwGcJVHzzupA/7iTAJIfVa2xLu11niHy2pEnDrCxxUeN9JOMB vYDd2jMfzCYv1sTvsle4+D4rRRq4DnOv6PrM2iO25Yh4amp6ZsRxxt4Jz5PSoKcisqmp jBsYnMuO0NFa/MNaIsRZhMR1V46RdIv2/i2Pl6yd6rtpWZ+iCnS3Mr2UrNtNJF32wYkr VtWGfsDVEuGurmtzKyVebwJ6YF+obp89tJ8KBcaDBX4Gp1ixkZBtNN4BphUlN6jhOG2L P8qasAhxCIsJsHNLFdZunbFaduagVFH9OWB26QggwmjtsyTCOJzuP/hCbknXgyyPjbm5 QfEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789049818; x=1789654618; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ZNv1IJHXjclUxxs9te9sqmzRhOxAa9ASWy+fWccWYN4=; b=dYR3SDdPrYiPMoeJ1TIJGLqrzL29Peks/3vThuna0gi4Umb60hXrqgJZRvl2on9PSZ lPqIdWcASRvBrLW0tSHqdpI4YqDJFkvaFBVaDuBVKgqEm2C7DnssQNEqRD9URsJ4PWdP kr5QqB0sxW7nzkrNCFrVUDPzw7iD0w0L6aRv/ZejOe/OkYXRwbTYMz45wzvEqGrTPbF4 ozkXRZGRciuDOyl2KfZQlk0S22iHb+LejF4HplI3sKVi30VFkAi7YPXhE64h44hReF8Y xRt/txCo52TizErL68XlpFIpvzI0mhVgHeRsobnWD1YzX92ky6SUrop8KD9alMPnUK6t keWA== X-Forwarded-Encrypted: i=1; AKwUvBx+AutRjL7qvOgAydWOQG2SJjKb0q+1+ogeU3UzXPXXHrKzDIbognoAul1nLWYLjCaMehEPVpAriIPgMtY=@vger.kernel.org X-Gm-Message-State: AFuF++nb71w9wDcdawZMulNMu+D5Awy09czP7S9G/YqDtgPyHcdh6j3s 6/iwdECiHnw3GMeAT/2fvEgWWDQ/sBwtr+NAumDRwvgtK4Mtv1gvFYDtlfzHMeQX X-Gm-Gg: AYBFou2KXbIILcNWGMbxG2/4IXjfS02W51bgCwGCYmdc9FFJj7DQ899lF9u20lxE+ro eksJH/gdkI06KiPC6a0GbgKegIMSbJSJD8eD4vOypzXj4b6JJy+hCDq6UMBHSFX/jYU6c43NvYo VJe4/KBvDI26GnSOBL3zSQdd2l+Kibro4xuOglVw78yCjhcUg8XxRYtqB/UVrJp8PyAGSm17/2o Rf3zZXvzsdssAJV8HtaM97kY2PsbO8lGz/Da8XFaIltTleWXEJSNX/IO9B55mUT0tkfvVReE9Z2 wLl4FOZTT8mEsB+GChGCMyZ3aGzwFhCo/xUaFQaQwoRhYlyWbnIPPRwcyfSFVRAsZkffErh4U6X z8ZRqnPLil7B4slZFXGWVYMLwVlM+LFard+OQNfrw61aKIL4W7DTCMOMW58CpqxEAnJBSMInltN kirbE9/FF5Dc24BL6oeksqHoyoVhkonTc4buUcbkIhdGmGG2MzE9zbx+lNgtTZtbbv1jOEFGldw C+MlGIPfrxiBfSv+bOX/HZo+fBeWtvJrpcDT/L+NXr77lVKdpn6BCRqf2aGD/N1VEqqdj1kNA== X-Received: by 2002:a05:600c:4712:b0:49d:2705:7030 with SMTP id 5b1f17b1804b1-49d270571ecmr49038005e9.7.1789049818180; Thu, 10 Sep 2026 07:16:58 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d20fce7a7sm293895575e9.4.2026.09.10.07.16.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 07:16:57 -0700 (PDT) From: Ernest Van Hoecke Date: Thu, 10 Sep 2026 16:16:48 +0200 Subject: [PATCH v2 7/7] of: unittest: Test fw_devlink with clock nexus maps 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: <20260910-fw-devlink-nexus-ready-v2-7-17ac82dbe226@toradex.com> References: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> In-Reply-To: <20260910-fw-devlink-nexus-ready-v2-0-17ac82dbe226@toradex.com> To: Rob Herring , Saravana Kannan Cc: "Miquel Raynal (Schneider Electric)" , Frank Li , Kieran Bingham , Pengutronix Kernel Team , Stephen Boyd , Brian Masney , Linus Walleij , Bartosz Golaszewski , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Herve Codina , Greg Kroah-Hartman , Geert Uytterhoeven , Leonardo Costa , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Ernest Van Hoecke X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Extend the fw_devlink OF unit tests with clock references routed through a nexus map. Verify that the mapped consumer has exactly one link to the final clock provider rather than to the nexus. Also cover a direct clock reference to ensure that it continues to resolve to the original provider when no map is present. Signed-off-by: Ernest Van Hoecke --- drivers/of/unittest-data/tests-phandle.dtsi | 14 ++++++++++++++ drivers/of/unittest.c | 2 ++ 2 files changed, 16 insertions(+) diff --git a/drivers/of/unittest-data/tests-phandle.dtsi b/drivers/of/unitt= est-data/tests-phandle.dtsi index eef966615b22..aaf0b871c01d 100644 --- a/drivers/of/unittest-data/tests-phandle.dtsi +++ b/drivers/of/unittest-data/tests-phandle.dtsi @@ -81,6 +81,10 @@ consumer-b { }; =20 fw-devlink-tests { + clock_provider: clock-controller { + #clock-cells =3D <1>; + }; + gpio_provider: gpio-controller { #gpio-cells =3D <2>; }; @@ -90,8 +94,10 @@ pwm_provider: pwm-controller { }; =20 fwdevlink_nexus: nexus { + #clock-cells =3D <1>; #gpio-cells =3D <2>; #pwm-cells =3D <2>; + clock-map =3D <0 &clock_provider 1>; gpio-map =3D <0 0 &gpio_provider 1 0>; gpio-map-mask =3D <0xffffffff 0>; gpio-map-pass-thru =3D <0 0xffffffff>; @@ -100,6 +106,14 @@ fwdevlink_nexus: nexus { pwm-map-pass-thru =3D <0 0xffffffff>; }; =20 + clock-consumer { + clocks =3D <&fwdevlink_nexus 0>; + }; + + clock-direct-consumer { + clocks =3D <&clock_provider 1>; + }; + gpio-compat-consumer { gpios =3D <&fwdevlink_nexus 0 0>; }; diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index b739a69997a9..2859a44c3fe5 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c @@ -765,6 +765,8 @@ static void __init of_unittest_fw_devlink(void) const char *consumer; const char *supplier; } cases[] =3D { + { "clock-consumer", "clock-controller" }, + { "clock-direct-consumer", "clock-controller" }, { "gpio-compat-consumer", "gpio-controller" }, { "gpio-compat-singular-consumer", "gpio-controller" }, { "gpio-consumer", "gpio-controller" }, --=20 2.43.0