[PATCH] pinctrl: denverton: Fix probe of MFD-created platform device
From: Radek Válko
Date: Thu Aug 27 2026 - 14:51:03 EST
The Denverton pinctrl device can be instantiated by the Intel LPC
driver as an MFD platform device named "denverton-pinctrl".
On affected systems the platform device does not carry the INTC3000
ACPI match data itself. As a result, intel_pinctrl_probe_by_hid()
fails to obtain the SoC data using device_get_match_data() and
returns -ENODATA.
This results in:
denverton-pinctrl denverton-pinctrl.0:
probe with driver denverton-pinctrl failed with error -61
Denverton has a single fixed intel_pinctrl_soc_data instance. Pass
dnv_soc_data directly to intel_pinctrl_probe() instead of requiring
firmware match data for the MFD-created platform device.
Tested on an Intel Atom C3000 system with LPC/eSPI device 8086:19dc.
Before this change the Denverton pinctrl driver failed to probe and
no Denverton GPIO controller was registered. After the change,
denverton-pinctrl.0 registers with pinmux and pinconf support and
exposes 154 GPIO lines.
Signed-off-by: Radek Válko <rvalko@xxxxxxxxxx>
---
drivers/pinctrl/intel/pinctrl-denverton.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/pinctrl/intel/pinctrl-denverton.c b/drivers/pinctrl/intel/pinctrl-denverton.c
--- a/drivers/pinctrl/intel/pinctrl-denverton.c
+++ b/drivers/pinctrl/intel/pinctrl-denverton.c
@@ -250,6 +250,11 @@ static const struct intel_pinctrl_soc_data dnv_soc_data = {
.ncommunities = ARRAY_SIZE(dnv_communities),
};
+static int dnv_pinctrl_probe(struct platform_device *pdev)
+{
+ return intel_pinctrl_probe(pdev, &dnv_soc_data);
+}
+
static const struct acpi_device_id dnv_pinctrl_acpi_match[] = {
{ "INTC3000", (kernel_ulong_t)&dnv_soc_data },
{ }
@@ -263,7 +268,7 @@ static const struct platform_device_id dnv_pinctrl_platform_ids[] = {
MODULE_DEVICE_TABLE(platform, dnv_pinctrl_platform_ids);
static struct platform_driver dnv_pinctrl_driver = {
- .probe = intel_pinctrl_probe_by_hid,
+ .probe = dnv_pinctrl_probe,
.driver = {
.name = "denverton-pinctrl",
.acpi_match_table = dnv_pinctrl_acpi_match,
--
2.47.0