]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/spi/spi-mt65xx.c
drm/msm: Fix range size vs end confusion
[mirror_ubuntu-jammy-kernel.git] / drivers / spi / spi-mt65xx.c
index a15de10ee286a9e4f7760295fc2420fd8b51c68c..2ca19b01948a2b51180e35aceb0ac302b1c5b59b 100644 (file)
 #define SPI_CFG1_PACKET_LOOP_OFFSET       8
 #define SPI_CFG1_PACKET_LENGTH_OFFSET     16
 #define SPI_CFG1_GET_TICK_DLY_OFFSET      29
+#define SPI_CFG1_GET_TICK_DLY_OFFSET_V1   30
 
 #define SPI_CFG1_GET_TICK_DLY_MASK        0xe0000000
+#define SPI_CFG1_GET_TICK_DLY_MASK_V1     0xc0000000
+
 #define SPI_CFG1_CS_IDLE_MASK             0xff
 #define SPI_CFG1_PACKET_LOOP_MASK         0xff00
 #define SPI_CFG1_PACKET_LENGTH_MASK       0x3ff0000
@@ -346,9 +349,15 @@ static int mtk_spi_prepare_message(struct spi_master *master,
 
        /* tick delay */
        reg_val = readl(mdata->base + SPI_CFG1_REG);
-       reg_val &= ~SPI_CFG1_GET_TICK_DLY_MASK;
-       reg_val |= ((chip_config->tick_delay & 0x7)
-               << SPI_CFG1_GET_TICK_DLY_OFFSET);
+       if (mdata->dev_comp->enhance_timing) {
+               reg_val &= ~SPI_CFG1_GET_TICK_DLY_MASK;
+               reg_val |= ((chip_config->tick_delay & 0x7)
+                           << SPI_CFG1_GET_TICK_DLY_OFFSET);
+       } else {
+               reg_val &= ~SPI_CFG1_GET_TICK_DLY_MASK_V1;
+               reg_val |= ((chip_config->tick_delay & 0x3)
+                           << SPI_CFG1_GET_TICK_DLY_OFFSET_V1);
+       }
        writel(reg_val, mdata->base + SPI_CFG1_REG);
 
        /* set hw cs timing */
@@ -624,7 +633,7 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
        else
                mdata->state = MTK_SPI_IDLE;
 
-       if (!master->can_dma(master, master->cur_msg->spi, trans)) {
+       if (!master->can_dma(master, NULL, trans)) {
                if (trans->rx_buf) {
                        cnt = mdata->xfer_len / 4;
                        ioread32_rep(mdata->base + SPI_RX_DATA_REG,