Source
469
469
{
470
470
u32 cr0 = CR0_FRF_SPI << CR0_FRF_OFFSET
471
471
| CR0_BHT_8BIT << CR0_BHT_OFFSET
472
472
| CR0_SSD_ONE << CR0_SSD_OFFSET
473
473
| CR0_EM_BIG << CR0_EM_OFFSET;
474
474
u32 cr1;
475
475
u32 dmacr = 0;
476
476
477
477
cr0 |= rs->rsd << CR0_RSD_OFFSET;
478
478
cr0 |= (spi->mode & 0x3U) << CR0_SCPH_OFFSET;
479
+
if (spi->mode & SPI_LSB_FIRST)
480
+
cr0 |= CR0_FBM_LSB << CR0_FBM_OFFSET;
479
481
480
482
if (xfer->rx_buf && xfer->tx_buf)
481
483
cr0 |= CR0_XFM_TR << CR0_XFM_OFFSET;
482
484
else if (xfer->rx_buf)
483
485
cr0 |= CR0_XFM_RO << CR0_XFM_OFFSET;
484
486
else if (use_dma)
485
487
cr0 |= CR0_XFM_TO << CR0_XFM_OFFSET;
486
488
487
489
switch (xfer->bits_per_word) {
488
490
case 4:
674
676
dev_err(&pdev->dev, "Failed to get fifo length\n");
675
677
ret = -EINVAL;
676
678
goto err_disable_spiclk;
677
679
}
678
680
679
681
pm_runtime_set_active(&pdev->dev);
680
682
pm_runtime_enable(&pdev->dev);
681
683
682
684
master->auto_runtime_pm = true;
683
685
master->bus_num = pdev->id;
684
-
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LOOP;
686
+
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LOOP | SPI_LSB_FIRST;
685
687
master->num_chipselect = ROCKCHIP_SPI_MAX_CS_NUM;
686
688
master->dev.of_node = pdev->dev.of_node;
687
689
master->bits_per_word_mask = SPI_BPW_MASK(16) | SPI_BPW_MASK(8) | SPI_BPW_MASK(4);
688
690
master->min_speed_hz = rs->freq / BAUDR_SCKDV_MAX;
689
691
master->max_speed_hz = min(rs->freq / BAUDR_SCKDV_MIN, MAX_SCLK_OUT);
690
692
691
693
master->set_cs = rockchip_spi_set_cs;
692
694
master->transfer_one = rockchip_spi_transfer_one;
693
695
master->max_transfer_size = rockchip_spi_max_transfer_size;
694
696
master->handle_err = rockchip_spi_handle_err;