Merge tag 'xfs-5.19-for-linus' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[linux-2.6-microblaze.git] / drivers / spi / spi-mt65xx.c
index b147255..0a3b9f7 100644 (file)
 #include <linux/spi/spi-mem.h>
 #include <linux/dma-mapping.h>
 
-#define SPI_CFG0_REG                      0x0000
-#define SPI_CFG1_REG                      0x0004
-#define SPI_TX_SRC_REG                    0x0008
-#define SPI_RX_DST_REG                    0x000c
-#define SPI_TX_DATA_REG                   0x0010
-#define SPI_RX_DATA_REG                   0x0014
-#define SPI_CMD_REG                       0x0018
-#define SPI_STATUS0_REG                   0x001c
-#define SPI_PAD_SEL_REG                   0x0024
-#define SPI_CFG2_REG                      0x0028
-#define SPI_TX_SRC_REG_64                 0x002c
-#define SPI_RX_DST_REG_64                 0x0030
-#define SPI_CFG3_IPM_REG                  0x0040
-
-#define SPI_CFG0_SCK_HIGH_OFFSET          0
-#define SPI_CFG0_SCK_LOW_OFFSET           8
-#define SPI_CFG0_CS_HOLD_OFFSET           16
-#define SPI_CFG0_CS_SETUP_OFFSET          24
-#define SPI_ADJUST_CFG0_CS_HOLD_OFFSET    0
-#define SPI_ADJUST_CFG0_CS_SETUP_OFFSET   16
-
-#define SPI_CFG1_CS_IDLE_OFFSET           0
-#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
-#define SPI_CFG1_IPM_PACKET_LENGTH_MASK   GENMASK(31, 16)
-#define SPI_CFG2_SCK_HIGH_OFFSET          0
-#define SPI_CFG2_SCK_LOW_OFFSET           16
-
-#define SPI_CMD_ACT                  BIT(0)
-#define SPI_CMD_RESUME               BIT(1)
-#define SPI_CMD_RST                  BIT(2)
-#define SPI_CMD_PAUSE_EN             BIT(4)
-#define SPI_CMD_DEASSERT             BIT(5)
-#define SPI_CMD_SAMPLE_SEL           BIT(6)
-#define SPI_CMD_CS_POL               BIT(7)
-#define SPI_CMD_CPHA                 BIT(8)
-#define SPI_CMD_CPOL                 BIT(9)
-#define SPI_CMD_RX_DMA               BIT(10)
-#define SPI_CMD_TX_DMA               BIT(11)
-#define SPI_CMD_TXMSBF               BIT(12)
-#define SPI_CMD_RXMSBF               BIT(13)
-#define SPI_CMD_RX_ENDIAN            BIT(14)
-#define SPI_CMD_TX_ENDIAN            BIT(15)
-#define SPI_CMD_FINISH_IE            BIT(16)
-#define SPI_CMD_PAUSE_IE             BIT(17)
-#define SPI_CMD_IPM_NONIDLE_MODE     BIT(19)
-#define SPI_CMD_IPM_SPIM_LOOP        BIT(21)
-#define SPI_CMD_IPM_GET_TICKDLY_OFFSET    22
+#define SPI_CFG0_REG                   0x0000
+#define SPI_CFG1_REG                   0x0004
+#define SPI_TX_SRC_REG                 0x0008
+#define SPI_RX_DST_REG                 0x000c
+#define SPI_TX_DATA_REG                        0x0010
+#define SPI_RX_DATA_REG                        0x0014
+#define SPI_CMD_REG                    0x0018
+#define SPI_STATUS0_REG                        0x001c
+#define SPI_PAD_SEL_REG                        0x0024
+#define SPI_CFG2_REG                   0x0028
+#define SPI_TX_SRC_REG_64              0x002c
+#define SPI_RX_DST_REG_64              0x0030
+#define SPI_CFG3_IPM_REG               0x0040
+
+#define SPI_CFG0_SCK_HIGH_OFFSET       0
+#define SPI_CFG0_SCK_LOW_OFFSET                8
+#define SPI_CFG0_CS_HOLD_OFFSET                16
+#define SPI_CFG0_CS_SETUP_OFFSET       24
+#define SPI_ADJUST_CFG0_CS_HOLD_OFFSET 0
+#define SPI_ADJUST_CFG0_CS_SETUP_OFFSET        16
+
+#define SPI_CFG1_CS_IDLE_OFFSET                0
+#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
+#define SPI_CFG1_IPM_PACKET_LENGTH_MASK        GENMASK(31, 16)
+#define SPI_CFG2_SCK_HIGH_OFFSET       0
+#define SPI_CFG2_SCK_LOW_OFFSET                16
+
+#define SPI_CMD_ACT                    BIT(0)
+#define SPI_CMD_RESUME                 BIT(1)
+#define SPI_CMD_RST                    BIT(2)
+#define SPI_CMD_PAUSE_EN               BIT(4)
+#define SPI_CMD_DEASSERT               BIT(5)
+#define SPI_CMD_SAMPLE_SEL             BIT(6)
+#define SPI_CMD_CS_POL                 BIT(7)
+#define SPI_CMD_CPHA                   BIT(8)
+#define SPI_CMD_CPOL                   BIT(9)
+#define SPI_CMD_RX_DMA                 BIT(10)
+#define SPI_CMD_TX_DMA                 BIT(11)
+#define SPI_CMD_TXMSBF                 BIT(12)
+#define SPI_CMD_RXMSBF                 BIT(13)
+#define SPI_CMD_RX_ENDIAN              BIT(14)
+#define SPI_CMD_TX_ENDIAN              BIT(15)
+#define SPI_CMD_FINISH_IE              BIT(16)
+#define SPI_CMD_PAUSE_IE               BIT(17)
+#define SPI_CMD_IPM_NONIDLE_MODE       BIT(19)
+#define SPI_CMD_IPM_SPIM_LOOP          BIT(21)
+#define SPI_CMD_IPM_GET_TICKDLY_OFFSET 22
 
 #define SPI_CMD_IPM_GET_TICKDLY_MASK   GENMASK(24, 22)
 
 #define PIN_MODE_CFG(x)        ((x) / 2)
 
