[PATCH] pinctrl: denverton: Fix probe of MFD-created platform device
Radek Válko <[email protected]>
| Newsgroups | org.kernel.vger.linux-gpio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> --- 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