* [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well
@ 2026-09-03 11:46 Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 1/3] pinctrl: intel: Move intel_pinctrl_get_soc_data() upper in the code Andy Shevchenko
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-09-03 11:46 UTC (permalink / raw)
To: Andy Shevchenko, linux-gpio, linux-kernel
Cc: Mika Westerberg, Andy Shevchenko, Linus Walleij, Radek Válko
The reported platform can't be enumerated as it misses driver data
associated with the firmware node. Instead we should use platform
driver data. This mini-series to make it happen.
Changes v2:
- constified parameter in intel_pinctrl_get_soc_data() (Mika)
- added tag (Radek)
Cc: Radek Válko <rvalko@lipicko.cz>
Andy Shevchenko (3):
pinctrl: intel: Move intel_pinctrl_get_soc_data() upper in the code
pinctrl: intel: constify parameter in intel_pinctrl_get_soc_data()
pinctrl: intel: Try to retrieve driver data for pure platform drivers
drivers/pinctrl/intel/pinctrl-intel.c | 51 ++++++++++++++++++---------
drivers/pinctrl/intel/pinctrl-intel.h | 2 +-
2 files changed, 36 insertions(+), 17 deletions(-)
--
2.50.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/3] pinctrl: intel: Move intel_pinctrl_get_soc_data() upper in the code
2026-09-03 11:46 [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Andy Shevchenko
@ 2026-09-03 11:46 ` Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 2/3] pinctrl: intel: constify parameter in intel_pinctrl_get_soc_data() Andy Shevchenko
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-09-03 11:46 UTC (permalink / raw)
To: Andy Shevchenko, linux-gpio, linux-kernel
Cc: Mika Westerberg, Andy Shevchenko, Linus Walleij
While it's exported function, move it upper in the code to be on top
of the local user. This brings a consistency to the follow change
that will introduce similar helper for the intel_pinctrl_probe_by_hid().
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pinctrl/intel/pinctrl-intel.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index 261ec2ee63ef..fd02409a2415 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -1714,18 +1714,6 @@ int intel_pinctrl_probe_by_hid(struct platform_device *pdev)
}
EXPORT_SYMBOL_NS_GPL(intel_pinctrl_probe_by_hid, "PINCTRL_INTEL");
-int intel_pinctrl_probe_by_uid(struct platform_device *pdev)
-{
- const struct intel_pinctrl_soc_data *data;
-
- data = intel_pinctrl_get_soc_data(pdev);
- if (IS_ERR(data))
- return PTR_ERR(data);
-
- return intel_pinctrl_probe(pdev, data);
-}
-EXPORT_SYMBOL_NS_GPL(intel_pinctrl_probe_by_uid, "PINCTRL_INTEL");
-
const struct intel_pinctrl_soc_data *intel_pinctrl_get_soc_data(struct platform_device *pdev)
{
const struct intel_pinctrl_soc_data * const *table;
@@ -1757,6 +1745,18 @@ const struct intel_pinctrl_soc_data *intel_pinctrl_get_soc_data(struct platform_
}
EXPORT_SYMBOL_NS_GPL(intel_pinctrl_get_soc_data, "PINCTRL_INTEL");
+int intel_pinctrl_probe_by_uid(struct platform_device *pdev)
+{
+ const struct intel_pinctrl_soc_data *data;
+
+ data = intel_pinctrl_get_soc_data(pdev);
+ if (IS_ERR(data))
+ return PTR_ERR(data);
+
+ return intel_pinctrl_probe(pdev, data);
+}
+EXPORT_SYMBOL_NS_GPL(intel_pinctrl_probe_by_uid, "PINCTRL_INTEL");
+
static bool __intel_gpio_is_direct_irq(u32 value)
{
return (value & PADCFG0_GPIROUTIOXAPIC) &&
--
2.50.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/3] pinctrl: intel: constify parameter in intel_pinctrl_get_soc_data()
2026-09-03 11:46 [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 1/3] pinctrl: intel: Move intel_pinctrl_get_soc_data() upper in the code Andy Shevchenko
@ 2026-09-03 11:46 ` Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 3/3] pinctrl: intel: Try to retrieve driver data for pure platform drivers Andy Shevchenko
2026-09-03 11:54 ` [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Mika Westerberg
3 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-09-03 11:46 UTC (permalink / raw)
To: Andy Shevchenko, linux-gpio, linux-kernel
Cc: Mika Westerberg, Andy Shevchenko, Linus Walleij
The parameter of intel_pinctrl_get_soc_data() is not going to be modified.
Mark it with const qualifier.
Suggested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pinctrl/intel/pinctrl-intel.c | 4 ++--
drivers/pinctrl/intel/pinctrl-intel.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index fd02409a2415..08790bff2951 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -1714,11 +1714,11 @@ int intel_pinctrl_probe_by_hid(struct platform_device *pdev)
}
EXPORT_SYMBOL_NS_GPL(intel_pinctrl_probe_by_hid, "PINCTRL_INTEL");
-const struct intel_pinctrl_soc_data *intel_pinctrl_get_soc_data(struct platform_device *pdev)
+const struct intel_pinctrl_soc_data *intel_pinctrl_get_soc_data(const struct platform_device *pdev)
{
const struct intel_pinctrl_soc_data * const *table;
const struct intel_pinctrl_soc_data *data;
- struct device *dev = &pdev->dev;
+ const struct device *dev = &pdev->dev;
table = device_get_match_data(dev);
if (table) {
diff --git a/drivers/pinctrl/intel/pinctrl-intel.h b/drivers/pinctrl/intel/pinctrl-intel.h
index b5476b9de0db..b7ee7fd0c5f2 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.h
+++ b/drivers/pinctrl/intel/pinctrl-intel.h
@@ -225,7 +225,7 @@ struct intel_pinctrl_soc_data {
size_t ncommunities;
};
-const struct intel_pinctrl_soc_data *intel_pinctrl_get_soc_data(struct platform_device *pdev);
+const struct intel_pinctrl_soc_data *intel_pinctrl_get_soc_data(const struct platform_device *pdev);
struct intel_pad_context;
struct intel_community_context;
--
2.50.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/3] pinctrl: intel: Try to retrieve driver data for pure platform drivers
2026-09-03 11:46 [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 1/3] pinctrl: intel: Move intel_pinctrl_get_soc_data() upper in the code Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 2/3] pinctrl: intel: constify parameter in intel_pinctrl_get_soc_data() Andy Shevchenko
@ 2026-09-03 11:46 ` Andy Shevchenko
2026-09-03 11:54 ` [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Mika Westerberg
3 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-09-03 11:46 UTC (permalink / raw)
To: Andy Shevchenko, linux-gpio, linux-kernel
Cc: Mika Westerberg, Andy Shevchenko, Linus Walleij, Radek Válko
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 might be also true for other platforms that can be enumerated
by ACPI _HID. Fix the above by trying the pure platform driver data
in case the firmware node is not set or doesn't carry the necessary
information.
Reported-by: Radek Válko <rvalko@lipicko.cz>
Closes: https://lore.kernel.org/r/20260827184259.32386-1-rvalko@lipicko.cz
Tested-by: Radek Válko <rvalko@lipicko.cz>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pinctrl/intel/pinctrl-intel.c | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index 08790bff2951..1363301098d5 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -1702,13 +1702,32 @@ int intel_pinctrl_probe(struct platform_device *pdev,
}
EXPORT_SYMBOL_NS_GPL(intel_pinctrl_probe, "PINCTRL_INTEL");
+static const struct intel_pinctrl_soc_data *
+intel_pinctrl_get_soc_data_by_hid(const struct platform_device *pdev)
+{
+ const struct intel_pinctrl_soc_data *data;
+ const struct device *dev = &pdev->dev;
+ const struct platform_device_id *id;
+
+ data = device_get_match_data(dev);
+ if (data)
+ return data;
+
+ id = platform_get_device_id(pdev);
+ if (!id)
+ return ERR_PTR(-ENODEV);
+
+ data = (const struct intel_pinctrl_soc_data *)id->driver_data;
+ return data ?: ERR_PTR(-ENODATA);
+}
+
int intel_pinctrl_probe_by_hid(struct platform_device *pdev)
{
const struct intel_pinctrl_soc_data *data;
- data = device_get_match_data(&pdev->dev);
- if (!data)
- return -ENODATA;
+ data = intel_pinctrl_get_soc_data_by_hid(pdev);
+ if (IS_ERR(data))
+ return PTR_ERR(data);
return intel_pinctrl_probe(pdev, data);
}
--
2.50.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well
2026-09-03 11:46 [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Andy Shevchenko
` (2 preceding siblings ...)
2026-09-03 11:46 ` [PATCH v2 3/3] pinctrl: intel: Try to retrieve driver data for pure platform drivers Andy Shevchenko
@ 2026-09-03 11:54 ` Mika Westerberg
2026-09-03 13:43 ` Andy Shevchenko
3 siblings, 1 reply; 6+ messages in thread
From: Mika Westerberg @ 2026-09-03 11:54 UTC (permalink / raw)
To: Andy Shevchenko
Cc: linux-gpio, linux-kernel, Andy Shevchenko, Linus Walleij,
Radek Válko
On Thu, Sep 03, 2026 at 01:46:11PM +0200, Andy Shevchenko wrote:
> The reported platform can't be enumerated as it misses driver data
> associated with the firmware node. Instead we should use platform
> driver data. This mini-series to make it happen.
>
> Changes v2:
> - constified parameter in intel_pinctrl_get_soc_data() (Mika)
> - added tag (Radek)
>
> Cc: Radek Válko <rvalko@lipicko.cz>
>
> Andy Shevchenko (3):
> pinctrl: intel: Move intel_pinctrl_get_soc_data() upper in the code
> pinctrl: intel: constify parameter in intel_pinctrl_get_soc_data()
> pinctrl: intel: Try to retrieve driver data for pure platform drivers
>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well
2026-09-03 11:54 ` [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Mika Westerberg
@ 2026-09-03 13:43 ` Andy Shevchenko
0 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-09-03 13:43 UTC (permalink / raw)
To: Mika Westerberg
Cc: linux-gpio, linux-kernel, Andy Shevchenko, Linus Walleij,
Radek Válko
On Thu, Sep 03, 2026 at 01:54:24PM +0200, Mika Westerberg wrote:
> On Thu, Sep 03, 2026 at 01:46:11PM +0200, Andy Shevchenko wrote:
> > The reported platform can't be enumerated as it misses driver data
> > associated with the firmware node. Instead we should use platform
> > driver data. This mini-series to make it happen.
> >
> > Changes v2:
> > - constified parameter in intel_pinctrl_get_soc_data() (Mika)
> > - added tag (Radek)
> >
> > Cc: Radek Válko <rvalko@lipicko.cz>
> >
> > Andy Shevchenko (3):
> > pinctrl: intel: Move intel_pinctrl_get_soc_data() upper in the code
> > pinctrl: intel: constify parameter in intel_pinctrl_get_soc_data()
> > pinctrl: intel: Try to retrieve driver data for pure platform drivers
>
> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Pushed to my review and testing queue, thanks!
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-09-03 13:43 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-03 11:46 [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 1/3] pinctrl: intel: Move intel_pinctrl_get_soc_data() upper in the code Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 2/3] pinctrl: intel: constify parameter in intel_pinctrl_get_soc_data() Andy Shevchenko
2026-09-03 11:46 ` [PATCH v2 3/3] pinctrl: intel: Try to retrieve driver data for pure platform drivers Andy Shevchenko
2026-09-03 11:54 ` [PATCH v2 0/3] pinctrl: intel: retrieve pure platform driver data as well Mika Westerberg
2026-09-03 13:43 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox