Re: [PATCH v2 2/2] spi: fsl-spi: Implement trailing bits

From: Christophe Leroy
Date: Thu Aug 18 2022 - 14:35:48 EST




Le 28/02/2022 à 17:14, Mark Brown a écrit :
>
>> We discussed that back in 2016 in
>> https://lore.kernel.org/linux-spi/20160824112701.GE22076@xxxxxxxxxxxxx/
>> and my understanding at that time was that it was not something that
>> could be done at core level.
>
>> But maybe things have changed since then ?
>
> What I said then was "it would need a new core feature" which is what
> the binding does, I'm suggesting that you also do that for the handling
> of the implementation as well.
>
> Actually now I think about it perhaps this shouldn't be a binding at all
> but rather something specified by the client driver - presumably any
> system using an affected device is going to need these extra clock
> cycles so they'll all need to add the same property.

Yes indeed. Therefore in v3 I took a different approach : a flag .cs_off
tells to spi_transfer_one_message() that a given transfer has to be
performed with chipselect OFF, therefore the consumer has full control
of how and when to add those additional fake clock cycles during a
transfer, and can eventually add one at anyplace during the transfer.

Here an exemple of what will do the consumer.


static int idt821034_8bit_write(struct idt821034 *idt821034, u8 val)
{
struct spi_transfer xfer[] = {{
.tx_buf = &idt821034->spi_tx_buf,
.len = 1,
},{
.tx_buf = &idt821034->spi_tx_buf,
.len = 1,
.cs_off = 1,
}};
int ret;

idt821034->spi_tx_buf = val;

ret = spi_sync_transfer(idt821034->spi, xfer, ARRAY_SIZE(xfer));
if (ret)
return ret;

return 0;
}



Christophe