-#define SPI_CFG3_IPM_HALF_DUPLEX_DIR           BIT(2)
-#define SPI_CFG3_IPM_HALF_DUPLEX_EN            BIT(3)
-#define SPI_CFG3_IPM_XMODE_EN                  BIT(4)
-#define SPI_CFG3_IPM_NODATA_FLAG               BIT(5)
-#define SPI_CFG3_IPM_CMD_BYTELEN_OFFSET                8
-#define SPI_CFG3_IPM_ADDR_BYTELEN_OFFSET       12
+#define SPI_CFG3_IPM_HALF_DUPLEX_DIR   BIT(2)
+#define SPI_CFG3_IPM_HALF_DUPLEX_EN    BIT(3)
+#define SPI_CFG3_IPM_XMODE_EN          BIT(4)
+#define SPI_CFG3_IPM_NODATA_FLAG       BIT(5)
+#define SPI_CFG3_IPM_CMD_BYTELEN_OFFSET        8
+#define SPI_CFG3_IPM_ADDR_BYTELEN_OFFSET 12
 
-#define SPI_CFG3_IPM_CMD_PIN_MODE_MASK         GENMASK(1, 0)
-#define SPI_CFG3_IPM_CMD_BYTELEN_MASK          GENMASK(11, 8)
-#define SPI_CFG3_IPM_ADDR_BYTELEN_MASK         GENMASK(15, 12)
+#define SPI_CFG3_IPM_CMD_PIN_MODE_MASK GENMASK(1, 0)
+#define SPI_CFG3_IPM_CMD_BYTELEN_MASK  GENMASK(11, 8)
+#define SPI_CFG3_IPM_ADDR_BYTELEN_MASK GENMASK(15, 12)
 
-#define MT8173_SPI_MAX_PAD_SEL 3
+#define MT8173_SPI_MAX_PAD_SEL         3
 
-#define MTK_SPI_PAUSE_INT_STATUS 0x2
+#define MTK_SPI_PAUSE_INT_STATUS       0x2
 
-#define MTK_SPI_IDLE 0
-#define MTK_SPI_PAUSED 1
+#define MTK_SPI_MAX_FIFO_SIZE          32U
+#define MTK_SPI_PACKET_SIZE            1024
+#define MTK_SPI_IPM_PACKET_SIZE                SZ_64K
+#define MTK_SPI_IPM_PACKET_LOOP                SZ_256
 
-#define MTK_SPI_MAX_FIFO_SIZE 32U
-#define MTK_SPI_PACKET_SIZE 1024
-#define MTK_SPI_IPM_PACKET_SIZE SZ_64K
-#define MTK_SPI_IPM_PACKET_LOOP SZ_256
+#define MTK_SPI_IDLE                   0
+#define MTK_SPI_PAUSED                 1
 
-#define MTK_SPI_32BITS_MASK  (0xffffffff)
+#define MTK_SPI_32BITS_MASK            (0xffffffff)
 
-#define DMA_ADDR_EXT_BITS (36)
-#define DMA_ADDR_DEF_BITS (32)
+#define DMA_ADDR_EXT_BITS              (36)
+#define DMA_ADDR_DEF_BITS              (32)
 
 /**
  * struct mtk_spi_compatible - device data structure