[U-Boot] [PATCH] Add code for spi half duplex operation for enc28j60
Jagan Teki
jagannadh.teki at gmail.com
Wed Jan 8 11:36:48 CET 2014
On Sat, Dec 21, 2013 at 12:40 AM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
> On Fri, Oct 4, 2013 at 4:43 PM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
>> Hi
>>
>> Seems like some issues with checkpatch.pl and use proper commit msg header.
>>
>> Please fix and use u-boot-spi.git repo with master-probe branch.
>> Please test the same on your hw and let me know for any issues.
>>
>>
>> On Tue, Aug 13, 2013 at 8:15 AM, Asok Subramanian <asok at vyassoft.com> wrote:
>>> Add code for spi half duplex operation for enc28j60
>>>
>>> The current code assumes full duplex spi operation. But there are
>>> processors like imx23 which
>>> only permit half duplex operation. This fix does half duplex operation based
>>> on the definition
>>> of CONFIG_SPI_HALF_DUPLEX
>>>
>>> Signed-off-by: Asok Subramanian <asok at vyassoft.com>
>>> ---
>>> drivers/net/enc28j60.c | 23 +++++++++++++++++++++++
>>> 1 file changed, 23 insertions(+)
>>>
>>> diff --git a/drivers/net/enc28j60.c b/drivers/net/enc28j60.c
>>> index ec33764..753fe26 100644
>>> --- a/drivers/net/enc28j60.c
>>> +++ b/drivers/net/enc28j60.c
>>> @@ -157,9 +157,17 @@ static u8 enc_r8(enc_dev_t *enc, const u16 reg)
>>>
>>> enc_set_bank(enc, reg);
>>> dout[0] = CMD_RCR(reg);
>>> +#ifndef CONFIG_SPI_HALF_DUPLEX
>>> spi_xfer(enc->slave, nbytes * 8, dout, din,
>>> SPI_XFER_BEGIN | SPI_XFER_END);
>>> return din[nbytes-1];
>>> +#else
>>> + spi_xfer(enc->slave, (nbytes -1) * 8, dout, NULL,
>>> + SPI_XFER_BEGIN );
>>> + spi_xfer(enc->slave, 8, NULL, din,
>>> + SPI_XFER_END );
>>> + return din[0];
>>> +#endif
>>> }
>>>
>>> /*
>>> @@ -175,6 +183,7 @@ static u16 enc_r16(enc_dev_t *enc, const u16 reg)
>>>
>>> enc_set_bank(enc, reg);
>>> dout[0] = CMD_RCR(reg);
>>> +#ifndef CONFIG_SPI_HALF_DUPLEX
>>> spi_xfer(enc->slave, nbytes * 8, dout, din,
>>> SPI_XFER_BEGIN | SPI_XFER_END);
>>> result = din[nbytes-1];
>>> @@ -183,6 +192,20 @@ static u16 enc_r16(enc_dev_t *enc, const u16 reg)
>>> SPI_XFER_BEGIN | SPI_XFER_END);
>>> result |= din[nbytes-1] << 8;
>>> return result;
>>> +#else
>>> + spi_xfer(enc->slave, (nbytes -1) * 8, dout, NULL,
>>> + SPI_XFER_BEGIN );
>>> + spi_xfer(enc->slave, 8, NULL, din,
>>> + SPI_XFER_END );
>>> + result = din[0];
>>> + dout[0]++; /* next register */
>>> + spi_xfer(enc->slave, (nbytes -1) * 8, dout, NULL,
>>> + SPI_XFER_BEGIN );
>>> + spi_xfer(enc->slave, 8, NULL, din,
>>> + SPI_XFER_END );
>>> + result |= din[0] << 8;
>>> + return result;
>>> +#endif
>>> }
>>>
>>> /*
>>> --
> Ping
Ping.!
--
Thanks,
Jagan.
More information about the U-Boot
mailing list