123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- /*
- * Copyright (C) 2016
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
- #ifndef __ATMEL_QSPI_H__
- #define __ATMEL_QSPI_H__
- /*
- * Register Definitions
- */
- #define QSPI_CR 0x00 /* Control Register */
- #define QSPI_MR 0x04 /* Mode Register */
- #define QSPI_RDR 0x08 /* Receive Data Register */
- #define QSPI_TDR 0x0c /* Transmit Data Register */
- #define QSPI_SR 0x10 /* Status Register */
- #define QSPI_IER 0x14 /* Interrupt Enable Register */
- #define QSPI_IDR 0x18 /* Interrupt Disable Register */
- #define QSPI_IMR 0x1c /* Interrupt Mask Register */
- #define QSPI_SCR 0x20 /* Serial Clock Register */
- #define QSPI_IAR 0x30 /* Instruction Address Register */
- #define QSPI_ICR 0x34 /* Instruction Code Register */
- #define QSPI_IFR 0x38 /* Instruction Frame Register */
- /* 0x3c Reserved */
- #define QSPI_SMR 0x40 /* Scrambling Mode Register */
- #define QSPI_SKR 0x44 /* Scrambling Key Register */
- /* 0x48 ~ 0xe0 */
- #define QSPI_WPMR 0xe4 /* Write Protection Mode Register */
- #define QSPI_WPSR 0xe8 /* Write Protection Status Register */
- /* 0xec ~ 0xf8 Reserved */
- /* 0xfc Reserved */
- /*
- * Register Field Definitions
- */
- /* QSPI_CR */
- #define QSPI_CR_QSPIEN BIT(0) /* QSPI Enable */
- #define QSPI_CR_QSPIDIS BIT(1) /* QSPI Disable */
- #define QSPI_CR_SWRST BIT(7) /* QSPI Software Reset */
- #define QSPI_CR_LASTXFER BIT(24) /* Last Transfer */
- /* QSPI_MR */
- #define QSPI_MR_SMM BIT(0) /* Serial Memort Mode */
- #define QSPI_MR_SMM_SPI 0
- #define QSPI_MR_SMM_MEMORY QSPI_MR_SMM
- #define QSPI_MR_LLB BIT(1) /* Local Localback Enable */
- #define QSPI_MR_LLB_DISABLED 0
- #define QSPI_MR_LLB_ENABLED QSPI_MR_LLB
- #define QSPI_MR_WDRBT BIT(2) /* Wait Data Read Before Transfer */
- #define QSPI_MR_WDRBT_DISABLED 0
- #define QSPI_MR_WDRBT_ENABLED QSPI_MR_WDRBT
- #define QSPI_MR_SMRM BIT(3) /* Serial Memory Register Mode */
- #define QSPI_MR_SMRM_AHB 0
- #define QSPI_MR_SMRM_APB QSPI_MR_SMRM
- #define QSPI_MR_CSMODE GENMASK(5, 4) /* Chip Select Mode */
- #define QSPI_MR_CSMODE_NOT_RELOADED (0x0u << 4)
- #define QSPI_MR_CSMODE_LASTXFER (0x1u << 4)
- #define QSPI_MR_CSMODE_SYSTEMATICALLY (0x2u << 4)
- #define QSPI_MR_NBBITS GENMASK(11, 8) /*
- * Number of Bits Per
- * Transfer
- */
- #define QSPI_MR_NBBITS_8_BIT (0x0u << 8)
- #define QSPI_MR_NBBITS_16_BIT (0x8u << 8)
- #define QSPI_MR_DLYBCT GENMASK(23, 16) /*
- * Delay Between Consecutive
- * Transfers
- */
- #define QSPI_MR_DLYCS GENMASK(31, 24) /* Minimum Inactive QCS Delay */
- /* QSPI_SR */
- #define QSPI_SR_RDRF BIT(0) /* Receive Data Register Full */
- #define QSPI_SR_TDRE BIT(1) /* Transmit Data Register Empty */
- #define QSPI_SR_TXEMPTY BIT(2) /* Transmission Registers Empty */
- #define QSPI_SR_OVRES BIT(3) /* Overrun Error Status */
- #define QSPI_SR_CSR BIT(8) /* Chip Select Rise */
- #define QSPI_SR_CSS BIT(9) /* Chip Select Status */
- #define QSPI_SR_INSTRE BIT(10) /* Instruction End Status */
- #define QSPI_SR_QSPIENS BIT(24) /* QSPI Enable Status */
- /* QSPI_SCR */
- #define QSPI_SCR_CPOL BIT(0) /* Clock Polarity */
- #define QSPI_SCR_CPOL_(x) ((x) << 0)
- #define QSPI_SCR_CPHA BIT(1) /* Clock Phase */
- #define QSPI_SCR_CPHA_(x) ((x) << 1)
- #define QSPI_SCR_SCBR GENMASK(15, 8) /* Serial Clock Baud Rate */
- #define QSPI_SCR_SCBR_(x) (((x) << 8) & QSPI_SCR_SCBR)
- #define QSPI_SCR_DLYBS GENMASK(23, 16)
- #define QSPI_SCR_DLYBS_(x) (((x) << 16) & QSPI_SCR_DLYBS) /*
- * Delay Before
- * QSCK
- */
- /* QSPI_ICR */
- #define QSPI_ICR_INST GENMASK(7, 0)
- #define QSPI_ICR_INST_(x) (((x) << 0) & QSPI_ICR_INST) /*
- * Instruction
- * Code
- */
- #define QSPI_ICR_OPT GENMASK(23, 16)
- #define QSPI_ICR_OPT_(x) (((x) << 16) & QSPI_ICR_OPT) /*
- * Option
- * Code
- */
- /* QSPI_IFR */
- #define QSPI_IFR_WIDTH GENMASK(2, 0) /*
- * Width of Instruction Code,
- * Address, Option Code and Data
- */
- #define QSPI_IFR_WIDTH_SINGLE_BIT_SPI (0x0u << 0)
- #define QSPI_IFR_WIDTH_DUAL_OUTPUT (0x1u << 0)
- #define QSPI_IFR_WIDTH_QUAD_OUTPUT (0x2u << 0)
- #define QSPI_IFR_WIDTH_DUAL_IO (0x3u << 0)
- #define QSPI_IFR_WIDTH_QUAD_IO (0x4u << 0)
- #define QSPI_IFR_WIDTH_DUAL_CMD (0x5u << 0)
- #define QSPI_IFR_WIDTH_QUAD_CMD (0x6u << 0)
- #define QSPI_IFR_WIDTH_(x) (((x) << 0) & QSPI_IFR_WIDTH)
- #define QSPI_IFR_INSTEN BIT(4) /* Instruction Enable*/
- #define QSPI_IFR_ADDREN BIT(5) /* Address Enable*/
- #define QSPI_IFR_OPTEN BIT(6) /* Option Enable*/
- #define QSPI_IFR_DATAEN BIT(7) /* Data Enable*/
- #define QSPI_IFR_OPTL GENMASK(9, 8) /* Option Code Length */
- #define QSPI_IFR_OPTL_1BIT (0x0u << 8)
- #define QSPI_IFR_OPTL_2BIT (0x1u << 8)
- #define QSPI_IFR_OPTL_4BIT (0x2u << 8)
- #define QSPI_IFR_OPTL_8BIT (0x3u << 8)
- #define QSPI_IFR_ADDRL BIT(10) /* Address Length */
- #define QSPI_IFR_ADDRL_24_BIT 0
- #define QSPI_IFR_ADDRL_32_BIT QSPI_IFR_ADDRL
- #define QSPI_IFR_TFRTYPE GENMASK(13, 12) /* Data Transfer Type */
- #define QSPI_IFR_TFRTYPE_READ (0x0u << 12)
- #define QSPI_IFR_TFRTYPE_READ_MEMORY (0x1u << 12)
- #define QSPI_IFR_TFRTYPE_WRITE (0x2u << 12)
- #define QSPI_IFR_TFRTYPE_WRITE_MEMORY (0x3u << 12)
- #define QSPI_IFR_TFRTYPE_(x) (((x) << 12) & QSPI_IFR_TFRTYPE)
- #define QSPI_IFR_CRM BIT(14) /* Continuous Read Mode */
- #define QSPI_IFR_NBDUM GENMASK(20, 16)
- #define QSPI_IFR_NBDUM_(x) (((x) << 16) & QSPI_IFR_NBDUM) /*
- * Number Of
- * Dummy Cycles
- */
- struct atmel_qspi_platdata {
- void *regbase;
- void *membase;
- };
- struct atmel_qspi_priv {
- ulong bus_clk_rate;
- void *regbase;
- void *membase;
- };
- #include <asm/io.h>
- static inline u32 qspi_readl(struct atmel_qspi_priv *aq, u32 reg)
- {
- return readl(aq->regbase + reg);
- }
- static inline void qspi_writel(struct atmel_qspi_priv *aq, u32 reg, u32 value)
- {
- writel(value, aq->regbase + reg);
- }
- #endif /* __ATMEL_QSPI_H__ */
|