diff options
Diffstat (limited to 'arch/blackfin/include/asm/mach-common/bits')
| -rw-r--r-- | arch/blackfin/include/asm/mach-common/bits/cgu.h | 80 | ||||
| -rw-r--r-- | arch/blackfin/include/asm/mach-common/bits/dde.h | 88 | ||||
| -rw-r--r-- | arch/blackfin/include/asm/mach-common/bits/dma.h | 54 | ||||
| -rw-r--r-- | arch/blackfin/include/asm/mach-common/bits/mpu.h | 6 | ||||
| -rw-r--r-- | arch/blackfin/include/asm/mach-common/bits/pll.h | 5 | ||||
| -rw-r--r-- | arch/blackfin/include/asm/mach-common/bits/sdh.h | 38 | ||||
| -rw-r--r-- | arch/blackfin/include/asm/mach-common/bits/spi6xx.h | 240 | ||||
| -rw-r--r-- | arch/blackfin/include/asm/mach-common/bits/uart4.h | 66 | 
8 files changed, 569 insertions, 8 deletions
| diff --git a/arch/blackfin/include/asm/mach-common/bits/cgu.h b/arch/blackfin/include/asm/mach-common/bits/cgu.h new file mode 100644 index 000000000..cdf734992 --- /dev/null +++ b/arch/blackfin/include/asm/mach-common/bits/cgu.h @@ -0,0 +1,80 @@ +/* + * CGU Masks + */ + +#ifndef __BFIN_PERIPHERAL_CGU__ +#define __BFIN_PERIPHERAL_CGU__ + +/* CGU_CTL Masks */ +#define DF			(1 << 0) +#define MSEL			(0x7f << MSEL_P) +#define WIDLE			(1 << WIDLE_P) +#define LOCK			(1 << LOCK_P) + +#define DF_P			0 +#define MSEL_P			8 +#define WIDLE_P			30 +#define LOCK_P			31 +#define MSEL_MASK               0x7F00 +#define DF_MASK                 0x1 + +/* CGU_STAT Masks */ +#define PLLEN			(1 << 0) +#define PLLBP			(1 << 1) +#define PLLLK			(1 << 2) +#define CLKSALGN		(1 << 3) +#define CCBF0EN			(1 << 4) +#define CCBF1EN			(1 << 5) +#define SCBF0EN			(1 << 6) +#define SCBF1EN			(1 << 7) +#define DCBFEN			(1 << 8) +#define OCBFEN			(1 << 9) +#define ADRERR			(1 << 16) +#define LWERR			(1 << 17) +#define DIVERR			(1 << 18) +#define WDFMSERR		(1 << 19) +#define WDIVERR			(1 << 20) +#define PLLLKERR		(1 << 21) + +/* CGU_DIV Masks */ +#define CSEL			(0x1f << CSEL_P) +#define S0SEL			(3 << S0SEL_P) +#define SYSSEL			(0x1f << SYSSEL_P) +#define S1SEL			(3 << S1SEL_P) +#define DSEL			(0x1f << DSEL_P) +#define OSEL			(0x7f << OSEL_P) +#define ALGN			(1 << ALGN_P) +#define UPDT			(1 << UPDT_P) +#define LOCK			(1 << LOCK_P) + +#define CSEL_P			0 +#define S0SEL_P			5 +#define SYSSEL_P		8 +#define S1SEL_P			13 +#define DSEL_P			16 +#define OSEL_P			22 +#define ALGN_P			29 +#define UPDT_P			30 +#define LOCK_P			31 + +/* CGU_CLKOUTSEL Masks */ +#define CLKOUTSEL		(0xf << 0) +#define USBCLKSEL		(0x3f << 16) +#define LOCK			(1 << LOCK_P) + +#define LOCK_P			31 + +#define CLKOUTSEL_CLKIN		0x0 +#define CLKOUTSEL_CCLK		0x1 +#define CLKOUTSEL_SYSCLK	0x2 +#define CLKOUTSEL_SCLK0		0x3 +#define CLKOUTSEL_SCLK1		0x4 +#define CLKOUTSEL_DCLK		0x5 +#define CLKOUTSEL_USB_PLL	0x6 +#define CLKOUTSEL_OUTCLK	0x7 +#define CLKOUTSEL_USB_CLKIN	0x8 +#define CLKOUTSEL_WDOG		0x9 +#define CLKOUTSEL_PMON		0xA +#define CLKOUTSEL_GND		0xB + +#endif diff --git a/arch/blackfin/include/asm/mach-common/bits/dde.h b/arch/blackfin/include/asm/mach-common/bits/dde.h new file mode 100644 index 000000000..f7b0bb90f --- /dev/null +++ b/arch/blackfin/include/asm/mach-common/bits/dde.h @@ -0,0 +1,88 @@ +/* + * Distributed DMA Engine (DDE) Masks + */ + +#ifndef __BFIN_PERIPHERAL_DDE__ +#define __BFIN_PERIPHERAL_DDE__ + +/* DMA_CONFIG Masks */ +#define DMAEN			(1 << DMAEN_P)	/* DMA Channel Enable */ +#define WNR			(1 << WNR_P)	/* Channel Direction (W/R*) */ +#define SYNC			(1 << SYNC_P)	/* Sync Work Unit Transitions */ +#define CADDR			(1 << CADDR_P)	/* Use Current Address */ +#define PSIZE			(7 << PSIZE_P)	/* Peripheral Word Size */ +#define PSIZE_1			(0 << PSIZE_P) +#define PSIZE_2			(1 << PSIZE_P) +#define PSIZE_4			(2 << PSIZE_P) +#define PSIZE_8			(3 << PSIZE_P) +#define MSIZE			(7 << MSIZE_P)	/* Memory Transfer Size */ +#define MSIZE_1			(0 << MSIZE_P) +#define MSIZE_2			(1 << MSIZE_P) +#define MSIZE_4			(2 << MSIZE_P) +#define MSIZE_8			(3 << MSIZE_P) +#define MSIZE_16		(4 << MSIZE_P) +#define MSIZE_32		(5 << MSIZE_P) +#define FLOW			(7 << FLOW_P)	/* Next Operation */ +#define FLOW_STOP		(0 << FLOW_P)	/* Stop Mode */ +#define FLOW_AUTO		(1 << FLOW_P)	/* Autobuffer Mode */ +#define FLOW_DSCL		(4 << FLOW_P)	/* Descriptor List */ +#define FLOW_DSCA		(5 << FLOW_P)	/* Descriptor Array */ +#define FLOW_DSDL		(6 << FLOW_P)	/* Descriptor On Demand List */ +#define FLOW_DSDA		(7 << FLOW_P)	/* Descriptor On Demand Array */ +#define NDSIZE			(7 << NDSIZE_P)	/* Next Descriptor Set Size */ +#define NDSIZE_1		(0 << NDSIZE_P) +#define NDSIZE_2		(1 << NDSIZE_P) +#define NDSIZE_3		(2 << NDSIZE_P) +#define NDSIZE_4		(3 << NDSIZE_P) +#define NDSIZE_5		(4 << NDSIZE_P) +#define NDSIZE_6		(5 << NDSIZE_P) +#define NDSIZE_7		(6 << NDSIZE_P) +#define DI_EN_X                 (1 << INT_P) +#define DI_EN_Y                 (2 << INT_P) +#define DI_EN_P			(3 << INT_P) +#define DI_EN			(DI_EN_X) +#define DI_XCOUNT_EN            (1 << INT_P)    /* xcount expires interrupt */ +#define TRIG			(3 << TRIG_P)	/* Generate Trigger */ +#define TOVEN			(1 << TOVEN_P) +#define DESCIDCPY		(1 << DESCIDCPY_P) +#define TWOD			(1 << TWOD_P) +#define PDRF			(1 << PDRF_P) + +#define DMAEN_P			0 +#define WNR_P			1 +#define SYNC_P			2 +#define CADDR_P			3 +#define PSIZE_P			4 +#define MSIZE_P			8 +#define FLOW_P			12 +#define TWAIT_P			15 +#define NDSIZE_P		16 +#define INT_P			20 +#define TRIG_P			22 +#define TOVEN_P			24 +#define DESCIDCPY_P		25 +#define TWOD_P			26 +#define PDRF_P			28 + +/* DMA_STATUS Masks */ +#define DMA_DONE		(1 << DMA_DONE_P)	/* Work Unit/Row Done */ +#define DMA_ERR			(1 << DMA_ERR_P)	/* Error Interrupt */ +#define DMA_PIRQ		(1 << DMA_PIRQ_P)	/* Peri Intr Request */ +#define DMA_ERRC		(7 << DMA_ERRC_P)	/* Error Cause */ +#define DMA_RUN			(7 << DMA_RUN_P)	/* Run Status */ +#define DMA_PBWIDTH		(3 << DMA_PBWIDTH_P)	/* Peri Bus Width */ +#define DMA_MBWIDTH		(3 << DMA_MBWIDTH_P)	/* Memory Bus Width */ +#define DMA_FIFOFILL		(7 << DMA_FIFOFILL_P)	/* FIFO Fill Status */ +#define DMA_TWAIT		(1 << DMA_TWAIT_P)	/* Trigger Wait Stat */ + +#define DMA_DONE_P		0 +#define DMA_ERR_P		1 +#define DMA_PIRQ_P		2 +#define DMA_ERRC_P		4 +#define DMA_RUN_P		8 +#define DMA_PBWIDTH_P		12 +#define DMA_MBWIDTH_P		14 +#define DMA_FIFOFILL_P		16 +#define DMA_TWAIT_P		20 + +#endif diff --git a/arch/blackfin/include/asm/mach-common/bits/dma.h b/arch/blackfin/include/asm/mach-common/bits/dma.h index 136313e61..ac426addd 100644 --- a/arch/blackfin/include/asm/mach-common/bits/dma.h +++ b/arch/blackfin/include/asm/mach-common/bits/dma.h @@ -9,14 +9,54 @@  #define DMAEN			0x0001	/* DMA Channel Enable */  #define WNR			0x0002	/* Channel Direction (W/R*) */  #define WDSIZE_8		0x0000	/* Transfer Word Size = 8 */ + +#ifdef CONFIG_BF60x + +#define PSIZE_8			0x00000000	/* Transfer Word Size = 16 */ +#define PSIZE_16		0x00000010	/* Transfer Word Size = 16 */ +#define PSIZE_32		0x00000020	/* Transfer Word Size = 32 */ +#define PSIZE_64		0x00000030	/* Transfer Word Size = 32 */ +#define WDSIZE_16		0x00000100	/* Transfer Word Size = 16 */ +#define WDSIZE_32		0x00000200	/* Transfer Word Size = 32 */ +#define WDSIZE_64		0x00000300	/* Transfer Word Size = 32 */ +#define WDSIZE_128		0x00000400	/* Transfer Word Size = 32 */ +#define WDSIZE_256		0x00000500	/* Transfer Word Size = 32 */ +#define DMA2D			0x04000000	/* DMA Mode (2D/1D*) */ +#define RESTART			0x00000004	/* DMA Buffer Clear SYNC */ +#define DI_EN_X			0x00100000	/* Data Int Enable in X count */ +#define DI_EN_Y			0x00200000	/* Data Int Enable in Y count */ +#define DI_EN_P			0x00300000	/* Data Int Enable in Peri */ +#define DI_EN			DI_EN_X		/* Data Int Enable */ +#define NDSIZE_0		0x00000000	/* Next Desc Size = 0 */ +#define NDSIZE_1		0x00010000	/* Next Desc Size = 1 */ +#define NDSIZE_2		0x00020000	/* Next Desc Size = 2 */ +#define NDSIZE_3		0x00030000	/* Next Desc Size = 3 */ +#define NDSIZE_4		0x00040000	/* Next Desc Size = 4 */ +#define NDSIZE_5		0x00050000	/* Next Desc Size = 5 */ +#define NDSIZE_6		0x00060000	/* Next Desc Size = 6 */ +#define NDSIZE			0x00070000	/* Next Desc Size */ +#define NDSIZE_OFFSET		16		/* Next Desc Size Offset */ +#define DMAFLOW_LIST		0x00004000	/* Desc List Mode */ +#define DMAFLOW_ARRAY		0x00005000	/* Desc Array Mode */ +#define DMAFLOW_LIST_DEMAND	0x00006000	/* Desc Demand List Mode */ +#define DMAFLOW_ARRAY_DEMAND	0x00007000	/* Desc Demand Array Mode */ +#define DMA_RUN_DFETCH		0x00000100	/* DMA Channel Run (DFETCH) */ +#define DMA_RUN			0x00000200	/* DMA Channel Run */ +#define DMA_RUN_WAIT_TRIG	0x00000300	/* DMA Channel Run (WAIT TRIG)*/ +#define DMA_RUN_WAIT_ACK	0x00000400	/* DMA Channel Run (WAIT ACK) */ + +#else +  #define WDSIZE_16		0x0004	/* Transfer Word Size = 16 */  #define WDSIZE_32		0x0008	/* Transfer Word Size = 32 */ +#define PSIZE_16		WDSIZE_16 +#define PSIZE_32		WDSIZE_32  #define DMA2D			0x0010	/* DMA Mode (2D/1D*) */  #define RESTART			0x0020	/* DMA Buffer Clear */  #define DI_SEL			0x0040	/* Data Interrupt Timing Select */  #define DI_EN			0x0080	/* Data Interrupt Enable */  #define NDSIZE			0x0F00	/* Next Descriptor bitmask */ -#define NDSIZE_0		0x0000	/* Next Descriptor Size = 0 (Stop/Autobuffer) */ +#define NDSIZE_0		0x0000	/* Next Descriptor Size = 0 */  #define NDSIZE_1		0x0100	/* Next Descriptor Size = 1 */  #define NDSIZE_2		0x0200	/* Next Descriptor Size = 2 */  #define NDSIZE_3		0x0300	/* Next Descriptor Size = 3 */ @@ -26,14 +66,13 @@  #define NDSIZE_7		0x0700	/* Next Descriptor Size = 7 */  #define NDSIZE_8		0x0800	/* Next Descriptor Size = 8 */  #define NDSIZE_9		0x0900	/* Next Descriptor Size = 9 */ -#define FLOW_STOP		0x0000	/* Stop Mode */ -#define FLOW_AUTO		0x1000	/* Autobuffer Mode */  #define FLOW_ARRAY		0x4000	/* Descriptor Array Mode */  #define FLOW_SMALL		0x6000	/* Small Model Descriptor List Mode */  #define FLOW_LARGE		0x7000	/* Large Model Descriptor List Mode */  #define DMAEN_P			0	/* Channel Enable */  #define WNR_P			1	/* Channel Direction (W/R*) */ +#define WDSIZE_P		2	/* Transfer Word Size */  #define DMA2D_P			4	/* 2D/1D* Mode */  #define RESTART_P		5	/* Restart */  #define DI_SEL_P		6	/* Data Interrupt Select */ @@ -45,14 +84,19 @@  #define DFETCH			0x0004	/* DMA Descriptor Fetch Indicator */  #define DMA_RUN			0x0008	/* DMA Channel Running Indicator */ +#endif +#define DMAFLOW			0x7000	/* Flow Control */ +#define FLOW_STOP		0x0000	/* Stop Mode */ +#define FLOW_AUTO		0x1000	/* Autobuffer Mode */ +  #define DMA_DONE_P		0	/* DMA Done Indicator */  #define DMA_ERR_P		1	/* DMA Error Indicator */  #define DFETCH_P		2	/* Descriptor Fetch Indicator */  #define DMA_RUN_P		3	/* DMA Running Indicator */  /* DMAx_PERIPHERAL_MAP, MDMA_yy_PERIPHERAL_MAP Masks */ -#define CTYPE			0x0040	/* DMA Channel Type Indicator (Memory/Peripheral*) */ -#define CTYPE_P			6	/* DMA Channel Type Indicator BIT POSITION */ +#define CTYPE			0x0040	/* DMA Channel Type (Mem/Peri) */ +#define CTYPE_P			6	/* DMA Channel Type BIT POSITION */  #define PMAP			0xF000	/* Peripheral Mapped To This Channel */  #endif diff --git a/arch/blackfin/include/asm/mach-common/bits/mpu.h b/arch/blackfin/include/asm/mach-common/bits/mpu.h index 39998f82a..cfde2364d 100644 --- a/arch/blackfin/include/asm/mach-common/bits/mpu.h +++ b/arch/blackfin/include/asm/mach-common/bits/mpu.h @@ -70,7 +70,11 @@  #define PAGE_SIZE_4KB		0x00010000	/* 4 KB page size */  #define PAGE_SIZE_1MB		0x00020000	/* 1 MB page size */  #define PAGE_SIZE_4MB		0x00030000	/* 4 MB page size */ -#define PAGE_SIZE_MASK		0x00030000	/* the bits for the page_size field */ +#define PAGE_SIZE_16KB		0x00040000	/* 16 KB page size */ +#define PAGE_SIZE_64KB		0x00050000	/* 64 KB page size */ +#define PAGE_SIZE_16MB		0x00060000	/* 16 MB page size */ +#define PAGE_SIZE_64MB		0x00070000	/* 64 MB page size */ +#define PAGE_SIZE_MASK		0x00070000	/* page_size field mask */  #define PAGE_SIZE_SHIFT		16  #define CPLB_L1SRAM		0x00000020	/* 0=SRAM mapped in L1, 0=SRAM not mapped to L1 */  #define CPLB_PORTPRIO		0x00000200	/* 0=low priority port, 1= high priority port */ diff --git a/arch/blackfin/include/asm/mach-common/bits/pll.h b/arch/blackfin/include/asm/mach-common/bits/pll.h index 9009f2640..fe0ba0f54 100644 --- a/arch/blackfin/include/asm/mach-common/bits/pll.h +++ b/arch/blackfin/include/asm/mach-common/bits/pll.h @@ -16,6 +16,8 @@  #define MSEL			0x7E00		/* Multiplier Select For CCLK/VCO Factors */  #define SPORT_HYST		0x8000		/* Enable Additional Hysteresis on SPORT Input Pins */ +#define MSEL_P			9 +  /* PLL_DIV Masks */  #define SSEL			0x000F		/* System Select */  #define CSEL			0x0030		/* Core Select */ @@ -29,6 +31,9 @@  #define CCLK_DIV4		CSEL_DIV4  #define CCLK_DIV8		CSEL_DIV8 +#define SSEL_P			0 +#define CSEL_P			4 +  /* PLL_STAT Masks */  #define ACTIVE_PLLENABLED	0x0001		/* Processor In Active Mode With PLL Enabled */  #define FULL_ON			0x0002		/* Processor In Full On Mode */ diff --git a/arch/blackfin/include/asm/mach-common/bits/sdh.h b/arch/blackfin/include/asm/mach-common/bits/sdh.h index 8c5dd33f5..1c60d4b83 100644 --- a/arch/blackfin/include/asm/mach-common/bits/sdh.h +++ b/arch/blackfin/include/asm/mach-common/bits/sdh.h @@ -12,18 +12,35 @@  #define                 CMD_INT_E  0x100      /* Command Interrupt */  #define                CMD_PEND_E  0x200      /* Command Pending */  #define                     CMD_E  0x400      /* Command Enable */ +#ifdef RSI_BLKSZ +#define           CMD_CRC_CHECK_D  0x800      /* CRC Check is disabled */ +#define            CMD_DATA0_BUSY  0x1000     /* Check Busy State on DATA0 */ +#endif  /* Bit masks for SDH_PWR_CTL */ +#ifndef RSI_BLKSZ  #define                    PWR_ON  0x3        /* Power On */  #define                 SD_CMD_OD  0x40       /* Open Drain Output */  #define                   ROD_CTL  0x80       /* Rod Control */ +#endif  /* Bit masks for SDH_CLK_CTL */  #define                    CLKDIV  0xff       /* MC_CLK Divisor */  #define                     CLK_E  0x100      /* MC_CLK Bus Clock Enable */  #define                  PWR_SV_E  0x200      /* Power Save Enable */  #define             CLKDIV_BYPASS  0x400      /* Bypass Divisor */ -#define                  WIDE_BUS  0x800      /* Wide Bus Mode Enable */ +#define             BUS_MODE_MASK  0x1800     /* Bus Mode Mask */ +#define                 STD_BUS_1  0x000      /* Standard Bus 1 bit mode */ +#define                WIDE_BUS_4  0x800      /* Wide Bus 4 bit mode */ +#define                BYTE_BUS_8  0x1000     /* Byte Bus 8 bit mode */ +#ifdef RSI_BLKSZ +#define            CARD_TYPE_MASK  0xe000     /* Card type mask */ +#define          CARD_TYPE_OFFSET  13         /* Card type offset */ +#define            CARD_TYPE_SDIO  0 +#define            CARD_TYPE_eMMC  1 +#define              CARD_TYPE_SD  2 +#define           CARD_TYPE_CEATA  3 +#endif  /* Bit masks for SDH_RESP_CMD */  #define                  RESP_CMD  0x3f       /* Response Command */ @@ -33,7 +50,13 @@  #define                   DTX_DIR  0x2        /* Data Transfer Direction */  #define                  DTX_MODE  0x4        /* Data Transfer Mode */  #define                 DTX_DMA_E  0x8        /* Data Transfer DMA Enable */ +#ifndef RSI_BLKSZ  #define              DTX_BLK_LGTH  0xf0       /* Data Transfer Block Length */ +#else + +/* Bit masks for SDH_BLK_SIZE */ +#define              DTX_BLK_LGTH  0x1fff     /* Data Transfer Block Length */ +#endif  /* Bit masks for SDH_STATUS */  #define              CMD_CRC_FAIL  0x1        /* CMD CRC Fail */ @@ -102,10 +125,13 @@  /* Bit masks for SDH_E_STATUS */  #define              SDIO_INT_DET  0x2        /* SDIO Int Detected */  #define               SD_CARD_DET  0x10       /* SD Card Detect */ +#define          SD_CARD_BUSYMODE  0x80000000 /* Card is in Busy mode */ +#define           SD_CARD_SLPMODE  0x40000000 /* Card in Sleep Mode */ +#define             SD_CARD_READY  0x00020000 /* Card Ready */  /* Bit masks for SDH_E_MASK */  #define                  SDIO_MSK  0x2        /* Mask SDIO Int Detected */ -#define                   SCD_MSK  0x40       /* Mask Card Detect */ +#define                   SCD_MSK  0x10       /* Mask Card Detect */  /* Bit masks for SDH_CFG */  #define                   CLKS_EN  0x1        /* Clocks Enable */ @@ -114,7 +140,15 @@  #define                    SD_RST  0x10       /* SDMMC Reset */  #define                 PUP_SDDAT  0x20       /* Pull-up SD_DAT */  #define                PUP_SDDAT3  0x40       /* Pull-up SD_DAT3 */ +#ifndef RSI_BLKSZ  #define                 PD_SDDAT3  0x80       /* Pull-down SD_DAT3 */ +#else +#define                    PWR_ON  0x600      /* Power On */ +#define                 SD_CMD_OD  0x800      /* Open Drain Output */ +#define                   BOOT_EN  0x1000     /* Boot Enable */ +#define                 BOOT_MODE  0x2000     /* Alternate Boot Mode */ +#define               BOOT_ACK_EN  0x4000     /* Boot ACK is expected */ +#endif  /* Bit masks for SDH_RD_WAIT_EN */  #define                       RWR  0x1        /* Read Wait Request */ diff --git a/arch/blackfin/include/asm/mach-common/bits/spi6xx.h b/arch/blackfin/include/asm/mach-common/bits/spi6xx.h new file mode 100644 index 000000000..3368712e3 --- /dev/null +++ b/arch/blackfin/include/asm/mach-common/bits/spi6xx.h @@ -0,0 +1,240 @@ +/* + * Analog Devices bfin_spi3 controller driver + * + * Copyright (c) 2011 Analog Devices Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef _SPI_CHANNEL_H_ +#define _SPI_CHANNEL_H_ + +#include <linux/types.h> + +/* SPI_CONTROL */ +#define SPI_CTL_EN          0x00000001 /* Enable */ +#define SPI_CTL_MSTR        0x00000002 /* Master/Slave */ +#define SPI_CTL_PSSE        0x00000004 /* controls modf error in master mode */ +#define SPI_CTL_ODM         0x00000008 /* Open Drain Mode */ +#define SPI_CTL_CPHA        0x00000010 /* Clock Phase */ +#define SPI_CTL_CPOL        0x00000020 /* Clock Polarity */ +#define SPI_CTL_ASSEL       0x00000040 /* Slave Select Pin Control */ +#define SPI_CTL_SELST       0x00000080 /* Slave Select Polarity in transfers */ +#define SPI_CTL_EMISO       0x00000100 /*Enable MISO */ +#define SPI_CTL_SIZE        0x00000600 /*Word Transfer Size */ +#define SPI_CTL_SIZE08      0x00000000 /*SIZE: 8 bits */ +#define SPI_CTL_SIZE16      0x00000200 /*SIZE: 16 bits */ +#define SPI_CTL_SIZE32      0x00000400 /*SIZE: 32 bits */ +#define SPI_CTL_LSBF        0x00001000 /*LSB First */ +#define SPI_CTL_FCEN        0x00002000 /*Flow-Control Enable */ +#define SPI_CTL_FCCH        0x00004000 /*Flow-Control Channel Selection */ +#define SPI_CTL_FCPL        0x00008000 /*Flow-Control Polarity */ +#define SPI_CTL_FCWM        0x00030000 /*Flow-Control Water-Mark */ +#define SPI_CTL_FIFO0       0x00000000 /*FCWM: Tx empty or Rx Full */ +#define SPI_CTL_FIFO1       0x00010000 /*FCWM: Tx empty or Rx full (>=75%) */ +#define SPI_CTL_FIFO2       0x00020000 /*FCWM: Tx empty or Rx full (>=50%) */ +#define SPI_CTL_FMODE       0x00040000 /*Fast-mode Enable */ +#define SPI_CTL_MIOM        0x00300000 /*Multiple I/O Mode */ +#define SPI_CTL_MIO_DIS     0x00000000 /*MIOM: Disable */ +#define SPI_CTL_MIO_DUAL    0x00100000 /*MIOM: Enable DIOM (Dual I/O Mode) */ +#define SPI_CTL_MIO_QUAD    0x00200000 /*MIOM: Enable QUAD (Quad SPI Mode) */ +#define SPI_CTL_SOSI        0x00400000 /*Start on MOSI */ +/* SPI_RX_CONTROL */ +#define SPI_RXCTL_REN       0x00000001 /*Receive Channel Enable */ +#define SPI_RXCTL_RTI       0x00000004 /*Receive Transfer Initiate */ +#define SPI_RXCTL_RWCEN     0x00000008 /*Receive Word Counter Enable */ +#define SPI_RXCTL_RDR       0x00000070 /*Receive Data Request */ +#define SPI_RXCTL_RDR_DIS   0x00000000 /*RDR: Disabled */ +#define SPI_RXCTL_RDR_NE    0x00000010 /*RDR: RFIFO not empty */ +#define SPI_RXCTL_RDR_25    0x00000020 /*RDR: RFIFO 25% full */ +#define SPI_RXCTL_RDR_50    0x00000030 /*RDR: RFIFO 50% full */ +#define SPI_RXCTL_RDR_75    0x00000040 /*RDR: RFIFO 75% full */ +#define SPI_RXCTL_RDR_FULL  0x00000050 /*RDR: RFIFO full */ +#define SPI_RXCTL_RDO       0x00000100 /*Receive Data Over-Run */ +#define SPI_RXCTL_RRWM      0x00003000 /*FIFO Regular Water-Mark */ +#define SPI_RXCTL_RWM_0     0x00000000 /*RRWM: RFIFO Empty */ +#define SPI_RXCTL_RWM_25    0x00001000 /*RRWM: RFIFO 25% full */ +#define SPI_RXCTL_RWM_50    0x00002000 /*RRWM: RFIFO 50% full */ +#define SPI_RXCTL_RWM_75    0x00003000 /*RRWM: RFIFO 75% full */ +#define SPI_RXCTL_RUWM      0x00070000 /*FIFO Urgent Water-Mark */ +#define SPI_RXCTL_UWM_DIS   0x00000000 /*RUWM: Disabled */ +#define SPI_RXCTL_UWM_25    0x00010000 /*RUWM: RFIFO 25% full */ +#define SPI_RXCTL_UWM_50    0x00020000 /*RUWM: RFIFO 50% full */ +#define SPI_RXCTL_UWM_75    0x00030000 /*RUWM: RFIFO 75% full */ +#define SPI_RXCTL_UWM_FULL  0x00040000 /*RUWM: RFIFO full */ +/* SPI_TX_CONTROL */ +#define SPI_TXCTL_TEN       0x00000001 /*Transmit Channel Enable */ +#define SPI_TXCTL_TTI       0x00000004 /*Transmit Transfer Initiate */ +#define SPI_TXCTL_TWCEN     0x00000008 /*Transmit Word Counter Enable */ +#define SPI_TXCTL_TDR       0x00000070 /*Transmit Data Request */ +#define SPI_TXCTL_TDR_DIS   0x00000000 /*TDR: Disabled */ +#define SPI_TXCTL_TDR_NF    0x00000010 /*TDR: TFIFO not full */ +#define SPI_TXCTL_TDR_25    0x00000020 /*TDR: TFIFO 25% empty */ +#define SPI_TXCTL_TDR_50    0x00000030 /*TDR: TFIFO 50% empty */ +#define SPI_TXCTL_TDR_75    0x00000040 /*TDR: TFIFO 75% empty */ +#define SPI_TXCTL_TDR_EMPTY 0x00000050 /*TDR: TFIFO empty */ +#define SPI_TXCTL_TDU       0x00000100 /*Transmit Data Under-Run */ +#define SPI_TXCTL_TRWM      0x00003000 /*FIFO Regular Water-Mark */ +#define SPI_TXCTL_RWM_FULL  0x00000000 /*TRWM: TFIFO full */ +#define SPI_TXCTL_RWM_25    0x00001000 /*TRWM: TFIFO 25% empty */ +#define SPI_TXCTL_RWM_50    0x00002000 /*TRWM: TFIFO 50% empty */ +#define SPI_TXCTL_RWM_75    0x00003000 /*TRWM: TFIFO 75% empty */ +#define SPI_TXCTL_TUWM      0x00070000 /*FIFO Urgent Water-Mark */ +#define SPI_TXCTL_UWM_DIS   0x00000000 /*TUWM: Disabled */ +#define SPI_TXCTL_UWM_25    0x00010000 /*TUWM: TFIFO 25% empty */ +#define SPI_TXCTL_UWM_50    0x00020000 /*TUWM: TFIFO 50% empty */ +#define SPI_TXCTL_UWM_75    0x00030000 /*TUWM: TFIFO 75% empty */ +#define SPI_TXCTL_UWM_EMPTY 0x00040000 /*TUWM: TFIFO empty */ +/* SPI_CLOCK */ +#define SPI_CLK_BAUD        0x0000FFFF /*Baud Rate */ +/* SPI_DELAY */ +#define SPI_DLY_STOP        0x000000FF /*Transfer delay time */ +#define SPI_DLY_LEADX       0x00000100 /*Extended (1 SCK) LEAD Control */ +#define SPI_DLY_LAGX        0x00000200 /*Extended (1 SCK) LAG control */ +/* SPI_SSEL */ +#define SPI_SLVSEL_SSE1     0x00000002 /*SPISSEL1 Enable */ +#define SPI_SLVSEL_SSE2     0x00000004 /*SPISSEL2 Enable */ +#define SPI_SLVSEL_SSE3     0x00000008 /*SPISSEL3 Enable */ +#define SPI_SLVSEL_SSE4     0x00000010 /*SPISSEL4 Enable */ +#define SPI_SLVSEL_SSE5     0x00000020 /*SPISSEL5 Enable */ +#define SPI_SLVSEL_SSE6     0x00000040 /*SPISSEL6 Enable */ +#define SPI_SLVSEL_SSE7     0x00000080 /*SPISSEL7 Enable */ +#define SPI_SLVSEL_SSEL1    0x00000200 /*SPISSEL1 Value */ +#define SPI_SLVSEL_SSEL2    0x00000400 /*SPISSEL2 Value */ +#define SPI_SLVSEL_SSEL3    0x00000800 /*SPISSEL3 Value */ +#define SPI_SLVSEL_SSEL4    0x00001000 /*SPISSEL4 Value */ +#define SPI_SLVSEL_SSEL5    0x00002000 /*SPISSEL5 Value */ +#define SPI_SLVSEL_SSEL6    0x00004000 /*SPISSEL6 Value */ +#define SPI_SLVSEL_SSEL7    0x00008000 /*SPISSEL7 Value */ +/* SPI_RWC */ +#define SPI_RWC_VALUE       0x0000FFFF /*Received Word-Count */ +/* SPI_RWCR */ +#define SPI_RWCR_VALUE      0x0000FFFF /*Received Word-Count Reload */ +/* SPI_TWC */ +#define SPI_TWC_VALUE       0x0000FFFF /*Transmitted Word-Count */ +/* SPI_TWCR */ +#define SPI_TWCR_VALUE      0x0000FFFF /*Transmitted Word-Count Reload */ +/* SPI_IMASK */ +#define SPI_IMSK_RUWM       0x00000002 /*Receive Water-Mark Interrupt Mask */ +#define SPI_IMSK_TUWM       0x00000004 /*Transmit Water-Mark Interrupt Mask */ +#define SPI_IMSK_ROM        0x00000010 /*Receive Over-Run Interrupt Mask */ +#define SPI_IMSK_TUM        0x00000020 /*Transmit Under-Run Interrupt Mask */ +#define SPI_IMSK_TCM        0x00000040 /*Transmit Collision Interrupt Mask */ +#define SPI_IMSK_MFM        0x00000080 /*Mode Fault Interrupt Mask */ +#define SPI_IMSK_RSM        0x00000100 /*Receive Start Interrupt Mask */ +#define SPI_IMSK_TSM        0x00000200 /*Transmit Start Interrupt Mask */ +#define SPI_IMSK_RFM        0x00000400 /*Receive Finish Interrupt Mask */ +#define SPI_IMSK_TFM        0x00000800 /*Transmit Finish Interrupt Mask */ +/* SPI_IMASKCL */ +#define SPI_IMSK_CLR_RUW    0x00000002 /*Receive Water-Mark Interrupt Mask */ +#define SPI_IMSK_CLR_TUWM   0x00000004 /*Transmit Water-Mark Interrupt Mask */ +#define SPI_IMSK_CLR_ROM    0x00000010 /*Receive Over-Run Interrupt Mask */ +#define SPI_IMSK_CLR_TUM    0x00000020 /*Transmit Under-Run Interrupt Mask */ +#define SPI_IMSK_CLR_TCM    0x00000040 /*Transmit Collision Interrupt Mask */ +#define SPI_IMSK_CLR_MFM    0x00000080 /*Mode Fault Interrupt Mask */ +#define SPI_IMSK_CLR_RSM    0x00000100 /*Receive Start Interrupt Mask */ +#define SPI_IMSK_CLR_TSM    0x00000200 /*Transmit Start Interrupt Mask */ +#define SPI_IMSK_CLR_RFM    0x00000400 /*Receive Finish Interrupt Mask */ +#define SPI_IMSK_CLR_TFM    0x00000800 /*Transmit Finish Interrupt Mask */ +/* SPI_IMASKST */ +#define SPI_IMSK_SET_RUWM   0x00000002 /*Receive Water-Mark Interrupt Mask */ +#define SPI_IMSK_SET_TUWM   0x00000004 /*Transmit Water-Mark Interrupt Mask */ +#define SPI_IMSK_SET_ROM    0x00000010 /*Receive Over-Run Interrupt Mask */ +#define SPI_IMSK_SET_TUM    0x00000020 /*Transmit Under-Run Interrupt Mask */ +#define SPI_IMSK_SET_TCM    0x00000040 /*Transmit Collision Interrupt Mask */ +#define SPI_IMSK_SET_MFM    0x00000080 /*Mode Fault Interrupt Mask */ +#define SPI_IMSK_SET_RSM    0x00000100 /*Receive Start Interrupt Mask */ +#define SPI_IMSK_SET_TSM    0x00000200 /*Transmit Start Interrupt Mask */ +#define SPI_IMSK_SET_RFM    0x00000400 /*Receive Finish Interrupt Mask */ +#define SPI_IMSK_SET_TFM    0x00000800 /*Transmit Finish Interrupt Mask */ +/* SPI_STATUS */ +#define SPI_STAT_SPIF       0x00000001 /*SPI Finished */ +#define SPI_STAT_RUWM       0x00000002 /*Receive Water-Mark Breached */ +#define SPI_STAT_TUWM       0x00000004 /*Transmit Water-Mark Breached */ +#define SPI_STAT_ROE        0x00000010 /*Receive Over-Run Indication */ +#define SPI_STAT_TUE        0x00000020 /*Transmit Under-Run Indication */ +#define SPI_STAT_TCE        0x00000040 /*Transmit Collision Indication */ +#define SPI_STAT_MODF       0x00000080 /*Mode Fault Indication */ +#define SPI_STAT_RS         0x00000100 /*Receive Start Indication */ +#define SPI_STAT_TS         0x00000200 /*Transmit Start Indication */ +#define SPI_STAT_RF         0x00000400 /*Receive Finish Indication */ +#define SPI_STAT_TF         0x00000800 /*Transmit Finish Indication */ +#define SPI_STAT_RFS        0x00007000 /*SPI_RFIFO status */ +#define SPI_STAT_RFIFO_EMPTY 0x00000000 /*RFS: RFIFO Empty */ +#define SPI_STAT_RFIFO_25   0x00001000 /*RFS: RFIFO 25% Full */ +#define SPI_STAT_RFIFO_50   0x00002000 /*RFS: RFIFO 50% Full */ +#define SPI_STAT_RFIFO_75   0x00003000 /*RFS: RFIFO 75% Full */ +#define SPI_STAT_RFIFO_FULL 0x00004000 /*RFS: RFIFO Full */ +#define SPI_STAT_TFS        0x00070000 /*SPI_TFIFO status */ +#define SPI_STAT_TFIFO_FULL 0x00000000 /*TFS: TFIFO full */ +#define SPI_STAT_TFIFO_25   0x00010000 /*TFS: TFIFO 25% empty */ +#define SPI_STAT_TFIFO_50   0x00020000 /*TFS: TFIFO 50% empty */ +#define SPI_STAT_TFIFO_75   0x00030000 /*TFS: TFIFO 75% empty */ +#define SPI_STAT_TFIFO_EMPTY 0x00040000 /*TFS: TFIFO empty */ +#define SPI_STAT_FCS        0x00100000 /*Flow-Control Stall Indication */ +#define SPI_STAT_RFE        0x00400000 /*SPI_RFIFO Empty */ +#define SPI_STAT_TFF        0x00800000 /*SPI_TFIFO Full */ +/* SPI_ILAT */ +#define SPI_ILAT_RUWMI      0x00000002 /*Receive Water Mark Interrupt */ +#define SPI_ILAT_TUWMI      0x00000004 /*Transmit Water Mark Interrupt */ +#define SPI_ILAT_ROI        0x00000010 /*Receive Over-Run Indication */ +#define SPI_ILAT_TUI        0x00000020 /*Transmit Under-Run Indication */ +#define SPI_ILAT_TCI        0x00000040 /*Transmit Collision Indication */ +#define SPI_ILAT_MFI        0x00000080 /*Mode Fault Indication */ +#define SPI_ILAT_RSI        0x00000100 /*Receive Start Indication */ +#define SPI_ILAT_TSI        0x00000200 /*Transmit Start Indication */ +#define SPI_ILAT_RFI        0x00000400 /*Receive Finish Indication */ +#define SPI_ILAT_TFI        0x00000800 /*Transmit Finish Indication */ +/* SPI_ILATCL */ +#define SPI_ILAT_CLR_RUWMI  0x00000002 /*Receive Water Mark Interrupt */ +#define SPI_ILAT_CLR_TUWMI  0x00000004 /*Transmit Water Mark Interrupt */ +#define SPI_ILAT_CLR_ROI    0x00000010 /*Receive Over-Run Indication */ +#define SPI_ILAT_CLR_TUI    0x00000020 /*Transmit Under-Run Indication */ +#define SPI_ILAT_CLR_TCI    0x00000040 /*Transmit Collision Indication */ +#define SPI_ILAT_CLR_MFI    0x00000080 /*Mode Fault Indication */ +#define SPI_ILAT_CLR_RSI    0x00000100 /*Receive Start Indication */ +#define SPI_ILAT_CLR_TSI    0x00000200 /*Transmit Start Indication */ +#define SPI_ILAT_CLR_RFI    0x00000400 /*Receive Finish Indication */ +#define SPI_ILAT_CLR_TFI    0x00000800 /*Transmit Finish Indication */ + +/* + * bfin spi3 registers layout + */ +struct bfin_spi_regs { +	u32 revid; +	u32 control; +	u32 rx_control; +	u32 tx_control; +	u32 clock; +	u32 delay; +	u32 ssel; +	u32 rwc; +	u32 rwcr; +	u32 twc; +	u32 twcr; +	u32 reserved0; +	u32 emask; +	u32 emaskcl; +	u32 emaskst; +	u32 reserved1; +	u32 status; +	u32 elat; +	u32 elatcl; +	u32 reserved2; +	u32 rfifo; +	u32 reserved3; +	u32 tfifo; +}; + +#endif /* _SPI_CHANNEL_H_ */ diff --git a/arch/blackfin/include/asm/mach-common/bits/uart4.h b/arch/blackfin/include/asm/mach-common/bits/uart4.h new file mode 100644 index 000000000..37808de24 --- /dev/null +++ b/arch/blackfin/include/asm/mach-common/bits/uart4.h @@ -0,0 +1,66 @@ +/* + * UART4 Masks + */ + +#ifndef __BFIN_PERIPHERAL_UART4__ +#define __BFIN_PERIPHERAL_UART4__ + +/* UART_CONTROL */ +#define UEN			(1 << 0) +#define LOOP_ENA		(1 << 1) +#define UMOD			(3 << 4) +#define UMOD_UART		(0 << 4) +#define UMOD_MDB		(1 << 4) +#define UMOD_IRDA		(1 << 4) +#define WLS			(3 << 8) +#define WLS_5			(0 << 8) +#define WLS_6			(1 << 8) +#define WLS_7			(2 << 8) +#define WLS_8			(3 << 8) +#define STB			(1 << 12) +#define STBH			(1 << 13) +#define PEN			(1 << 14) +#define EPS			(1 << 15) +#define STP			(1 << 16) +#define FPE			(1 << 17) +#define FFE			(1 << 18) +#define SB			(1 << 19) +#define FCPOL			(1 << 22) +#define RPOLC			(1 << 23) +#define TPOLC			(1 << 24) +#define MRTS			(1 << 25) +#define XOFF			(1 << 26) +#define ARTS			(1 << 27) +#define ACTS			(1 << 28) +#define RFIT			(1 << 29) +#define RFRT			(1 << 30) + +/* UART_STATUS */ +#define DR			(1 << 0) +#define OE			(1 << 1) +#define PE			(1 << 2) +#define FE			(1 << 3) +#define BI			(1 << 4) +#define THRE			(1 << 5) +#define TEMT			(1 << 7) +#define TFI			(1 << 8) +#define ASTKY			(1 << 9) +#define ADDR			(1 << 10) +#define RO			(1 << 11) +#define SCTS			(1 << 12) +#define CTS			(1 << 16) +#define RFCS			(1 << 17) + +/* UART_EMASK */ +#define ERBFI			(1 << 0) +#define ETBEI			(1 << 1) +#define ELSI			(1 << 2) +#define EDSSI			(1 << 3) +#define EDTPTI			(1 << 4) +#define ETFI			(1 << 5) +#define ERFCI			(1 << 6) +#define EAWI			(1 << 7) +#define ERXS			(1 << 8) +#define ETXS			(1 << 9) + +#endif |