uboot/include/omap3_spi.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2#ifndef __OMAP3_SPI_H_
   3#define __OMAP3_SPI_H_
   4
   5/* per-register bitmasks */
   6#define OMAP3_MCSPI_SYSCONFIG_SMARTIDLE (2 << 3)
   7#define OMAP3_MCSPI_SYSCONFIG_ENAWAKEUP BIT(2)
   8#define OMAP3_MCSPI_SYSCONFIG_AUTOIDLE  BIT(0)
   9#define OMAP3_MCSPI_SYSCONFIG_SOFTRESET BIT(1)
  10
  11#define OMAP3_MCSPI_SYSSTATUS_RESETDONE BIT(0)
  12
  13#define OMAP3_MCSPI_MODULCTRL_SINGLE    BIT(0)
  14#define OMAP3_MCSPI_MODULCTRL_MS        BIT(2)
  15#define OMAP3_MCSPI_MODULCTRL_STEST     BIT(3)
  16
  17#define OMAP3_MCSPI_CHCONF_PHA          BIT(0)
  18#define OMAP3_MCSPI_CHCONF_POL          BIT(1)
  19#define OMAP3_MCSPI_CHCONF_CLKD_MASK    GENMASK(5, 2)
  20#define OMAP3_MCSPI_CHCONF_EPOL         BIT(6)
  21#define OMAP3_MCSPI_CHCONF_WL_MASK      GENMASK(11, 7)
  22#define OMAP3_MCSPI_CHCONF_TRM_RX_ONLY  BIT(12)
  23#define OMAP3_MCSPI_CHCONF_TRM_TX_ONLY  BIT(13)
  24#define OMAP3_MCSPI_CHCONF_TRM_MASK     GENMASK(13, 12)
  25#define OMAP3_MCSPI_CHCONF_DMAW         BIT(14)
  26#define OMAP3_MCSPI_CHCONF_DMAR         BIT(15)
  27#define OMAP3_MCSPI_CHCONF_DPE0         BIT(16)
  28#define OMAP3_MCSPI_CHCONF_DPE1         BIT(17)
  29#define OMAP3_MCSPI_CHCONF_IS           BIT(18)
  30#define OMAP3_MCSPI_CHCONF_TURBO        BIT(19)
  31#define OMAP3_MCSPI_CHCONF_FORCE        BIT(20)
  32
  33#define OMAP3_MCSPI_CHSTAT_RXS          BIT(0)
  34#define OMAP3_MCSPI_CHSTAT_TXS          BIT(1)
  35#define OMAP3_MCSPI_CHSTAT_EOT          BIT(2)
  36
  37#define OMAP3_MCSPI_CHCTRL_EN           BIT(0)
  38#define OMAP3_MCSPI_CHCTRL_DIS          (0 << 0)
  39
  40#define OMAP3_MCSPI_WAKEUPENABLE_WKEN   BIT(0)
  41#define MCSPI_PINDIR_D0_IN_D1_OUT       0
  42#define MCSPI_PINDIR_D0_OUT_D1_IN       1
  43
  44#define OMAP3_MCSPI_MAX_FREQ            48000000
  45#define SPI_WAIT_TIMEOUT                10
  46
  47#define OMAP4_MCSPI_REG_OFFSET  0x100
  48
  49/* OMAP3 McSPI registers */
  50struct mcspi_channel {
  51        unsigned int chconf;            /* 0x2C, 0x40, 0x54, 0x68 */
  52        unsigned int chstat;            /* 0x30, 0x44, 0x58, 0x6C */
  53        unsigned int chctrl;            /* 0x34, 0x48, 0x5C, 0x70 */
  54        unsigned int tx;                /* 0x38, 0x4C, 0x60, 0x74 */
  55        unsigned int rx;                /* 0x3C, 0x50, 0x64, 0x78 */
  56};
  57
  58struct mcspi {
  59        unsigned char res1[0x10];
  60        unsigned int sysconfig;         /* 0x10 */
  61        unsigned int sysstatus;         /* 0x14 */
  62        unsigned int irqstatus;         /* 0x18 */
  63        unsigned int irqenable;         /* 0x1C */
  64        unsigned int wakeupenable;      /* 0x20 */
  65        unsigned int syst;              /* 0x24 */
  66        unsigned int modulctrl;         /* 0x28 */
  67        struct mcspi_channel channel[4];
  68        /* channel0: 0x2C - 0x3C, bus 0 & 1 & 2 & 3 */
  69        /* channel1: 0x40 - 0x50, bus 0 & 1 */
  70        /* channel2: 0x54 - 0x64, bus 0 & 1 */
  71        /* channel3: 0x68 - 0x78, bus 0 */
  72};
  73
  74struct omap3_spi_plat {
  75        struct mcspi *regs;
  76        unsigned int pin_dir:1;
  77};
  78#endif
  79