diff options
Diffstat (limited to 'arch/arm/mach-at91/include/mach/sama5d2.h')
-rw-r--r-- | arch/arm/mach-at91/include/mach/sama5d2.h | 320 |
1 files changed, 0 insertions, 320 deletions
diff --git a/arch/arm/mach-at91/include/mach/sama5d2.h b/arch/arm/mach-at91/include/mach/sama5d2.h deleted file mode 100644 index 90b566ffc4..0000000000 --- a/arch/arm/mach-at91/include/mach/sama5d2.h +++ /dev/null @@ -1,320 +0,0 @@ -// SPDX-License-Identifier: BSD-1-Clause -/* - * Chip-specific header file for the SAMA5D2 family - * - * Copyright (c) 2015, Atmel Corporation - * Copyright (c) 2019 Ahmad Fatoum, Pengutronix - * - * Common definitions. - * Based on SAMA5D2 datasheet: - * http://ww1.microchip.com/downloads/en/DeviceDoc/SAMA5D2-Series-Data-Sheet-DS60001476C.pdf - * - */ - -#ifndef SAMA5D2_H -#define SAMA5D2_H - -#include <asm/io.h> -#include <linux/sizes.h> -#include <linux/bitops.h> -#include <linux/bitfield.h> - -/* - * Peripheral identifiers/interrupts. (Table 18-9) - */ -#define SAMA5D2_ID_FIQ 0 /* FIQ Interrupt ID */ -/* 1 */ -#define SAMA5D2_ID_ARM 2 /* Performance Monitor Unit */ -#define SAMA5D2_ID_PIT 3 /* Periodic Interval Timer Interrupt */ -#define SAMA5D2_ID_WDT 4 /* Watchdog Timer Interrupt */ -#define SAMA5D2_ID_GMAC 5 /* Ethernet MAC */ -#define SAMA5D2_ID_XDMAC0 6 /* DMA Controller 0 */ -#define SAMA5D2_ID_XDMAC1 7 /* DMA Controller 1 */ -#define SAMA5D2_ID_ICM 8 /* Integrity Check Monitor */ -#define SAMA5D2_ID_AES 9 /* Advanced Encryption Standard */ -#define SAMA5D2_ID_AESB 10 /* AES bridge */ -#define SAMA5D2_ID_TDES 11 /* Triple Data Encryption Standard */ -#define SAMA5D2_ID_SHA 12 /* SHA Signature */ -#define SAMA5D2_ID_MPDDRC 13 /* MPDDR Controller */ -#define SAMA5D2_ID_MATRIX1 14 /* H32MX, 32-bit AHB Matrix */ -#define SAMA5D2_ID_MATRIX0 15 /* H64MX, 64-bit AHB Matrix */ -#define SAMA5D2_ID_SECUMOD 16 /* Secure Module */ -#define SAMA5D2_ID_HSMC 17 /* Multi-bit ECC interrupt */ -#define SAMA5D2_ID_PIOA 18 /* Parallel I/O Controller A */ -#define SAMA5D2_ID_FLEXCOM0 19 /* FLEXCOM0 */ -#define SAMA5D2_ID_FLEXCOM1 20 /* FLEXCOM1 */ -#define SAMA5D2_ID_FLEXCOM2 21 /* FLEXCOM2 */ -#define SAMA5D2_ID_FLEXCOM3 22 /* FLEXCOM3 */ -#define SAMA5D2_ID_FLEXCOM4 23 /* FLEXCOM4 */ -#define SAMA5D2_ID_UART0 24 /* UART0 */ -#define SAMA5D2_ID_UART1 25 /* UART1 */ -#define SAMA5D2_ID_UART2 26 /* UART2 */ -#define SAMA5D2_ID_UART3 27 /* UART3 */ -#define SAMA5D2_ID_UART4 28 /* UART4 */ -#define SAMA5D2_ID_TWI0 29 /* Two-wire Interface 0 */ -#define SAMA5D2_ID_TWI1 30 /* Two-wire Interface 1 */ -#define SAMA5D2_ID_SDMMC0 31 /* Secure Data Memory Card Controller 0 */ -#define SAMA5D2_ID_SDMMC1 32 /* Secure Data Memory Card Controller 1 */ -#define SAMA5D2_ID_SPI0 33 /* Serial Peripheral Interface 0 */ -#define SAMA5D2_ID_SPI1 34 /* Serial Peripheral Interface 1 */ -#define SAMA5D2_ID_TC0 35 /* Timer Counter 0 (ch.0,1,2) */ -#define SAMA5D2_ID_TC1 36 /* Timer Counter 1 (ch.3,4,5) */ -/* 37 */ -#define SAMA5D2_ID_PWM 38 /* Pulse Width Modulation Controller0 (ch. 0,1,2,3) */ -/* 39 */ -#define SAMA5D2_ID_ADC 40 /* Touch Screen ADC Controller */ -#define SAMA5D2_ID_UHPHS 41 /* USB Host High Speed */ -#define SAMA5D2_ID_UDPHS 42 /* USB Device High Speed */ -#define SAMA5D2_ID_SSC0 43 /* Serial Synchronous Controller 0 */ -#define SAMA5D2_ID_SSC1 44 /* Serial Synchronous Controller 1 */ -#define SAMA5D2_ID_LCDC 45 /* LCD Controller */ -#define SAMA5D2_ID_ISI 46 /* Image Sensor Interface */ -#define SAMA5D2_ID_TRNG 47 /* True Random Number Generator */ -#define SAMA5D2_ID_PDMIC 48 /* Pulse Density Modulation Interface Controller */ -#define SAMA5D2_ID_IRQ 49 /* IRQ Interrupt ID */ -#define SAMA5D2_ID_SFC 50 /* Fuse Controller */ -#define SAMA5D2_ID_SECURAM 51 /* Secure RAM */ -#define SAMA5D2_ID_QSPI0 52 /* QSPI0 */ -#define SAMA5D2_ID_QSPI1 53 /* QSPI1 */ -#define SAMA5D2_ID_I2SC0 54 /* Inter-IC Sound Controller 0 */ -#define SAMA5D2_ID_I2SC1 55 /* Inter-IC Sound Controller 1 */ -#define SAMA5D2_ID_CAN0_INT0 56 /* MCAN 0 Interrupt0 */ -#define SAMA5D2_ID_CAN1_INT0 57 /* MCAN 1 Interrupt0 */ -#define SAMA5D2_ID_PTC 58 /* Peripheral Touch Controller */ -#define SAMA5D2_ID_CLASSD 59 /* Audio Class D Amplifier */ -#define SAMA5D2_ID_SFR 60 /* Special Function Register */ -#define SAMA5D2_ID_SAIC 61 /* Secured Advanced Interrupt Controller */ -#define SAMA5D2_ID_AIC 62 /* Advanced Interrupt Controller */ -#define SAMA5D2_ID_L2CC 63 /* L2 Cache Controller */ -#define SAMA5D2_ID_CAN0_INT1 64 /* MCAN 0 Interrupt1 */ -#define SAMA5D2_ID_CAN1_INT1 65 /* MCAN 1 Interrupt1 */ -#define SAMA5D2_ID_GMAC_Q1 66 /* GMAC Queue 1 Interrupt */ -#define SAMA5D2_ID_GMAC_Q2 67 /* GMAC Queue 2 Interrupt */ -#define SAMA5D2_ID_PIOB 68 /* Parallel I/O Controller B */ -#define SAMA5D2_ID_PIOC 69 /* Parallel I/O Controller C */ -#define SAMA5D2_ID_PIOD 70 /* Parallel I/O Controller D */ -#define SAMA5D2_ID_SDMMC0_TIMER 71 /* Secure Data Memory Card Controller 0 */ -#define SAMA5D2_ID_SDMMC1_TIMER 72 /* Secure Data Memory Card Controller 1 */ -/* 73 */ -#define SAMA5D2_ID_SYS 74 /* System Controller Interrupt */ -#define SAMA5D2_ID_ACC 75 /* Analog Comparator */ -#define SAMA5D2_ID_RXLP 76 /* UART Low-Power */ -#define SAMA5D2_ID_SFRBU 77 /* Special Function Register BackUp */ -#define SAMA5D2_ID_CHIPID 78 /* Chip ID */ - -/* - * User Peripheral physical base addresses. - */ - -#define SAMA5D2_BASE_LCDC IOMEM(0xf0000000) -#define SAMA5D2_BASE_XDMAC1 IOMEM(0xf0004000) -#define SAMA5D2_BASE_HXISI IOMEM(0xf0008000) -#define SAMA5D2_BASE_MPDDRC IOMEM(0xf000c000) -#define SAMA5D2_BASE_XDMAC0 IOMEM(0xf0010000) -#define SAMA5D2_BASE_PMC IOMEM(0xf0014000) -#define SAMA5D2_BASE_MATRIX64 IOMEM(0xf0018000) /* MATRIX0 */ -#define SAMA5D2_BASE_AESB IOMEM(0xf001c000) -#define SAMA5D2_BASE_QSPI0 IOMEM(0xf0020000) -#define SAMA5D2_BASE_QSPI1 IOMEM(0xf0024000) -#define SAMA5D2_BASE_SHA IOMEM(0xf0028000) -#define SAMA5D2_BASE_AES IOMEM(0xf002c000) - -#define SAMA5D2_BASE_SPI0 IOMEM(0xf8000000) -#define SAMA5D2_BASE_SSC0 IOMEM(0xf8004000) -#define SAMA5D2_BASE_GMAC IOMEM(0xf8008000) -#define SAMA5D2_BASE_TC0 IOMEM(0xf800c000) -#define SAMA5D2_BASE_TC1 IOMEM(0xf8010000) -#define SAMA5D2_BASE_HSMC IOMEM(0xf8014000) -#define SAMA5D2_BASE_PDMIC IOMEM(0xf8018000) -#define SAMA5D2_BASE_UART0 IOMEM(0xf801c000) -#define SAMA5D2_BASE_UART1 IOMEM(0xf8020000) -#define SAMA5D2_BASE_UART2 IOMEM(0xf8024000) -#define SAMA5D2_BASE_TWI0 IOMEM(0xf8028000) -#define SAMA5D2_BASE_PWMC IOMEM(0xf802c000) -#define SAMA5D2_BASE_SFR IOMEM(0xf8030000) -#define SAMA5D2_BASE_FLEXCOM0 IOMEM(0xf8034000) -#define SAMA5D2_BASE_FLEXCOM1 IOMEM(0xf8038000) -#define SAMA5D2_BASE_SAIC IOMEM(0xf803c000) -#define SAMA5D2_BASE_ICM IOMEM(0xf8040000) -#define SAMA5D2_BASE_SECURAM IOMEM(0xf8044000) -#define SAMA5D2_BASE_SYSC IOMEM(0xf8048000) -#define SAMA5D2_BASE_ACC IOMEM(0xf804a000) -#define SAMA5D2_BASE_SFC IOMEM(0xf804c000) -#define SAMA5D2_BASE_I2SC0 IOMEM(0xf8050000) -#define SAMA5D2_BASE_CAN0 IOMEM(0xf8054000) - -#define SAMA5D2_BASE_SPI1 IOMEM(0xfc000000) -#define SAMA5D2_BASE_SSC1 IOMEM(0xfc004000) -#define SAMA5D2_BASE_UART3 IOMEM(0xfc008000) -#define SAMA5D2_BASE_UART4 IOMEM(0xfc00c000) -#define SAMA5D2_BASE_FLEXCOM2 IOMEM(0xfc010000) -#define SAMA5D2_BASE_FLEXCOM3 IOMEM(0xfc014000) -#define SAMA5D2_BASE_FLEXCOM4 IOMEM(0xfc018000) -#define SAMA5D2_BASE_TRNG IOMEM(0xfc01c000) -#define SAMA5D2_BASE_AIC IOMEM(0xfc020000) -#define SAMA5D2_BASE_TWI1 IOMEM(0xfc028000) -#define SAMA5D2_BASE_UDPHS IOMEM(0xfc02c000) -#define SAMA5D2_BASE_ADC IOMEM(0xfc030000) - -#define SAMA5D2_BASE_PIOA IOMEM(0xfc038000) -#define SAMA5D2_BASE_MATRIX32 IOMEM(0xfc03c000) /* MATRIX1 */ -#define SAMA5D2_BASE_SECUMOD IOMEM(0xfc040000) -#define SAMA5D2_BASE_TDES IOMEM(0xfc044000) -#define SAMA5D2_BASE_CLASSD IOMEM(0xfc048000) -#define SAMA5D2_BASE_I2SC1 IOMEM(0xfc04c000) -#define SAMA5D2_BASE_CAN1 IOMEM(0xfc050000) -#define SAMA5D2_BASE_SFRBU IOMEM(0xfc05c000) -#define SAMA5D2_BASE_CHIPID IOMEM(0xfc069000) - -/* - * Address Memory Space - */ -#define SAMA5D2_BASE_INTERNAL_MEM IOMEM(0x00000000) -#define SAMA5D2_BASE_CS0 IOMEM(0x10000000) -#define SAMA5D2_BASE_DDRCS IOMEM(0x20000000) -#define SAMA5D2_BASE_DDRCS_AES IOMEM(0x40000000) -#define SAMA5D2_BASE_CS1 IOMEM(0x60000000) -#define SAMA5D2_BASE_CS2 IOMEM(0x70000000) -#define SAMA5D2_BASE_CS3 IOMEM(0x80000000) -#define SAMA5D2_BASE_QSPI0_AES_MEM IOMEM(0x90000000) -#define SAMA5D2_BASE_QSPI1_AES_MEM IOMEM(0x98000000) -#define SAMA5D2_BASE_SDHC0 IOMEM(0xa0000000) -#define SAMA5D2_BASE_SDHC1 IOMEM(0xb0000000) -#define SAMA5D2_BASE_NFC_CMD_REG IOMEM(0xc0000000) -#define SAMA5D2_BASE_QSPI0_MEM IOMEM(0xd0000000) -#define SAMA5D2_BASE_QSPI1_MEM IOMEM(0xd8000000) -#define SAMA5D2_BASE_PERIPH IOMEM(0xf0000000) - -/* - * Internal Memories - */ -#define SAMA5D2_BASE_ROM IOMEM(0x00000000) /* ROM */ -#define SAMA5D2_BASE_ECC_ROM IOMEM(0x00060000) /* ECC ROM */ -#define SAMA5D2_BASE_NFC_SRAM 0x00100000 /* NFC SRAM */ -#define SAMA5D2_BASE_SRAM0 0x00200000 /* SRAM0 */ -#define SAMA5D2_BASE_SRAM1 0x00220000 /* SRAM1 */ -#define SAMA5D2_BASE_UDPHS_SRAM 0x00300000 /* UDPHS RAM */ -#define SAMA5D2_BASE_UHP_OHCI IOMEM(0x00400000) /* UHP OHCI */ -#define SAMA5D2_BASE_UHP_EHCI IOMEM(0x00500000) /* UHP EHCI */ -#define SAMA5D2_BASE_AXI_MATRIX IOMEM(0x00600000) /* AXI Maxtrix */ -#define SAMA5D2_BASE_DAP IOMEM(0x00700000) /* DAP */ -#define SAMA5D2_BASE_PTC IOMEM(0x00800000) /* PTC */ -#define SAMA5D2_BASE_L2CC IOMEM(0x00A00000) /* L2CC */ - -/* - * Other misc defines - */ -#define SAMA5D2_BASE_PMECC (SAMA5D2_BASE_HSMC + 0x70) -#define SAMA5D2_BASE_PMERRLOC (SAMA5D2_BASE_HSMC + 0x500) - -#define SAMA5D2_PMECC (SAMA5D2_BASE_PMECC - SAMA5D2_BASE_SYS) -#define SAMA5D2_PMERRLOC (SAMA5D2_BASE_PMERRLOC - SAMA5D2_BASE_SYS) - -#define SAMA5D2_BASE_PIOB (SAMA5D2_BASE_PIOA + 0x40) -#define SAMA5D2_BASE_PIOC (SAMA5D2_BASE_PIOB + 0x40) -#define SAMA5D2_BASE_PIOD (SAMA5D2_BASE_PIOC + 0x40) - -/* SYSC spawns */ -#define SAMA5D2_BASE_RSTC SAMA5D2_BASE_SYSC -#define SAMA5D2_BASE_SHDC (SAMA5D2_BASE_SYSC + 0x10) -#define SAMA5D2_BASE_PITC (SAMA5D2_BASE_SYSC + 0x30) -#define SAMA5D2_BASE_WDT (SAMA5D2_BASE_SYSC + 0x40) -#define SAMA5D2_BASE_SCKCR (SAMA5D2_BASE_SYSC + 0x50) -#define SAMA5D2_BASE_RTCC (SAMA5D2_BASE_SYSC + 0xb0) - -#define SAMA5D2_BASE_SMC (SAMA5D2_BASE_HSMC + 0x700) - -#define SAMA5D2_NUM_PIO 4 -#define SAMA5D2_NUM_TWI 2 - -/* AICREDIR Unlock Key */ -#define SAMA5D2_AICREDIR_KEY 0xB6D81C4D - -/* - * Matrix Slaves ID - */ -/* MATRIX0(H64MX) Matrix Slaves */ -/* Bridge from H64MX to AXIMX (Internal ROM, Cryto Library, PKCC RAM) */ -#define SAMA5D2_H64MX_SLAVE_BRIDGE_TO_AXIMX 0 -#define SAMA5D2_H64MX_SLAVE_PERI_BRIDGE 1 /* H64MX Peripheral Bridge */ -#define SAMA5D2_H64MX_SLAVE_DDR2_PORT_0 2 /* DDR2 Port0-AESOTF */ -#define SAMA5D2_H64MX_SLAVE_DDR2_PORT_1 3 /* DDR2 Port1 */ -#define SAMA5D2_H64MX_SLAVE_DDR2_PORT_2 4 /* DDR2 Port2 */ -#define SAMA5D2_H64MX_SLAVE_DDR2_PORT_3 5 /* DDR2 Port3 */ -#define SAMA5D2_H64MX_SLAVE_DDR2_PORT_4 6 /* DDR2 Port4 */ -#define SAMA5D2_H64MX_SLAVE_DDR2_PORT_5 7 /* DDR2 Port5 */ -#define SAMA5D2_H64MX_SLAVE_DDR2_PORT_6 8 /* DDR2 Port6 */ -#define SAMA5D2_H64MX_SLAVE_DDR2_PORT_7 9 /* DDR2 Port7 */ -#define SAMA5D2_H64MX_SLAVE_INTERNAL_SRAM 10 /* Internal SRAM 128K */ -#define SAMA5D2_H64MX_SLAVE_CACHE_L2 11 /* Internal SRAM 128K (Cache L2) */ -#define SAMA5D2_H64MX_SLAVE_QSPI0 12 /* QSPI0 */ -#define SAMA5D2_H64MX_SLAVE_QSPI1 13 /* QSPI1 */ -#define SAMA5D2_H64MX_SLAVE_AESB 14 /* AESB */ - -/* MATRIX1(H32MX) Matrix Slaves */ -#define SAMA5D2_H32MX_BRIDGE_TO_H64MX 0 /* Bridge from H32MX to H64MX */ -#define SAMA5D2_H32MX_PERI_BRIDGE_0 1 /* H32MX Peripheral Bridge 0 */ -#define SAMA5D2_H32MX_PERI_BRIDGE_1 2 /* H32MX Peripheral Bridge 1 */ -#define SAMA5D2_H32MX_EXTERNAL_EBI 3 /* External Bus Interface */ -#define SAMA5D2_H32MX_NFC_CMD_REG 3 /* NFC command Register */ -#define SAMA5D2_H32MX_NFC_SRAM 4 /* NFC SRAM */ -#define SAMA5D2_H32MX_USB 5 - -#define SAMA5D2_SRAM_BASE SAMA5D2_BASE_SRAM0 -#define SAMA5D2_SRAM_SIZE (128 * SZ_1K) - -static inline void __iomem *sama5d2_pio_map_bank(int bank, unsigned *id) -{ - switch(bank + 'A') { - case 'A': - *id = SAMA5D2_ID_PIOA; - return SAMA5D2_BASE_PIOA; - case 'B': - *id = SAMA5D2_ID_PIOB; - return SAMA5D2_BASE_PIOB; - case 'C': - *id = SAMA5D2_ID_PIOC; - return SAMA5D2_BASE_PIOC; - case 'D': - *id = SAMA5D2_ID_PIOD; - return SAMA5D2_BASE_PIOD; - } - - return NULL; -} - -#define SAMA5D2_BUREG_INDEX GENMASK(1, 0) -#define SAMA5D2_BUREG_VALID BIT(2) - -#define SAMA5D2_SFC_DR(x) (SAMA5D2_BASE_SFC + 0x20 + 4 * (x)) - -#define SAMA5D2_BOOTCFG_QSPI_0 GENMASK(1, 0) -#define SAMA5D2_BOOTCFG_QSPI_1 GENMASK(3, 2) -#define SAMA5D2_BOOTCFG_SPI_0 GENMASK(5, 4) -#define SAMA5D2_BOOTCFG_SPI_1 GENMASK(7, 6) -#define SAMA5D2_BOOTCFG_NFC GENMASK(9, 8) -#define SAMA5D2_BOOTCFG_SDMMC_0 BIT(10) -#define SAMA5D2_BOOTCFG_SDMMC_1 BIT(11) -#define SAMA5D2_BOOTCFG_UART GENMASK(15, 12) -#define SAMA5D2_BOOTCFG_JTAG GENMASK(17, 16) -#define SAMA5D2_BOOTCFG_EXT_MEM_BOOT_EN BIT(18) -#define SAMA5D2_BOOTCFG_QSPI_XIP BIT(21) -#define SAMA5D2_DISABLE_BSC_CR BIT(22) -#define SAMA5D2_DISABLE_MONITOR BIT(24) -#define SAMA5D2_SECURE_MODE BIT(29) - -static inline u32 sama5d2_bootcfg(void) -{ - u32 __iomem *bureg = SAMA5D2_BASE_SECURAM + 0x1400; - u32 bsc_cr = readl(SAMA5D2_BASE_SYSC + 0x54); - u32 __iomem *bootcfg; - - if (bsc_cr & SAMA5D2_BUREG_VALID) - bootcfg = &bureg[FIELD_GET(SAMA5D2_BUREG_INDEX, bsc_cr)]; - else - bootcfg = SAMA5D2_SFC_DR(512 / 32); - - return readl(bootcfg); -} - -#endif |