Hi John
Please could you test this little patch on some real AT91 hardware
with an SPI bus. The current AT91 SPI driver does not compile for me
on the AT91SAM7XEK.
Thanks
Andrew
Index: devs/spi/arm/at91/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/spi/arm/at91/current/ChangeLog,v
retrieving revision 1.5
diff -u -r1.5 ChangeLog
--- devs/spi/arm/at91/current/ChangeLog 7 Sep 2006 12:14:14 -0000 1.5
+++ devs/spi/arm/at91/current/ChangeLog 27 Sep 2006 08:33:20 -0000
@@ -1,3 +1,8 @@
+2006-09-27 Andrew Lunn <[EMAIL PROTECTED]>
+
+ * src/spi_at91.c (spi_at91_transaction_begin): Don't use #ifdef
+ inside a macro invocation. The compiler throws a wobbly.
+
2006-09-07 John Eigelaar <[EMAIL PROTECTED]>
* src/spi_at91.c: Fixed the chip select functions.
Index: devs/spi/arm/at91/current/src/spi_at91.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/spi/arm/at91/current/src/spi_at91.c,v
retrieving revision 1.5
diff -u -r1.5 spi_at91.c
--- devs/spi/arm/at91/current/src/spi_at91.c 7 Sep 2006 12:14:14 -0000
1.5
+++ devs/spi/arm/at91/current/src/spi_at91.c 27 Sep 2006 08:33:20 -0000
@@ -545,19 +545,19 @@
cause havoc with the driver */
// Put SPI bus into master mode
- if (1 == at91_spi_dev->cl_div32)
- HAL_WRITE_UINT32(spi_bus->base+AT91_SPI_MR, AT91_SPI_MR_MSTR |
- AT91_SPI_MR_DIV32
+ if (1 == at91_spi_dev->cl_div32) {
+ val = AT91_SPI_MR_MSTR | AT91_SPI_MR_DIV32;
#ifdef AT91_SPI_MR_MODFDIS
- | AT91_SPI_MR_MODFDIS
+ val |= AT91_SPI_MR_MODFDIS;
#endif
- );
- else
- HAL_WRITE_UINT32(spi_bus->base+AT91_SPI_MR, AT91_SPI_MR_MSTR
+ HAL_WRITE_UINT32(spi_bus->base+AT91_SPI_MR, val);
+ } else {
+ val = AT91_SPI_MR_MSTR;
#ifdef AT91_SPI_MR_MODFDIS
- | AT91_SPI_MR_MODFDIS
+ val |= AT91_SPI_MR_MODFDIS;
#endif
- );
+ HAL_WRITE_UINT32(spi_bus->base+AT91_SPI_MR, val);
+ }
}
static void