diff options
Diffstat (limited to 'drivers/spi/spi-fsl-dspi.c')
| -rw-r--r-- | drivers/spi/spi-fsl-dspi.c | 24 | 
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index 685afdf9e807..a35faced0456 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -250,13 +250,33 @@ struct fsl_dspi {  static void dspi_native_host_to_dev(struct fsl_dspi *dspi, u32 *txdata)  { -	memcpy(txdata, dspi->tx, dspi->oper_word_size); +	switch (dspi->oper_word_size) { +	case 1: +		*txdata = *(u8 *)dspi->tx; +		break; +	case 2: +		*txdata = *(u16 *)dspi->tx; +		break; +	case 4: +		*txdata = *(u32 *)dspi->tx; +		break; +	}  	dspi->tx += dspi->oper_word_size;  }  static void dspi_native_dev_to_host(struct fsl_dspi *dspi, u32 rxdata)  { -	memcpy(dspi->rx, &rxdata, dspi->oper_word_size); +	switch (dspi->oper_word_size) { +	case 1: +		*(u8 *)dspi->rx = rxdata; +		break; +	case 2: +		*(u16 *)dspi->rx = rxdata; +		break; +	case 4: +		*(u32 *)dspi->rx = rxdata; +		break; +	}  	dspi->rx += dspi->oper_word_size;  }  | 
