The MRST dw_spi in Transmit & receive mode running on kernel 2.6.35,
stepping A3, is unable to receive data properly.
The slave is sending the data as expected, but the spi controller is not
reading it properly.
If i insert the messages or the delay equivalent as shown below it works.
Any clue ?
static int u8_writer(struct dw_spi *dws)
{
if (!(dw_readw(dws, sr) & SR_TF_NOT_FULL)
|| (dws->tx == dws->tx_end))
return 0;
dw_writew(dws, dr, *(u8 *)(dws->tx));
// printk("dw write %x ",*(u8 *)(dws->tx));
udelay(50);
++dws->tx;
wait_till_not_busy(dws);
return 1;
}
static int u8_reader(struct dw_spi *dws)
{//printk("dw spi %s ",__func__);
while ((dw_readw(dws, sr) & SR_RF_NOT_EMPT)
&& (dws->rx < dws->rx_end)) {
*(u8 *)(dws->rx) = dw_readw(dws, dr);
// printk("dw read %x ",*(u8 *)(dws->rx));
udelay(50);
++dws->rx;
}
wait_till_not_busy(dws);
return dws->rx == dws->rx_end;
}
------------------------------------------------------------------------------
vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery,
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now.
http://p.sf.net/sfu/quest-d2dcopy1
_______________________________________________
spi-devel-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spi-devel-general