[U-Boot] [PATCH] export SPI functions to standalone apps

Signed-off-by: Mike Frysinger vapier@gentoo.org --- common/exports.c | 8 ++++++++ include/_exports.h | 8 ++++++++ include/exports.h | 3 ++- 3 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/common/exports.c b/common/exports.c index ec4656b..b3b6e1f 100644 --- a/common/exports.c +++ b/common/exports.c @@ -38,4 +38,12 @@ void jumptable_init (void) gd->jt[XF_i2c_write] = (void *) i2c_write; gd->jt[XF_i2c_read] = (void *) i2c_read; #endif +#ifdef CONFIG_CMD_SPI + gd->jt[XF_spi_init] = (void *) spi_init; + gd->jt[XF_spi_setup_slave] = (void *) spi_setup_slave; + gd->jt[XF_spi_free_slave] = (void *) spi_free_slave; + gd->jt[XF_spi_claim_bus] = (void *) spi_claim_bus; + gd->jt[XF_spi_release_bus] = (void *) spi_release_bus; + gd->jt[XF_spi_xfer] = (void *) spi_xfer; +#endif } diff --git a/include/_exports.h b/include/_exports.h index af43885..2ff95cf 100644 --- a/include/_exports.h +++ b/include/_exports.h @@ -24,3 +24,11 @@ EXPORT_FUNC(strcmp) EXPORT_FUNC(i2c_write) EXPORT_FUNC(i2c_read) #endif +#ifdef CONFIG_CMD_SPI +EXPORT_FUNC(spi_init) +EXPORT_FUNC(spi_setup_slave) +EXPORT_FUNC(spi_free_slave) +EXPORT_FUNC(spi_claim_bus) +EXPORT_FUNC(spi_release_bus) +EXPORT_FUNC(spi_xfer) +#endif diff --git a/include/exports.h b/include/exports.h index 0620e9e..16ea03a 100644 --- a/include/exports.h +++ b/include/exports.h @@ -33,6 +33,7 @@ void forceenv (char *varname, char *varvalue); int i2c_write (uchar, uint, int , uchar* , int); int i2c_read (uchar, uint, int , uchar* , int); #endif +#include <spi.h>
void app_startup(char **);
@@ -46,7 +47,7 @@ enum { XF_MAX };
-#define XF_VERSION 4 +#define XF_VERSION 5
#if defined(CONFIG_I386) extern gd_t *global_data;

On 2009-07-19, at 04:22, Mike Frysinger wrote:
Signed-off-by: Mike Frysinger vapier@gentoo.org
common/exports.c | 8 ++++++++ include/_exports.h | 8 ++++++++ include/exports.h | 3 ++- 3 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/common/exports.c b/common/exports.c index ec4656b..b3b6e1f 100644 --- a/common/exports.c +++ b/common/exports.c @@ -38,4 +38,12 @@ void jumptable_init (void) gd->jt[XF_i2c_write] = (void *) i2c_write; gd->jt[XF_i2c_read] = (void *) i2c_read; #endif +#ifdef CONFIG_CMD_SPI
- gd->jt[XF_spi_init] = (void *) spi_init;
- gd->jt[XF_spi_setup_slave] = (void *) spi_setup_slave;
- gd->jt[XF_spi_free_slave] = (void *) spi_free_slave;
- gd->jt[XF_spi_claim_bus] = (void *) spi_claim_bus;
- gd->jt[XF_spi_release_bus] = (void *) spi_release_bus;
- gd->jt[XF_spi_xfer] = (void *) spi_xfer;
+#endif }
Such conditional entries in the jumptable make this interface unstable, as the calls table is made dependent on configuration of a particular image built, while it should only depend on the interface version. The application in such case is entagled with the knowledge of how the underlying firmware was configured at build time. I know there are other calls already #ifdef'ed, but they should be all fixed.
Rafal

While we're here, fix the broken #ifdef handling in _exports.h.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- v2 - drop all wrong #ifdef usage in _exports.h
common/exports.c | 8 ++++++++ include/_exports.h | 13 +++++++++---- include/exports.h | 3 ++- 3 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/common/exports.c b/common/exports.c index ec4656b..b3b6e1f 100644 --- a/common/exports.c +++ b/common/exports.c @@ -38,4 +38,12 @@ void jumptable_init (void) gd->jt[XF_i2c_write] = (void *) i2c_write; gd->jt[XF_i2c_read] = (void *) i2c_read; #endif +#ifdef CONFIG_CMD_SPI + gd->jt[XF_spi_init] = (void *) spi_init; + gd->jt[XF_spi_setup_slave] = (void *) spi_setup_slave; + gd->jt[XF_spi_free_slave] = (void *) spi_free_slave; + gd->jt[XF_spi_claim_bus] = (void *) spi_claim_bus; + gd->jt[XF_spi_release_bus] = (void *) spi_release_bus; + gd->jt[XF_spi_xfer] = (void *) spi_xfer; +#endif } diff --git a/include/_exports.h b/include/_exports.h index af43885..ba3920e 100644 --- a/include/_exports.h +++ b/include/_exports.h @@ -1,3 +1,6 @@ +/* You do not need to use #ifdef around functions that may not exist + * in the final configuration (such as i2c). + */ EXPORT_FUNC(get_version) EXPORT_FUNC(getc) EXPORT_FUNC(tstc) @@ -14,13 +17,15 @@ EXPORT_FUNC(vprintf) EXPORT_FUNC(do_reset) EXPORT_FUNC(getenv) EXPORT_FUNC(setenv) -#ifdef CONFIG_HAS_UID EXPORT_FUNC(forceenv) -#endif EXPORT_FUNC(simple_strtoul) EXPORT_FUNC(simple_strtol) EXPORT_FUNC(strcmp) -#if defined(CONFIG_CMD_I2C) EXPORT_FUNC(i2c_write) EXPORT_FUNC(i2c_read) -#endif +EXPORT_FUNC(spi_init) +EXPORT_FUNC(spi_setup_slave) +EXPORT_FUNC(spi_free_slave) +EXPORT_FUNC(spi_claim_bus) +EXPORT_FUNC(spi_release_bus) +EXPORT_FUNC(spi_xfer) diff --git a/include/exports.h b/include/exports.h index 0620e9e..16ea03a 100644 --- a/include/exports.h +++ b/include/exports.h @@ -33,6 +33,7 @@ void forceenv (char *varname, char *varvalue); int i2c_write (uchar, uint, int , uchar* , int); int i2c_read (uchar, uint, int , uchar* , int); #endif +#include <spi.h>
void app_startup(char **);
@@ -46,7 +47,7 @@ enum { XF_MAX };
-#define XF_VERSION 4 +#define XF_VERSION 5
#if defined(CONFIG_I386) extern gd_t *global_data;

Dear Mike Frysinger,
In message 1248230340-26252-1-git-send-email-vapier@gentoo.org you wrote:
While we're here, fix the broken #ifdef handling in _exports.h.
...
diff --git a/include/_exports.h b/include/_exports.h index af43885..ba3920e 100644 --- a/include/_exports.h +++ b/include/_exports.h @@ -1,3 +1,6 @@ +/* You do not need to use #ifdef around functions that may not exist
- in the final configuration (such as i2c).
- */
Incorrect multi-line comment style.
Please cleanup and resubmit.
Best regards,
Wolfgang Denk
participants (3)
-
Mike Frysinger
-
Rafal Jaworowski
-
Wolfgang Denk