| 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__ */
 
 
  |