| From 2bb2d17625834f1c017a55a472b2dc285f740a81 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 20 Sep 2021 14:41:41 +0200 |
| Subject: reset: socfpga: add empty driver allowing consumers to probe |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Paweł Anikiel <pan@semihalf.com> |
| |
| [ Upstream commit 3ad60b4b3570937f3278509fe6797a5093ce53f8 ] |
| |
| The early reset driver doesn't ever probe, which causes consuming |
| devices to be unable to probe. Add an empty driver to set this device |
| as available, allowing consumers to probe. |
| |
| Signed-off-by: Paweł Anikiel <pan@semihalf.com> |
| Link: https://lore.kernel.org/r/20210920124141.1166544-4-pan@semihalf.com |
| Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/reset/reset-socfpga.c | 26 ++++++++++++++++++++++++++ |
| 1 file changed, 26 insertions(+) |
| |
| diff --git a/drivers/reset/reset-socfpga.c b/drivers/reset/reset-socfpga.c |
| index 96953992c2bb5..1c5236a69dc49 100644 |
| --- a/drivers/reset/reset-socfpga.c |
| +++ b/drivers/reset/reset-socfpga.c |
| @@ -86,3 +86,29 @@ void __init socfpga_reset_init(void) |
| for_each_matching_node(np, socfpga_early_reset_dt_ids) |
| a10_reset_init(np); |
| } |
| + |
| +/* |
| + * The early driver is problematic, because it doesn't register |
| + * itself as a driver. This causes certain device links to prevent |
| + * consumer devices from probing. The hacky solution is to register |
| + * an empty driver, whose only job is to attach itself to the reset |
| + * manager and call probe. |
| + */ |
| +static const struct of_device_id socfpga_reset_dt_ids[] = { |
| + { .compatible = "altr,rst-mgr", }, |
| + { /* sentinel */ }, |
| +}; |
| + |
| +static int reset_simple_probe(struct platform_device *pdev) |
| +{ |
| + return 0; |
| +} |
| + |
| +static struct platform_driver reset_socfpga_driver = { |
| + .probe = reset_simple_probe, |
| + .driver = { |
| + .name = "socfpga-reset", |
| + .of_match_table = socfpga_reset_dt_ids, |
| + }, |
| +}; |
| +builtin_platform_driver(reset_socfpga_driver); |
| -- |
| 2.33.0 |
| |