spi: rspi: fix build error when CONFIG_OF is not set
Subsystems (3)
PATCH 1/1 spi: rspi: fix build error when CONFIG_OF is not set
This patch fixes an issue that the following build error happens when the CONFIG_OF is not set:
drivers/spi/spi-rspi.c: In function 'rspi_probe':drivers/spi/spi-rspi.c:1203:26: error: 'rspi_of_match' undeclared (first use in this function)
---
This patch is based on the latest origin/topic/rspi branch in the spi.git.
drivers/spi/spi-rspi.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/spi/spi-rspi.c +1 -0
@@ -1164,6 +1164,7 @@ static int rspi_parse_dt(struct device *dev, struct spi_master *master) return 0; }#else +#define rspi_of_match NULLstatic inline int rspi_parse_dt (struct device *dev,struct spi_master *master) {return -EINVAL ;
Signature · 1 line
1.7.1
Hi Shimoda-san,
Quoted 27 lines · Yoshihiro
This patch fixes an issue that the following build error happens when the
CONFIG_OFis not set:
drivers/spi/spi-rspi.c: In function 'rspi_probe':drivers/spi/spi-rspi.c:1203:26: error: 'rspi_of_match' undeclared (first use in this function)Signed-off-by Yoshihiro Shimoda <[email protected]>---
This patch is based on the latest origin/topic/rspi branch in the spi.git.drivers/spi/spi-rspi.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)drivers/spi/spi-rspi.c +1
-0@@ -1164,6 +1164,7 @@ static int rspi_parse_dt(struct device *dev, struct spi_master *master) return 0; }#else +#define rspi_of_match NULLstatic inline int rspi_parse_dt (struct device *dev,struct spi_master *master) {return -EINVAL ;Signature · 1 line
1.7.1
Thanks, obviously I missed that of_match_device() still uses the ID table parameter if CONFIG_OF=n :-(
Below I have two alternative solutions:
1. Uses rspi_of_match() to nullify the ID table pointer, like is done in the platform_driver structure,
2. Fixes it at the OF subsystem level, by nullifying the ID table pointer inside of_match_device().
If 2 is accepted, drivers don't have to care about this anymore.
What do you think?
Quoted 1 line
From
060b8577e95441ee3b29e966a9fdd19b2a870bdfMon Sep 17 00:00:00 2001
From: Geert Uytterhoeven <[email protected]>
Date: Mon, 3 Feb 2014 09:22:06 +0100
Subject: [PATCH 1/2] spi: rspi: fix build error when CONFIG_OF is not set
If CONFIG_OF=n:
drivers/spi/spi-rspi.c: In function 'rspi_probe':drivers/spi/spi-rspi.c:1203:26: error: 'rspi_of_match' undeclared (first use in this function) drivers/spi/spi-rspi.c:1203:26: note: each undeclared identifier is reported only once for each function it appears in
Use of_match_ptr() to fix this.
--- drivers/spi/spi-rspi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/spi/spi-rspi.c +1 -1
@@ -1200,7 +1200,7 @@ static int rspi_probe(struct platform_device *pdev)return -ENOMEM ; } - of_id =of_match_device (rspi_of_match, &pdev->dev); + of_id =of_match_device (of_match_ptr (rspi_of_match), &pdev->dev);if (of_id) { ops = of_id->data; ret =rspi_parse_dt (&pdev->dev, master);
Signature · 1 line
1.7.9.5
Quoted 1 line
From
477ab825d43524959d68c3974e6e9536bd83bcdeMon Sep 17 00:00:00 2001
From: Geert Uytterhoeven <[email protected]>
Date: Mon, 3 Feb 2014 09:27:40 +0100
Subject: [PATCH 2/2] [RFC] of/device: Nullify match table in
of_match_device() for CONFIG_OF=n
If the of_device_id table inside a device driver is protected by #ifdef CONFIG_OF, the driver still has to provide a dummy declaration of the table, or wrap it inside of_match_ptr(), when calling of_match_device() in the CONFIG_OF=n case, else the driver fails to compile with e.g.
drivers/spi/spi-rspi.c: In function 'rspi_probe':drivers/spi/spi-rspi.c:1203:26: error: 'rspi_of_match' undeclared (first use in this function) drivers/spi/spi-rspi.c:1203:26: note: each undeclared identifier is reported only once for each function it appears in
Make of_match_device() nullify the table pointer if CONFIG_OF=n to fix this.
--- include/linux/of_device.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/linux/of_device.h +3 -1
@@ -72,11 +72,13 @@ static inline int of_device_uevent_modalias(struct device *dev,static inline void of_device_node_put (struct device *dev) { } -static inline const struct of_device_id *of_match_device ( +static inline const struct of_device_id *__of_match_device (const struct of_device_id *matches,const struct device *dev) {return NULL ; } +#define of_match_device (matches, dev) \ + __of_match_device(of_match_ptr(matches), (dev))static inline struct device_node *of_cpu_device_node_get (int cpu) {
Signature · 12 lines
1.7.9.5
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsMark Brown
maintainerQuoted 10 lines · Geert Uytterhoeven
Thanks, obviously I missed that
of_match_device()still uses the ID table parameter ifCONFIG_OF=n:-(Below I have two alternative solutions:
1. Usesrspi_of_match()to nullify the ID table pointer, like is done in theplatform_driverstructure,
2. Fixes it at the OF subsystem level, by nullifying the ID table pointer insideof_match_device().If 2 is accepted, drivers don't have to care about this anymore.
I think if we can fix it at the subsystem level that's clearly nicer since it means nothing else will run into the same issue. Your patch looks OK to me, I'd suggest submitting it.
Quoted 40 lines · Geert Uytterhoeven
Hi Shimoda-san,
Quoted 26 lines · Yoshihiro
This patch fixes an issue that the following build error happens when the
CONFIG_OFis not set:
drivers/spi/spi-rspi.c: In function 'rspi_probe':drivers/spi/spi-rspi.c:1203:26: error: 'rspi_of_match' undeclared (first use in this function)Signed-off-by Yoshihiro Shimoda <[email protected]>---
This patch is based on the latest origin/topic/rspi branch in the spi.git.drivers/spi/spi-rspi.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)drivers/spi/spi-rspi.c +1
-1@@ -1164,6 +1164,7 @@ static int rspi_parse_dt(struct device *dev, struct spi_master *master) return 0; }#else +#define rspi_of_match NULLstatic inline int rspi_parse_dt (struct device *dev,struct spi_master *master) {return -EINVAL ; --Quoted 1 line
1.7.1
Thanks, obviously I missed that
of_match_device()still uses the ID table parameter ifCONFIG_OF=n:-(Below I have two alternative solutions:
1. Usesrspi_of_match()to nullify the ID table pointer, like is done in theplatform_driverstructure,
2. Fixes it at the OF subsystem level, by nullifying the ID table pointer insideof_match_device().
Quoted 3 lines
If 2 is accepted, drivers don't have to care about this anymore.
What do you think?
I'll apply the 2nd one.
Rob
Hi Geert-san,
Quoted 40 lines · Geert Uytterhoeven
Hi Shimoda-san,
Quoted 27 lines · Yoshihiro
This patch fixes an issue that the following build error happens when the
CONFIG_OFis not set:
drivers/spi/spi-rspi.c: In function 'rspi_probe':drivers/spi/spi-rspi.c:1203:26: error: 'rspi_of_match' undeclared (first use in this function)Signed-off-by Yoshihiro Shimoda <[email protected]>---
This patch is based on the latest origin/topic/rspi branch in the spi.git.drivers/spi/spi-rspi.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)drivers/spi/spi-rspi.c +1
-0@@ -1164,6 +1164,7 @@ static int rspi_parse_dt(struct device *dev, struct spi_master *master) return 0; }#else +#define rspi_of_match NULLstatic inline int rspi_parse_dt (struct device *dev,struct spi_master *master) {return -EINVAL ;Signature · 1 line
1.7.1Thanks, obviously I missed that
of_match_device()still uses the ID table parameter ifCONFIG_OF=n:-(Below I have two alternative solutions:
1. Usesrspi_of_match()to nullify the ID table pointer, like is done in theplatform_driverstructure,
2. Fixes it at the OF subsystem level, by nullifying the ID table pointer insideof_match_device().
Quoted 3 lines
If 2 is accepted, drivers don't have to care about this anymore.
What do you think?
Thank you for the reply.
I think the 2nd one is a nice idea.
If I applied it without my patch, the build error disappeared.
Best regards,
Yoshihiro Shimoda
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 5 lines · Yoshihiro
This patch fixes an issue that the following build error happens when the
CONFIG_OFis not set:
drivers/spi/spi-rspi.c: In function 'rspi_probe':drivers/spi/spi-rspi.c:1203:26: error: 'rspi_of_match' undeclared (first use in this function)
Applied, thanks.