Commit 3531b717 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

spi: coldfire-qspi: Use core message handling



Convert to use default implementation of transfer_one_message().

Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 8bd31345
Loading
Loading
Loading
Loading
+34 −47
Original line number Original line Diff line number Diff line
@@ -298,16 +298,22 @@ static void mcfqspi_transfer_msg16(struct mcfqspi *mcfqspi, unsigned count,
	}
	}
}
}


static int mcfqspi_transfer_one_message(struct spi_master *master,
static void mcfqspi_set_cs(struct spi_device *spi, bool enable)
					 struct spi_message *msg)
{
{
	struct mcfqspi *mcfqspi = spi_master_get_devdata(master);
	struct mcfqspi *mcfqspi = spi_master_get_devdata(spi->master);
	struct spi_device *spi = msg->spi;
	struct spi_transfer *t;
	int status = 0;

	list_for_each_entry(t, &msg->transfers, transfer_list) {
	bool cs_high = spi->mode & SPI_CS_HIGH;
	bool cs_high = spi->mode & SPI_CS_HIGH;

	if (enable)
		mcfqspi_cs_select(mcfqspi, spi->chip_select, cs_high);
	else
		mcfqspi_cs_deselect(mcfqspi, spi->chip_select, cs_high);
}

static int mcfqspi_transfer_one(struct spi_master *master,
				struct spi_device *spi,
				struct spi_transfer *t)
{
	struct mcfqspi *mcfqspi = spi_master_get_devdata(master);
	u16 qmr = MCFQSPI_QMR_MSTR;
	u16 qmr = MCFQSPI_QMR_MSTR;


	qmr |= t->bits_per_word << 10;
	qmr |= t->bits_per_word << 10;
@@ -321,35 +327,15 @@ static int mcfqspi_transfer_one_message(struct spi_master *master,
		qmr |= mcfqspi_qmr_baud(spi->max_speed_hz);
		qmr |= mcfqspi_qmr_baud(spi->max_speed_hz);
	mcfqspi_wr_qmr(mcfqspi, qmr);
	mcfqspi_wr_qmr(mcfqspi, qmr);


		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 == 8)
	if (t->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
		mcfqspi_transfer_msg16(mcfqspi, t->len / 2, t->tx_buf,
		mcfqspi_transfer_msg16(mcfqspi, t->len / 2, t->tx_buf,
				       t->rx_buf);
				       t->rx_buf);
	mcfqspi_wr_qir(mcfqspi, 0);
	mcfqspi_wr_qir(mcfqspi, 0);


		if (t->delay_usecs)
	return 0;
			udelay(t->delay_usecs);
		if (t->cs_change) {
			if (!list_is_last(&t->transfer_list, &msg->transfers))
				mcfqspi_cs_deselect(mcfqspi, spi->chip_select,
						cs_high);
		} else {
			if (list_is_last(&t->transfer_list, &msg->transfers))
				mcfqspi_cs_deselect(mcfqspi, spi->chip_select,
						cs_high);
		}
		msg->actual_length += t->len;
	}
	msg->status = status;
	spi_finalize_current_message(master);

	return status;

}
}


static int mcfqspi_setup(struct spi_device *spi)
static int mcfqspi_setup(struct spi_device *spi)
@@ -438,7 +424,8 @@ static int mcfqspi_probe(struct platform_device *pdev)
	master->mode_bits = SPI_CS_HIGH | SPI_CPOL | SPI_CPHA;
	master->mode_bits = SPI_CS_HIGH | SPI_CPOL | SPI_CPHA;
	master->bits_per_word_mask = SPI_BPW_RANGE_MASK(8, 16);
	master->bits_per_word_mask = SPI_BPW_RANGE_MASK(8, 16);
	master->setup = mcfqspi_setup;
	master->setup = mcfqspi_setup;
	master->transfer_one_message = mcfqspi_transfer_one_message;
	master->set_cs = mcfqspi_set_cs;
	master->transfer_one = mcfqspi_transfer_one;
	master->auto_runtime_pm = true;
	master->auto_runtime_pm = true;


	platform_set_drvdata(pdev, master);
	platform_set_drvdata(pdev, master);