Uwe Hermann uwe@hermann-uwe.de writes:
On Wed, Mar 02, 2011 at 11:56:43PM +0100, Carl-Daniel Hailfinger wrote:
Signed-off-by: Sven Schnelle svens@stackframe.org
Thanks, committed as r1427 with a few changes as proposed below, and with more changes due to forward-porting to current flashrom trunk.
Thanks! I must admit that i actually forgot about that patch (but using it for about half a year now ;-)
+int linux_spi_send_command(unsigned int writecnt, unsigned int readcnt,
const unsigned char *txbuf, unsigned char *rxbuf)
+{
- struct spi_ioc_transfer msg[2] = {
{ .tx_buf = (unsigned long)txbuf, .len = writecnt },
{ .rx_buf = (unsigned long)rxbuf, .len = readcnt }
Really unsigned long casts for txbuf and rxbuf?
Required it seems, as otherwise:
linux_spi.c:111:4: error: initialization makes integer from pointer without a cast [-Werror] linux_spi.c:111:4: error: (near initialization for ‘msg[0].tx_buf’) [-Werror] etc.
This is due to .tx_buf/.rx_buf being defined as __u64 in linux/spi/spidev.h:
struct spi_ioc_transfer { __u64 tx_buf; __u64 rx_buf; ... }
I changed "unsigned long" to "uint64_t", though.
That breaks compilation on 32bit for me (AVR32 is 32bit):
linux_spi.c:110: warning: cast from pointer to integer of different size linux_spi.c:114: warning: cast from pointer to integer of different size
I've changed the code to:
Index: linux_spi.c =================================================================== --- linux_spi.c (revision 1427) +++ linux_spi.c (working copy) @@ -107,11 +107,11 @@ { struct spi_ioc_transfer msg[2] = { { - .tx_buf = (uint64_t)txbuf, + .tx_buf = (uint64_t)(ptrdiff_t)txbuf, .len = writecnt, }, { - .rx_buf = (uint64_t)rxbuf, + .rx_buf = (uint64_t)(ptrdiff_t)rxbuf, .len = readcnt, }, };
Sven, can you please check if trunk works for you, and/or fix it if I broke stuff? Also, do you plan to work on addressing the other TODOs? I guess I have some board where I can test this driver too, but it will take a while to setup etc.
I've did a short test with the patch above, and flashrom works fine on linux-2.6.38. Will respond to the other TODOs in a seperate Mail.
Sven.