Skip to content

Commit 58b860e

Browse files
committed
Merge branch 'spi-5.1' into spi-linus
2 parents 37624b5 + 7e95b16 commit 58b860e

13 files changed

+243
-152
lines changed

drivers/spi/atmel-quadspi.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,8 @@ static int atmel_qspi_remove(struct platform_device *pdev)
570570

571571
static int __maybe_unused atmel_qspi_suspend(struct device *dev)
572572
{
573-
struct atmel_qspi *aq = dev_get_drvdata(dev);
573+
struct spi_controller *ctrl = dev_get_drvdata(dev);
574+
struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
574575

575576
clk_disable_unprepare(aq->qspick);
576577
clk_disable_unprepare(aq->pclk);
@@ -580,7 +581,8 @@ static int __maybe_unused atmel_qspi_suspend(struct device *dev)
580581

581582
static int __maybe_unused atmel_qspi_resume(struct device *dev)
582583
{
583-
struct atmel_qspi *aq = dev_get_drvdata(dev);
584+
struct spi_controller *ctrl = dev_get_drvdata(dev);
585+
struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
584586

585587
clk_prepare_enable(aq->pclk);
586588
clk_prepare_enable(aq->qspick);

drivers/spi/spi-fsl-lpspi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
#define CFGR1_PCSPOL BIT(8)
6363
#define CFGR1_NOSTALL BIT(3)
6464
#define CFGR1_MASTER BIT(0)
65-
#define FSR_RXCOUNT (BIT(16)|BIT(17)|BIT(18))
65+
#define FSR_TXCOUNT (0xFF)
6666
#define RSR_RXEMPTY BIT(1)
6767
#define TCR_CPOL BIT(31)
6868
#define TCR_CPHA BIT(30)
@@ -452,7 +452,7 @@ static irqreturn_t fsl_lpspi_isr(int irq, void *dev_id)
452452
}
453453

454454
if (temp_SR & SR_MBF ||
455-
readl(fsl_lpspi->base + IMX7ULP_FSR) & FSR_RXCOUNT) {
455+
readl(fsl_lpspi->base + IMX7ULP_FSR) & FSR_TXCOUNT) {
456456
writel(SR_FCF, fsl_lpspi->base + IMX7ULP_SR);
457457
fsl_lpspi_intctrl(fsl_lpspi, IER_FCIE);
458458
return IRQ_HANDLED;

drivers/spi/spi-gpio.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
* platform_device->driver_data ... points to spi_gpio
3636
*
3737
* spi->controller_state ... reserved for bitbang framework code
38-
* spi->controller_data ... holds chipselect GPIO
3938
*
4039
* spi->master->dev.driver_data ... points to spi_gpio->bitbang
4140
*/

drivers/spi/spi-imx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1494,7 +1494,7 @@ static int spi_imx_transfer(struct spi_device *spi,
14941494

14951495
/* flush rxfifo before transfer */
14961496
while (spi_imx->devtype_data->rx_available(spi_imx))
1497-
spi_imx->rx(spi_imx);
1497+
readl(spi_imx->base + MXC_CSPIRXDATA);
14981498

14991499
if (spi_imx->slave_mode)
15001500
return spi_imx_pio_transfer_slave(spi, transfer);

drivers/spi/spi-pic32.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ static int pic32_spi_one_transfer(struct spi_master *master,
559559
dev_err(&spi->dev, "wait error/timedout\n");
560560
if (dma_issued) {
561561
dmaengine_terminate_all(master->dma_rx);
562-
dmaengine_terminate_all(master->dma_rx);
562+
dmaengine_terminate_all(master->dma_tx);
563563
}
564564
ret = -ETIMEDOUT;
565565
} else {

drivers/spi/spi-pxa2xx.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -884,10 +884,14 @@ static unsigned int ssp_get_clk_div(struct driver_data *drv_data, int rate)
884884

885885
rate = min_t(int, ssp_clk, rate);
886886

887+
/*
888+
* Calculate the divisor for the SCR (Serial Clock Rate), avoiding
889+
* that the SSP transmission rate can be greater than the device rate
890+
*/
887891
if (ssp->type == PXA25x_SSP || ssp->type == CE4100_SSP)
888-
return (ssp_clk / (2 * rate) - 1) & 0xff;
892+
return (DIV_ROUND_UP(ssp_clk, 2 * rate) - 1) & 0xff;
889893
else
890-
return (ssp_clk / rate - 1) & 0xfff;
894+
return (DIV_ROUND_UP(ssp_clk, rate) - 1) & 0xfff;
891895
}
892896

893897
static unsigned int pxa2xx_ssp_get_clk_div(struct driver_data *drv_data,

drivers/spi/spi-rspi.c

Lines changed: 50 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,8 @@ static int rspi_set_config_register(struct rspi_data *rspi, int access_size)
271271
/* Sets parity, interrupt mask */
272272
rspi_write8(rspi, 0x00, RSPI_SPCR2);
273273

274-
/* Sets SPCMD */
274+
/* Resets sequencer */
275+
rspi_write8(rspi, 0, RSPI_SPSCR);
275276
rspi->spcmd |= SPCMD_SPB_8_TO_16(access_size);
276277
rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
277278

@@ -315,7 +316,8 @@ static int rspi_rz_set_config_register(struct rspi_data *rspi, int access_size)
315316
rspi_write8(rspi, 0x00, RSPI_SSLND);
316317
rspi_write8(rspi, 0x00, RSPI_SPND);
317318

318-
/* Sets SPCMD */
319+
/* Resets sequencer */
320+
rspi_write8(rspi, 0, RSPI_SPSCR);
319321
rspi->spcmd |= SPCMD_SPB_8_TO_16(access_size);
320322
rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
321323

@@ -366,7 +368,8 @@ static int qspi_set_config_register(struct rspi_data *rspi, int access_size)
366368
/* Sets buffer to allow normal operation */
367369
rspi_write8(rspi, 0x00, QSPI_SPBFCR);
368370

369-
/* Sets SPCMD */
371+
/* Resets sequencer */
372+
rspi_write8(rspi, 0, RSPI_SPSCR);
370373
rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
371374

372375
/* Sets RSPI mode */
@@ -736,27 +739,22 @@ static int qspi_trigger_transfer_out_in(struct rspi_data *rspi, const u8 *tx,
736739
while (len > 0) {
737740
n = qspi_set_send_trigger(rspi, len);
738741
qspi_set_receive_trigger(rspi, len);
739-
if (n == QSPI_BUFFER_SIZE) {
740-
ret = rspi_wait_for_tx_empty(rspi);
741-
if (ret < 0) {
742-
dev_err(&rspi->ctlr->dev, "transmit timeout\n");
743-
return ret;
744-
}
745-
for (i = 0; i < n; i++)
746-
rspi_write_data(rspi, *tx++);
742+
ret = rspi_wait_for_tx_empty(rspi);
743+
if (ret < 0) {
744+
dev_err(&rspi->ctlr->dev, "transmit timeout\n");
745+
return ret;
746+
}
747+
for (i = 0; i < n; i++)
748+
rspi_write_data(rspi, *tx++);
747749

748-
ret = rspi_wait_for_rx_full(rspi);
749-
if (ret < 0) {
750-
dev_err(&rspi->ctlr->dev, "receive timeout\n");
751-
return ret;
752-
}
753-
for (i = 0; i < n; i++)
754-
*rx++ = rspi_read_data(rspi);
755-
} else {
756-
ret = rspi_pio_transfer(rspi, tx, rx, n);
757-
if (ret < 0)
758-
return ret;
750+
ret = rspi_wait_for_rx_full(rspi);
751+
if (ret < 0) {
752+
dev_err(&rspi->ctlr->dev, "receive timeout\n");
753+
return ret;
759754
}
755+
for (i = 0; i < n; i++)
756+
*rx++ = rspi_read_data(rspi);
757+
760758
len -= n;
761759
}
762760

@@ -793,19 +791,14 @@ static int qspi_transfer_out(struct rspi_data *rspi, struct spi_transfer *xfer)
793791

794792
while (n > 0) {
795793
len = qspi_set_send_trigger(rspi, n);
796-
if (len == QSPI_BUFFER_SIZE) {
797-
ret = rspi_wait_for_tx_empty(rspi);
798-
if (ret < 0) {
799-
dev_err(&rspi->ctlr->dev, "transmit timeout\n");
800-
return ret;
801-
}
802-
for (i = 0; i < len; i++)
803-
rspi_write_data(rspi, *tx++);
804-
} else {
805-
ret = rspi_pio_transfer(rspi, tx, NULL, len);
806-
if (ret < 0)
807-
return ret;
794+
ret = rspi_wait_for_tx_empty(rspi);
795+
if (ret < 0) {
796+
dev_err(&rspi->ctlr->dev, "transmit timeout\n");
797+
return ret;
808798
}
799+
for (i = 0; i < len; i++)
800+
rspi_write_data(rspi, *tx++);
801+
809802
n -= len;
810803
}
811804

@@ -830,19 +823,14 @@ static int qspi_transfer_in(struct rspi_data *rspi, struct spi_transfer *xfer)
830823

831824
while (n > 0) {
832825
len = qspi_set_receive_trigger(rspi, n);
833-
if (len == QSPI_BUFFER_SIZE) {
834-
ret = rspi_wait_for_rx_full(rspi);
835-
if (ret < 0) {
836-
dev_err(&rspi->ctlr->dev, "receive timeout\n");
837-
return ret;
838-
}
839-
for (i = 0; i < len; i++)
840-
*rx++ = rspi_read_data(rspi);
841-
} else {
842-
ret = rspi_pio_transfer(rspi, NULL, rx, len);
843-
if (ret < 0)
844-
return ret;
826+
ret = rspi_wait_for_rx_full(rspi);
827+
if (ret < 0) {
828+
dev_err(&rspi->ctlr->dev, "receive timeout\n");
829+
return ret;
845830
}
831+
for (i = 0; i < len; i++)
832+
*rx++ = rspi_read_data(rspi);
833+
846834
n -= len;
847835
}
848836

@@ -868,28 +856,6 @@ static int qspi_transfer_one(struct spi_controller *ctlr,
868856
}
869857
}
870858

871-
static int rspi_setup(struct spi_device *spi)
872-
{
873-
struct rspi_data *rspi = spi_controller_get_devdata(spi->controller);
874-
875-
rspi->max_speed_hz = spi->max_speed_hz;
876-
877-
rspi->spcmd = SPCMD_SSLKP;
878-
if (spi->mode & SPI_CPOL)
879-
rspi->spcmd |= SPCMD_CPOL;
880-
if (spi->mode & SPI_CPHA)
881-
rspi->spcmd |= SPCMD_CPHA;
882-
883-
/* CMOS output mode and MOSI signal from previous transfer */
884-
rspi->sppcr = 0;
885-
if (spi->mode & SPI_LOOP)
886-
rspi->sppcr |= SPPCR_SPLP;
887-
888-
set_config_register(rspi, 8);
889-
890-
return 0;
891-
}
892-
893859
static u16 qspi_transfer_mode(const struct spi_transfer *xfer)
894860
{
895861
if (xfer->tx_buf)
@@ -959,8 +925,24 @@ static int rspi_prepare_message(struct spi_controller *ctlr,
959925
struct spi_message *msg)
960926
{
961927
struct rspi_data *rspi = spi_controller_get_devdata(ctlr);
928+
struct spi_device *spi = msg->spi;
962929
int ret;
963930

931+
rspi->max_speed_hz = spi->max_speed_hz;
932+
933+
rspi->spcmd = SPCMD_SSLKP;
934+
if (spi->mode & SPI_CPOL)
935+
rspi->spcmd |= SPCMD_CPOL;
936+
if (spi->mode & SPI_CPHA)
937+
rspi->spcmd |= SPCMD_CPHA;
938+
939+
/* CMOS output mode and MOSI signal from previous transfer */
940+
rspi->sppcr = 0;
941+
if (spi->mode & SPI_LOOP)
942+
rspi->sppcr |= SPPCR_SPLP;
943+
944+
set_config_register(rspi, 8);
945+
964946
if (msg->spi->mode &
965947
(SPI_TX_DUAL | SPI_TX_QUAD | SPI_RX_DUAL | SPI_RX_QUAD)) {
966948
/* Setup sequencer for messages with multiple transfer modes */
@@ -1267,7 +1249,6 @@ static int rspi_probe(struct platform_device *pdev)
12671249
init_waitqueue_head(&rspi->wait);
12681250

12691251
ctlr->bus_num = pdev->id;
1270-
ctlr->setup = rspi_setup;
12711252
ctlr->auto_runtime_pm = true;
12721253
ctlr->transfer_one = ops->transfer_one;
12731254
ctlr->prepare_message = rspi_prepare_message;

drivers/spi/spi-stm32-qspi.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@
7676
#define QSPI_PSMAR 0x28
7777
#define QSPI_PIR 0x2c
7878
#define QSPI_LPTR 0x30
79-
#define LPTR_DFT_TIMEOUT 0x10
8079

8180
#define STM32_QSPI_MAX_MMAP_SZ SZ_256M
8281
#define STM32_QSPI_MAX_NORCHIP 2
@@ -372,8 +371,7 @@ static int stm32_qspi_setup(struct spi_device *spi)
372371
flash->presc = presc;
373372

374373
mutex_lock(&qspi->lock);
375-
writel_relaxed(LPTR_DFT_TIMEOUT, qspi->io_base + QSPI_LPTR);
376-
cr = FIELD_PREP(CR_FTHRES_MASK, 3) | CR_TCEN | CR_SSHIFT | CR_EN;
374+
cr = FIELD_PREP(CR_FTHRES_MASK, 3) | CR_SSHIFT | CR_EN;
377375
writel_relaxed(cr, qspi->io_base + QSPI_CR);
378376

379377
/* set dcr fsize to max address */

drivers/spi/spi-stm32.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1839,8 +1839,9 @@ static int stm32_spi_probe(struct platform_device *pdev)
18391839

18401840
spi->irq = platform_get_irq(pdev, 0);
18411841
if (spi->irq <= 0) {
1842-
dev_err(&pdev->dev, "no irq: %d\n", spi->irq);
1843-
ret = -ENOENT;
1842+
ret = spi->irq;
1843+
if (ret != -EPROBE_DEFER)
1844+
dev_err(&pdev->dev, "failed to get irq: %d\n", ret);
18441845
goto err_master_put;
18451846
}
18461847
ret = devm_request_threaded_irq(&pdev->dev, spi->irq,

0 commit comments

Comments
 (0)