Commit 766ed704 authored by Laxman Dewangan's avatar Laxman Dewangan Committed by Grant Likely

spi: remove check for bits_per_word on transfer from low level driver

The spi core make sure that each transfer structure have the proper
setting for bits_per_word before calling low level transfer APIs.

Hence it is no more require to check again in low level driver for
this field whether this is set correct or not. Removing such code
from low level driver.

The txx9 change also removes a test for bits_per_word set to 0, and
forcing it to 8 in that case. This can also be removed now since
spi_setup() ensures spi->bits_per_word is not zero.

	if (!spi->bits_per_word)
		spi->bits_per_word = 8;
Signed-off-by: default avatarLaxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent bb29785e
...@@ -134,7 +134,7 @@ static int altera_spi_txrx(struct spi_device *spi, struct spi_transfer *t) ...@@ -134,7 +134,7 @@ static int altera_spi_txrx(struct spi_device *spi, struct spi_transfer *t)
hw->tx = t->tx_buf; hw->tx = t->tx_buf;
hw->rx = t->rx_buf; hw->rx = t->rx_buf;
hw->count = 0; hw->count = 0;
hw->bytes_per_word = (t->bits_per_word ? : spi->bits_per_word) / 8; hw->bytes_per_word = t->bits_per_word / 8;
hw->len = t->len / hw->bytes_per_word; hw->len = t->len / hw->bytes_per_word;
if (hw->irq >= 0) { if (hw->irq >= 0) {
......
...@@ -416,8 +416,7 @@ bfin_sport_spi_pump_transfers(unsigned long data) ...@@ -416,8 +416,7 @@ bfin_sport_spi_pump_transfers(unsigned long data)
drv_data->cs_change = transfer->cs_change; drv_data->cs_change = transfer->cs_change;
/* Bits per word setup */ /* Bits per word setup */
bits_per_word = transfer->bits_per_word ? : bits_per_word = transfer->bits_per_word;
message->spi->bits_per_word ? : 8;
if (bits_per_word % 16 == 0) if (bits_per_word % 16 == 0)
drv_data->ops = &bfin_sport_transfer_ops_u16; drv_data->ops = &bfin_sport_transfer_ops_u16;
else else
......
...@@ -642,8 +642,7 @@ static void bfin_spi_pump_transfers(unsigned long data) ...@@ -642,8 +642,7 @@ static void bfin_spi_pump_transfers(unsigned long data)
drv_data->cs_change = transfer->cs_change; drv_data->cs_change = transfer->cs_change;
/* Bits per word setup */ /* Bits per word setup */
bits_per_word = transfer->bits_per_word ? : bits_per_word = transfer->bits_per_word;
message->spi->bits_per_word ? : 8;
if (bits_per_word % 16 == 0) { if (bits_per_word % 16 == 0) {
drv_data->n_bytes = bits_per_word/8; drv_data->n_bytes = bits_per_word/8;
drv_data->len = (transfer->len) >> 1; drv_data->len = (transfer->len) >> 1;
......
...@@ -69,7 +69,7 @@ static unsigned bitbang_txrx_8( ...@@ -69,7 +69,7 @@ static unsigned bitbang_txrx_8(
unsigned ns, unsigned ns,
struct spi_transfer *t struct spi_transfer *t
) { ) {
unsigned bits = t->bits_per_word ? : spi->bits_per_word; unsigned bits = t->bits_per_word;
unsigned count = t->len; unsigned count = t->len;
const u8 *tx = t->tx_buf; const u8 *tx = t->tx_buf;
u8 *rx = t->rx_buf; u8 *rx = t->rx_buf;
...@@ -95,7 +95,7 @@ static unsigned bitbang_txrx_16( ...@@ -95,7 +95,7 @@ static unsigned bitbang_txrx_16(
unsigned ns, unsigned ns,
struct spi_transfer *t struct spi_transfer *t
) { ) {
unsigned bits = t->bits_per_word ? : spi->bits_per_word; unsigned bits = t->bits_per_word;
unsigned count = t->len; unsigned count = t->len;
const u16 *tx = t->tx_buf; const u16 *tx = t->tx_buf;
u16 *rx = t->rx_buf; u16 *rx = t->rx_buf;
...@@ -121,7 +121,7 @@ static unsigned bitbang_txrx_32( ...@@ -121,7 +121,7 @@ static unsigned bitbang_txrx_32(
unsigned ns, unsigned ns,
struct spi_transfer *t struct spi_transfer *t
) { ) {
unsigned bits = t->bits_per_word ? : spi->bits_per_word; unsigned bits = t->bits_per_word;
unsigned count = t->len; unsigned count = t->len;
const u32 *tx = t->tx_buf; const u32 *tx = t->tx_buf;
u32 *rx = t->rx_buf; u32 *rx = t->rx_buf;
......
...@@ -68,7 +68,7 @@ static int spi_clps711x_setup_xfer(struct spi_device *spi, ...@@ -68,7 +68,7 @@ static int spi_clps711x_setup_xfer(struct spi_device *spi,
struct spi_transfer *xfer) struct spi_transfer *xfer)
{ {
u32 speed = xfer->speed_hz ? : spi->max_speed_hz; u32 speed = xfer->speed_hz ? : spi->max_speed_hz;
u8 bpw = xfer->bits_per_word ? : spi->bits_per_word; u8 bpw = xfer->bits_per_word;
struct spi_clps711x_data *hw = spi_master_get_devdata(spi->master); struct spi_clps711x_data *hw = spi_master_get_devdata(spi->master);
if (bpw != 8) { if (bpw != 8) {
......
...@@ -329,8 +329,7 @@ static int mcfqspi_transfer_one_message(struct spi_master *master, ...@@ -329,8 +329,7 @@ static int mcfqspi_transfer_one_message(struct spi_master *master,
mcfqspi_cs_select(mcfqspi, spi->chip_select, cs_high); mcfqspi_cs_select(mcfqspi, spi->chip_select, cs_high);
mcfqspi_wr_qir(mcfqspi, MCFQSPI_QIR_SPIFE); mcfqspi_wr_qir(mcfqspi, MCFQSPI_QIR_SPIFE);
if ((t->bits_per_word ? t->bits_per_word : if (t->bits_per_word == 8)
spi->bits_per_word) == 8)
mcfqspi_transfer_msg8(mcfqspi, t->len, t->tx_buf, mcfqspi_transfer_msg8(mcfqspi, t->len, t->tx_buf,
t->rx_buf); t->rx_buf);
else else
......
...@@ -446,7 +446,7 @@ static inline int bits_per_word(const struct ep93xx_spi *espi) ...@@ -446,7 +446,7 @@ static inline int bits_per_word(const struct ep93xx_spi *espi)
struct spi_message *msg = espi->current_msg; struct spi_message *msg = espi->current_msg;
struct spi_transfer *t = msg->state; struct spi_transfer *t = msg->state;
return t->bits_per_word ? t->bits_per_word : msg->spi->bits_per_word; return t->bits_per_word;
} }
static void ep93xx_do_write(struct ep93xx_spi *espi, struct spi_transfer *t) static void ep93xx_do_write(struct ep93xx_spi *espi, struct spi_transfer *t)
......
...@@ -697,7 +697,7 @@ static int s3c64xx_spi_transfer_one_message(struct spi_master *master, ...@@ -697,7 +697,7 @@ static int s3c64xx_spi_transfer_one_message(struct spi_master *master,
INIT_COMPLETION(sdd->xfer_completion); INIT_COMPLETION(sdd->xfer_completion);
/* Only BPW and Speed may change across transfers */ /* Only BPW and Speed may change across transfers */
bpw = xfer->bits_per_word ? : spi->bits_per_word; bpw = xfer->bits_per_word;
speed = xfer->speed_hz ? : spi->max_speed_hz; speed = xfer->speed_hz ? : spi->max_speed_hz;
if (xfer->len % (bpw / 8)) { if (xfer->len % (bpw / 8)) {
......
...@@ -382,8 +382,7 @@ spi_sirfsoc_setup_transfer(struct spi_device *spi, struct spi_transfer *t) ...@@ -382,8 +382,7 @@ spi_sirfsoc_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
sspi = spi_master_get_devdata(spi->master); sspi = spi_master_get_devdata(spi->master);
bits_per_word = t && t->bits_per_word ? t->bits_per_word : bits_per_word = (t) ? t->bits_per_word : spi->bits_per_word;
spi->bits_per_word;
hz = t && t->speed_hz ? t->speed_hz : spi->max_speed_hz; hz = t && t->speed_hz ? t->speed_hz : spi->max_speed_hz;
/* Enable IO mode for RX, TX */ /* Enable IO mode for RX, TX */
......
...@@ -284,8 +284,7 @@ static unsigned tegra_slink_calculate_curr_xfer_param( ...@@ -284,8 +284,7 @@ static unsigned tegra_slink_calculate_curr_xfer_param(
unsigned max_len; unsigned max_len;
unsigned total_fifo_words; unsigned total_fifo_words;
bits_per_word = t->bits_per_word ? t->bits_per_word : bits_per_word = t->bits_per_word;
spi->bits_per_word;
tspi->bytes_per_word = (bits_per_word - 1) / 8 + 1; tspi->bytes_per_word = (bits_per_word - 1) / 8 + 1;
if (bits_per_word == 8 || bits_per_word == 16) { if (bits_per_word == 8 || bits_per_word == 16) {
...@@ -378,8 +377,7 @@ static unsigned int tegra_slink_read_rx_fifo_to_client_rxbuf( ...@@ -378,8 +377,7 @@ static unsigned int tegra_slink_read_rx_fifo_to_client_rxbuf(
} else { } else {
unsigned int bits_per_word; unsigned int bits_per_word;
bits_per_word = t->bits_per_word ? t->bits_per_word : bits_per_word = t->bits_per_word;
tspi->cur_spi->bits_per_word;
for (count = 0; count < rx_full_count; count++) { for (count = 0; count < rx_full_count; count++) {
x = tegra_slink_readl(tspi, SLINK_RX_FIFO); x = tegra_slink_readl(tspi, SLINK_RX_FIFO);
for (i = 0; (i < tspi->bytes_per_word); i++) for (i = 0; (i < tspi->bytes_per_word); i++)
...@@ -444,8 +442,7 @@ static void tegra_slink_copy_spi_rxbuf_to_client_rxbuf( ...@@ -444,8 +442,7 @@ static void tegra_slink_copy_spi_rxbuf_to_client_rxbuf(
unsigned int x; unsigned int x;
unsigned int rx_mask, bits_per_word; unsigned int rx_mask, bits_per_word;
bits_per_word = t->bits_per_word ? t->bits_per_word : bits_per_word = t->bits_per_word;
tspi->cur_spi->bits_per_word;
rx_mask = (1 << bits_per_word) - 1; rx_mask = (1 << bits_per_word) - 1;
for (count = 0; count < tspi->curr_dma_words; count++) { for (count = 0; count < tspi->curr_dma_words; count++) {
x = tspi->rx_dma_buf[count]; x = tspi->rx_dma_buf[count];
......
...@@ -189,9 +189,8 @@ static void txx9spi_work_one(struct txx9spi *c, struct spi_message *m) ...@@ -189,9 +189,8 @@ static void txx9spi_work_one(struct txx9spi *c, struct spi_message *m)
unsigned int len = t->len; unsigned int len = t->len;
unsigned int wsize; unsigned int wsize;
u32 speed_hz = t->speed_hz ? : spi->max_speed_hz; u32 speed_hz = t->speed_hz ? : spi->max_speed_hz;
u8 bits_per_word = t->bits_per_word ? : spi->bits_per_word; u8 bits_per_word = t->bits_per_word;
bits_per_word = bits_per_word ? : 8;
wsize = bits_per_word >> 3; /* in bytes */ wsize = bits_per_word >> 3; /* in bytes */
if (prev_speed_hz != speed_hz if (prev_speed_hz != speed_hz
...@@ -316,9 +315,8 @@ static int txx9spi_transfer(struct spi_device *spi, struct spi_message *m) ...@@ -316,9 +315,8 @@ static int txx9spi_transfer(struct spi_device *spi, struct spi_message *m)
/* check each transfer's parameters */ /* check each transfer's parameters */
list_for_each_entry (t, &m->transfers, transfer_list) { list_for_each_entry (t, &m->transfers, transfer_list) {
u32 speed_hz = t->speed_hz ? : spi->max_speed_hz; u32 speed_hz = t->speed_hz ? : spi->max_speed_hz;
u8 bits_per_word = t->bits_per_word ? : spi->bits_per_word; u8 bits_per_word = t->bits_per_word;
bits_per_word = bits_per_word ? : 8;
if (!t->tx_buf && !t->rx_buf && t->len) if (!t->tx_buf && !t->rx_buf && t->len)
return -EINVAL; return -EINVAL;
if (bits_per_word != 8 && bits_per_word != 16) if (bits_per_word != 8 && bits_per_word != 16)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment