diff options
| author | Mark Brown <broonie@kernel.org> | 2026-09-07 14:48:00 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-09-07 14:48:00 +0100 |
| commit | a2939050dd2f33c9c6561841bfab6947cefe5397 (patch) | |
| tree | 92ac1bce85d1781996067276f475b25fa09572ea | |
| parent | 77cf3f24a169b1e679eb9c2058934f30f9314755 (diff) | |
| parent | c016587866e573fa8dff50c3bdae9734c4418099 (diff) | |
| download | linux-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.c | 41 | ||||
| -rw-r--r-- | drivers/pinctrl/intel/pinctrl-intel.h | 2 |
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; |
