Hi Rajeshwari,
On Thu, Oct 10, 2013 at 4:11 PM, Rajeshwari S Shinde
<[email protected]> wrote:
> This patch enables word transfer for s3c64xx spi driver.
> User can set bits_per_word to 32 before calling spi_setup,
> which would enable the word transfer mode.
>
> Signed-off-by: Rajeshwari S Shinde <[email protected]>
> ---
> Chnages in V2:
> - Reduced the call for s3c64xx_spi_config
> drivers/spi/spi-s3c64xx.c | 24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
> index 512b889..d1b0a2b 100644
> --- a/drivers/spi/spi-s3c64xx.c
> +++ b/drivers/spi/spi-s3c64xx.c
> @@ -498,6 +498,17 @@ static void enable_datapath(struct
> s3c64xx_spi_driver_data *sdd,
> chcfg = readl(regs + S3C64XX_SPI_CH_CFG);
> chcfg &= ~S3C64XX_SPI_CH_TXCH_ON;
>
> + if(sdd->cur_bpw == 32) {
> + /* For word transfer we need to swap bytes */
> + u32 swapcfg = (S3C64XX_SPI_SWAP_TX_EN |
> S3C64XX_SPI_SWAP_TX_BYTE |
> + S3C64XX_SPI_SWAP_TX_HALF_WORD |
> + S3C64XX_SPI_SWAP_RX_EN |
> + S3C64XX_SPI_SWAP_RX_BYTE |
> + S3C64XX_SPI_SWAP_RX_HALF_WORD);
> + writel(swapcfg, regs + S3C64XX_SPI_SWAP_CFG);
In s3c64xx_spi_probe() function
sdd->cur_bpw is hard coded to 8
is there any provision somehow to configure cur_bpw to 32 ?
wouldn't 16 bits per word transfers also need swapping?
Best Wishes,
Leela Krishna.
> + } else
> + writel(0, regs + S3C64XX_SPI_SWAP_CFG);
> +
> if (dma_mode) {
> chcfg &= ~S3C64XX_SPI_CH_RXCH_ON;
> } else {
> @@ -905,13 +916,12 @@ static int s3c64xx_spi_transfer_one_message(struct
> spi_master *master,
> bpw = xfer->bits_per_word;
> speed = xfer->speed_hz ? : spi->max_speed_hz;
>
> - if (xfer->len % (bpw / 8)) {
> - dev_err(&spi->dev,
> - "Xfer length(%u) not a multiple of word
> size(%u)\n",
> - xfer->len, bpw / 8);
> - status = -EIO;
> - goto out;
> - }
> + /*
> + * Enable byte tranfer if transfer length not a multiple of
> + * word size
> + */
> + if (xfer->len % (bpw / 8))
> + bpw = 8;
>
> if (bpw != sdd->cur_bpw || speed != sdd->cur_speed) {
> sdd->cur_bpw = bpw;
> --
> 1.7.12.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc"
> in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html