summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-09-07 14:48:00 +0100
committerMark Brown <broonie@kernel.org>2026-09-07 14:48:00 +0100
commita2939050dd2f33c9c6561841bfab6947cefe5397 (patch)
tree92ac1bce85d1781996067276f475b25fa09572ea
parent77cf3f24a169b1e679eb9c2058934f30f9314755 (diff)
parentc016587866e573fa8dff50c3bdae9734c4418099 (diff)
downloadlinux-next-a2939050dd2f33c9c6561841bfab6947cefe5397.tar.gz
linux-next-a2939050dd2f33c9c6561841bfab6947cefe5397.zip
Merge branch 'for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel.git
-rw-r--r--drivers/pinctrl/intel/pinctrl-intel.c41
-rw-r--r--drivers/pinctrl/intel/pinctrl-intel.h2
2 files changed, 31 insertions, 12 deletions
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index 261ec2ee63ef..1363301098d5 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -1702,35 +1702,42 @@ int intel_pinctrl_probe(struct platform_device *pdev,
}
EXPORT_SYMBOL_NS_GPL(intel_pinctrl_probe, "PINCTRL_INTEL");
-int intel_pinctrl_probe_by_hid(struct platform_device *pdev)
+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(&pdev->dev);
- if (!data)
- return -ENODATA;
+ data = device_get_match_data(dev);
+ if (data)
+ return data;
- return intel_pinctrl_probe(pdev, 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);
}
-EXPORT_SYMBOL_NS_GPL(intel_pinctrl_probe_by_hid, "PINCTRL_INTEL");
-int intel_pinctrl_probe_by_uid(struct platform_device *pdev)
+int intel_pinctrl_probe_by_hid(struct platform_device *pdev)
{
const struct intel_pinctrl_soc_data *data;
- data = intel_pinctrl_get_soc_data(pdev);
+ data = intel_pinctrl_get_soc_data_by_hid(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");
+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) {
@@ -1757,6 +1764,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) &&
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;