From: Thierry Reding <[email protected]>
The mfd_add_devices() function takes a struct resource * as fifth
argument, but the nvec driver passes in a void __iomem *. The driver
gets away with it because none of the subdevices ever directly access
the registers.
Since subdevices never need to access the registers we can simply pass
NULL instead.
Signed-off-by: Thierry Reding <[email protected]>
---
drivers/staging/nvec/nvec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
index 0a5c84ad3f41..815065837ce7 100644
--- a/drivers/staging/nvec/nvec.c
+++ b/drivers/staging/nvec/nvec.c
@@ -893,7 +893,7 @@ static int tegra_nvec_probe(struct platform_device *pdev)
}
ret = mfd_add_devices(nvec->dev, -1, nvec_devices,
- ARRAY_SIZE(nvec_devices), base, 0, NULL);
+ ARRAY_SIZE(nvec_devices), NULL, 0, NULL);
if (ret)
dev_err(nvec->dev, "error adding subdevices\n");
--
2.0.2
From: Thierry Reding <[email protected]>
As opposed to platform_get_resource(), the platform_get_irq() function
has special code to handle driver probe deferral when booting using DT
and where an interrupt provider hasn't been registered yet. While this
is unlikely to become an issue for nvec, platform_get_irq() is the
recommended way to get at interrupts.
Signed-off-by: Thierry Reding <[email protected]>
---
drivers/staging/nvec/nvec.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
index 815065837ce7..a93208adbfcf 100644
--- a/drivers/staging/nvec/nvec.c
+++ b/drivers/staging/nvec/nvec.c
@@ -821,8 +821,8 @@ static int tegra_nvec_probe(struct platform_device *pdev)
if (IS_ERR(base))
return PTR_ERR(base);
- res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
- if (!res) {
+ nvec->irq = platform_get_irq(pdev, 0);
+ if (nvec->irq < 0) {
dev_err(&pdev->dev, "no irq resource?\n");
return -ENODEV;
}
@@ -840,7 +840,6 @@ static int tegra_nvec_probe(struct platform_device *pdev)
}
nvec->base = base;
- nvec->irq = res->start;
nvec->i2c_clk = i2c_clk;
nvec->rx = &nvec->msg_pool[0];
--
2.0.2
Am Dienstag 29 Juli 2014, 13:16:14 schrieb Thierry Reding:
> From: Thierry Reding <[email protected]>
>
> The mfd_add_devices() function takes a struct resource * as fifth
> argument, but the nvec driver passes in a void __iomem *. The driver
> gets away with it because none of the subdevices ever directly access
> the registers.
>
> Since subdevices never need to access the registers we can simply pass
> NULL instead.
>
> Signed-off-by: Thierry Reding <[email protected]>
Acked-by: Marc Dietrich <[email protected]>
> ---
> drivers/staging/nvec/nvec.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
> index 0a5c84ad3f41..815065837ce7 100644
> --- a/drivers/staging/nvec/nvec.c
> +++ b/drivers/staging/nvec/nvec.c
> @@ -893,7 +893,7 @@ static int tegra_nvec_probe(struct platform_device
> *pdev) }
>
> ret = mfd_add_devices(nvec->dev, -1, nvec_devices,
> - ARRAY_SIZE(nvec_devices), base, 0, NULL);
> + ARRAY_SIZE(nvec_devices), NULL, 0, NULL);
> if (ret)
> dev_err(nvec->dev, "error adding subdevices\n");
Am Dienstag 29 Juli 2014, 13:16:15 schrieb Thierry Reding:
> From: Thierry Reding <[email protected]>
>
> As opposed to platform_get_resource(), the platform_get_irq() function
> has special code to handle driver probe deferral when booting using DT
> and where an interrupt provider hasn't been registered yet. While this
> is unlikely to become an issue for nvec, platform_get_irq() is the
> recommended way to get at interrupts.
>
> Signed-off-by: Thierry Reding <[email protected]>
Thanks again, Thierry!
Acked-by: Marc Dietrich <[email protected]>
> ---
> drivers/staging/nvec/nvec.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
> index 815065837ce7..a93208adbfcf 100644
> --- a/drivers/staging/nvec/nvec.c
> +++ b/drivers/staging/nvec/nvec.c
> @@ -821,8 +821,8 @@ static int tegra_nvec_probe(struct platform_device
> *pdev) if (IS_ERR(base))
> return PTR_ERR(base);
>
> - res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> - if (!res) {
> + nvec->irq = platform_get_irq(pdev, 0);
> + if (nvec->irq < 0) {
> dev_err(&pdev->dev, "no irq resource?\n");
> return -ENODEV;
> }
> @@ -840,7 +840,6 @@ static int tegra_nvec_probe(struct platform_device
> *pdev) }
>
> nvec->base = base;
> - nvec->irq = res->start;
> nvec->i2c_clk = i2c_clk;
> nvec->rx = &nvec->msg_pool[0];