Message ID | 20220915091333.2425306-2-benedikt.niedermayr@siemens.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | omap-gpmc wait pin additions | expand |
Hi, On 15/09/2022 12:13, B. Niedermayr wrote: > From: Benedikt Niedermayr <benedikt.niedermayr@siemens.com> > > Newer kernels refuse to probe when using the same wait pin for > different chipselect regions. > > But this may be a usecase when connecting for example FPGA or ASIC > modules to the gpmc, which only got one wait pin installed. > > Signed-off-by: Benedikt Niedermayr <benedikt.niedermayr@siemens.com> > --- > drivers/memory/omap-gpmc.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c > index d9bf1c2ac319..e3674a15b934 100644 > --- a/drivers/memory/omap-gpmc.c > +++ b/drivers/memory/omap-gpmc.c > @@ -2221,9 +2221,13 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, > GPIO_ACTIVE_HIGH, > GPIOD_IN); > if (IS_ERR(waitpin_desc)) { > - dev_err(&pdev->dev, "invalid wait-pin: %d\n", wait_pin); > ret = PTR_ERR(waitpin_desc); > - goto err; > + if (ret == -EBUSY) { > + dev_info(&pdev->dev, "shared wait-pin: %d\n", wait_pin); What if this GPI was taken by someone other than us for wait-pin usage? e.g. some other device driver for GPI usage? In that case that GPIO functionality will break if we now start using it for wait-pin usage. Right? One solution could be keep track if we reserved that pin for wait-pin usage and if so sharing the wait-pin for wait-pin usage is fine. > + } else { > + dev_err(&pdev->dev, "invalid wait-pin: %d\n", wait_pin); > + goto err; > + } > } > } > cheers, -roger
diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c index d9bf1c2ac319..e3674a15b934 100644 --- a/drivers/memory/omap-gpmc.c +++ b/drivers/memory/omap-gpmc.c @@ -2221,9 +2221,13 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, GPIO_ACTIVE_HIGH, GPIOD_IN); if (IS_ERR(waitpin_desc)) { - dev_err(&pdev->dev, "invalid wait-pin: %d\n", wait_pin); ret = PTR_ERR(waitpin_desc); - goto err; + if (ret == -EBUSY) { + dev_info(&pdev->dev, "shared wait-pin: %d\n", wait_pin); + } else { + dev_err(&pdev->dev, "invalid wait-pin: %d\n", wait_pin); + goto err; + } } }