• Wan Ahmad Zainie's avatar
    spi: dw: Add support for DesignWare DWC_ssi · e539f435
    Wan Ahmad Zainie authored
    This patch adds initial support for DesignWare DWC_ssi soft IP. DWC_ssi is
    the enhanced version of DW_apb_ssi, which is currently supported by this
    driver. Their registers are same, but the bit fields of register CTRLR0
    are different.
    
    DWC_ssi has additional features compared to DW_apb_ssi. Major enhancements
    in DWC_ssi are hyper bus protocol, boot mode support and advanced XIP
    support. DWC_ssi is an AHB slave device, whilst DW_apb_ssi is an APB slave
    device.
    
    Register offset
                    DW_ssi          DW_apb_ssi
    CTRLR0          0x00            0x00
    CTRLR1          0x04            0x04
    SSIENR          0x08            0x08
    MWCR            0x0c            0x0c
    SER             0x10            0x10
    BAUDR           0x14            0x14
    TXFTLR          0x18            0x18
    RXFTLR          0x1c            0x1c
    TXFLR           0x20            0x20
    RXFLR           0x24            0x24
    SR              0x28            0x28
    IMR             0x2c            0x2c
    ISR             0x30            0x30
    RISR            0x34            0x34
    TXOICR          0x38            0x38
    RXOICR          0x3c            0x3c
    RXUICR          0x40            0x40
    MSTICR          0x44            0x44
    ICR             0x48            0x48
    DMACR           0x4c            0x4c
    DMATDLR         0x50            0x50
    DMARDLR         0x54            0x54
    IDR             0x58            0x58
    SSI_VERSION_ID  0x5c            0x5c
    DRx (0 to 35)   0x60+i*0x4      0x60+i*0x4
    RX_SAMPLE_DLY   0xf0            0xf0
    SPI_CTRLR0      0xf4            0xf4
    TXD_DRIVE_EDGE  0xf8            0xf8
    XIP_MODE_BITS   0xfc            RSVD
    
    Register configuration - CTRLR0
                            DW_ssi          DW_apb_ssi
      SPI_HYPERBUS_EN       bit[24]         NONE
      SPI_FRF               bit[23:22]      bit[22:21]
      DFS_32                NONE            bit[20:16]
      CFS                   bit[19:16]      bit[15:12]
      SSTE                  bit[14]         bit[24]
      SRL                   bit[13]         bit[11]
      SLV_OE                bit[12]         bit[10]
      TMOD                  bit[11:10]      bit[9:8]
      SCPOL | SPHA          bit[9:8]        bit[7:6]
      FRF                   bit[7:6]        bit[5:4]
      DFS                   bit[4:0]        bit[3:0]
    
    The documents used are
    [1] DW_apb_ssi_databook.pdf version 4.01a (2016.10a).
    [2] DWC_ssi_databook.pdf version 1.01a.
    Signed-off-by: default avatarWan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@intel.com>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20200505130618.554-4-wan.ahmad.zainie.wan.mohamad@intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    e539f435
spi-dw.h 6.66 KB