summaryrefslogtreecommitdiff
path: root/arch/arm/include/asm/arch-stm32f7
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/include/asm/arch-stm32f7')
-rw-r--r--arch/arm/include/asm/arch-stm32f7/fmc.h9
-rw-r--r--arch/arm/include/asm/arch-stm32f7/gpt.h6
-rw-r--r--arch/arm/include/asm/arch-stm32f7/rcc.h77
-rw-r--r--arch/arm/include/asm/arch-stm32f7/stm32.h14
-rw-r--r--arch/arm/include/asm/arch-stm32f7/stm32_periph.h10
-rw-r--r--arch/arm/include/asm/arch-stm32f7/syscfg.h38
6 files changed, 95 insertions, 59 deletions
diff --git a/arch/arm/include/asm/arch-stm32f7/fmc.h b/arch/arm/include/asm/arch-stm32f7/fmc.h
index 7dd5077..4741e5a 100644
--- a/arch/arm/include/asm/arch-stm32f7/fmc.h
+++ b/arch/arm/include/asm/arch-stm32f7/fmc.h
@@ -24,8 +24,7 @@ struct stm32_fmc_regs {
/*
* FMC registers base
*/
-#define STM32_SDRAM_FMC_BASE 0xA0000140
-#define STM32_SDRAM_FMC ((struct stm32_fmc_regs *)STM32_SDRAM_FMC_BASE)
+#define STM32_SDRAM_FMC ((struct stm32_fmc_regs *)SDRAM_FMC_BASE)
/* Control register SDCR */
#define FMC_SDCR_RPIPE_SHIFT 13 /* RPIPE bit shift */
@@ -58,12 +57,12 @@ struct stm32_fmc_regs {
#define FMC_SDCMR_MODE_SELFREFRESH 5
#define FMC_SDCMR_MODE_POWERDOWN 6
-#define FMC_SDCMR_BANK_1 (1 << 4)
-#define FMC_SDCMR_BANK_2 (1 << 3)
+#define FMC_SDCMR_BANK_1 BIT(4)
+#define FMC_SDCMR_BANK_2 BIT(3)
#define FMC_SDCMR_MODE_REGISTER_SHIFT 9
-#define FMC_SDSR_BUSY (1 << 5)
+#define FMC_SDSR_BUSY BIT(5)
#define FMC_BUSY_WAIT() do { \
__asm__ __volatile__ ("dsb" : : : "memory"); \
diff --git a/arch/arm/include/asm/arch-stm32f7/gpt.h b/arch/arm/include/asm/arch-stm32f7/gpt.h
index 903bdf6..e9e0c14 100644
--- a/arch/arm/include/asm/arch-stm32f7/gpt.h
+++ b/arch/arm/include/asm/arch-stm32f7/gpt.h
@@ -38,8 +38,8 @@ struct gpt_regs *const gpt1_regs_ptr =
(struct gpt_regs *)TIM2_BASE;
/* Timer control1 register */
-#define GPT_CR1_CEN 0x0001
-#define GPT_MODE_AUTO_RELOAD (1 << 7)
+#define GPT_CR1_CEN BIT(0)
+#define GPT_MODE_AUTO_RELOAD BIT(7)
/* Auto reload register for free running config */
#define GPT_FREE_RUNNING 0xFFFFFFFF
@@ -48,6 +48,6 @@ struct gpt_regs *const gpt1_regs_ptr =
#define CONFIG_STM32_HZ 1000
/* Timer Event Generation registers */
-#define TIM_EGR_UG (1 << 0)
+#define TIM_EGR_UG BIT(0)
#endif
diff --git a/arch/arm/include/asm/arch-stm32f7/rcc.h b/arch/arm/include/asm/arch-stm32f7/rcc.h
index 8bfb7b6..0f8d50b 100644
--- a/arch/arm/include/asm/arch-stm32f7/rcc.h
+++ b/arch/arm/include/asm/arch-stm32f7/rcc.h
@@ -8,57 +8,44 @@
#ifndef _STM32_RCC_H
#define _STM32_RCC_H
-#define RCC_CR 0x00 /* clock control */
-#define RCC_PLLCFGR 0x04 /* PLL configuration */
-#define RCC_CFGR 0x08 /* clock configuration */
-#define RCC_CIR 0x0C /* clock interrupt */
-#define RCC_AHB1RSTR 0x10 /* AHB1 peripheral reset */
-#define RCC_AHB2RSTR 0x14 /* AHB2 peripheral reset */
-#define RCC_AHB3RSTR 0x18 /* AHB3 peripheral reset */
-#define RCC_APB1RSTR 0x20 /* APB1 peripheral reset */
-#define RCC_APB2RSTR 0x24 /* APB2 peripheral reset */
-#define RCC_AHB1ENR 0x30 /* AHB1 peripheral clock enable */
-#define RCC_AHB2ENR 0x34 /* AHB2 peripheral clock enable */
-#define RCC_AHB3ENR 0x38 /* AHB3 peripheral clock enable */
-#define RCC_APB1ENR 0x40 /* APB1 peripheral clock enable */
-#define RCC_APB2ENR 0x44 /* APB2 peripheral clock enable */
-#define RCC_AHB1LPENR 0x50 /* periph clk enable in low pwr mode */
-#define RCC_AHB2LPENR 0x54 /* AHB2 periph clk enable in low pwr mode */
-#define RCC_AHB3LPENR 0x58 /* AHB3 periph clk enable in low pwr mode */
-#define RCC_APB1LPENR 0x60 /* APB1 periph clk enable in low pwr mode */
-#define RCC_APB2LPENR 0x64 /* APB2 periph clk enable in low pwr mode */
-#define RCC_BDCR 0x70 /* Backup domain control */
-#define RCC_CSR 0x74 /* clock control & status */
-#define RCC_SSCGR 0x80 /* spread spectrum clock generation */
-#define RCC_PLLI2SCFGR 0x84 /* PLLI2S configuration */
-#define RCC_PLLSAICFG 0x88 /* PLLSAI configuration */
-#define RCC_DCKCFG1 0x8C /* dedicated clocks configuration register */
-#define RCC_DCKCFG2 0x90 /* dedicated clocks configuration register */
+/*
+ * RCC AHB1ENR specific definitions
+ */
+#define RCC_AHB1ENR_GPIO_A_EN BIT(0)
+#define RCC_AHB1ENR_GPIO_B_EN BIT(1)
+#define RCC_AHB1ENR_GPIO_C_EN BIT(2)
+#define RCC_AHB1ENR_GPIO_D_EN BIT(3)
+#define RCC_AHB1ENR_GPIO_E_EN BIT(4)
+#define RCC_AHB1ENR_GPIO_F_EN BIT(5)
+#define RCC_AHB1ENR_GPIO_G_EN BIT(6)
+#define RCC_AHB1ENR_GPIO_H_EN BIT(7)
+#define RCC_AHB1ENR_GPIO_I_EN BIT(8)
+#define RCC_AHB1ENR_GPIO_J_EN BIT(9)
+#define RCC_AHB1ENR_GPIO_K_EN BIT(10)
+#define RCC_AHB1ENR_ETHMAC_EN BIT(25)
+#define RCC_AHB1ENR_ETHMAC_TX_EN BIT(26)
+#define RCC_AHB1ENR_ETHMAC_RX_EN BIT(27)
+#define RCC_AHB1ENR_ETHMAC_PTP_EN BIT(28)
-#define RCC_APB1ENR_TIM2EN (1 << 0)
-#define RCC_APB1ENR_PWREN (1 << 28)
+/*
+ * RCC AHB3ENR specific definitions
+ */
+#define RCC_AHB3ENR_FMC_EN BIT(0)
+#define RCC_AHB3ENR_QSPI_EN BIT(1)
/*
- * RCC USART specific definitions
+ * RCC APB1ENR specific definitions
*/
-#define RCC_ENR_USART1EN (1 << 4)
-#define RCC_ENR_USART2EN (1 << 17)
-#define RCC_ENR_USART3EN (1 << 18)
-#define RCC_ENR_USART6EN (1 << 5)
+#define RCC_APB1ENR_TIM2EN BIT(0)
+#define RCC_APB1ENR_USART2EN BIT(17)
+#define RCC_APB1ENR_USART3EN BIT(18)
+#define RCC_APB1ENR_PWREN BIT(28)
/*
- * RCC GPIO specific definitions
+ * RCC APB2ENR specific definitions
*/
-#define RCC_ENR_GPIO_A_EN (1 << 0)
-#define RCC_ENR_GPIO_B_EN (1 << 1)
-#define RCC_ENR_GPIO_C_EN (1 << 2)
-#define RCC_ENR_GPIO_D_EN (1 << 3)
-#define RCC_ENR_GPIO_E_EN (1 << 4)
-#define RCC_ENR_GPIO_F_EN (1 << 5)
-#define RCC_ENR_GPIO_G_EN (1 << 6)
-#define RCC_ENR_GPIO_H_EN (1 << 7)
-#define RCC_ENR_GPIO_I_EN (1 << 8)
-#define RCC_ENR_GPIO_J_EN (1 << 9)
-#define RCC_ENR_GPIO_K_EN (1 << 10)
+#define RCC_APB2ENR_USART1EN BIT(4)
+#define RCC_APB2ENR_USART6EN BIT(5)
+#define RCC_APB2ENR_SYSCFGEN BIT(14)
#endif
diff --git a/arch/arm/include/asm/arch-stm32f7/stm32.h b/arch/arm/include/asm/arch-stm32f7/stm32.h
index de55ae5..14e3398 100644
--- a/arch/arm/include/asm/arch-stm32f7/stm32.h
+++ b/arch/arm/include/asm/arch-stm32f7/stm32.h
@@ -32,6 +32,7 @@
#define USART1_BASE (APB2_PERIPH_BASE + 0x1000)
#define USART6_BASE (APB2_PERIPH_BASE + 0x1400)
+#define STM32_SYSCFG_BASE (APB2_PERIPH_BASE + 0x3800)
#define STM32_GPIOA_BASE (AHB1_PERIPH_BASE + 0x0000)
#define STM32_GPIOB_BASE (AHB1_PERIPH_BASE + 0x0400)
@@ -48,7 +49,7 @@
#define FLASH_CNTL_BASE (AHB1_PERIPH_BASE + 0x3C00)
-#define SDRAM_FMC_BASE (AHB3_PERIPH_BASE + 0x4A0000140)
+#define SDRAM_FMC_BASE (AHB3_PERIPH_BASE + 0x40000140)
static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = {
[0 ... 3] = 32 * 1024,
@@ -62,7 +63,7 @@ enum clock {
CLOCK_APB1,
CLOCK_APB2
};
-#define STM32_BUS_MASK 0xFFFF0000
+#define STM32_BUS_MASK GENMASK(31, 16)
struct stm32_rcc_regs {
u32 cr; /* RCC clock control */
@@ -95,11 +96,16 @@ struct stm32_rcc_regs {
u32 rsv6[2];
u32 sscgr; /* RCC spread spectrum clock generation */
u32 plli2scfgr; /* RCC PLLI2S configuration */
- u32 pllsaicfgr;
- u32 dckcfgr;
+ u32 pllsaicfgr; /* PLLSAI configuration */
+ u32 dckcfgr; /* dedicated clocks configuration register */
};
#define STM32_RCC ((struct stm32_rcc_regs *)RCC_BASE)
+struct stm32_rcc_ext_f7_regs {
+ u32 dckcfgr2; /* dedicated clocks configuration register */
+};
+#define STM32_RCC_EXT_F7 ((struct stm32_rcc_ext_f7_regs *) (RCC_BASE + sizeof(struct stm32_rcc_regs)))
+
struct stm32_pwr_regs {
u32 cr1; /* power control register 1 */
u32 csr1; /* power control/status register 2 */
diff --git a/arch/arm/include/asm/arch-stm32f7/stm32_periph.h b/arch/arm/include/asm/arch-stm32f7/stm32_periph.h
index 38adc4e..3c5604a 100644
--- a/arch/arm/include/asm/arch-stm32f7/stm32_periph.h
+++ b/arch/arm/include/asm/arch-stm32f7/stm32_periph.h
@@ -15,8 +15,9 @@
*
*/
enum periph_id {
- UART1_GPIOA_9_10 = 0,
- UART2_GPIOD_5_6,
+ PERIPH_ID_USART1 = 37,
+
+ PERIPH_ID_QUADSPI = 92,
};
enum periph_clock {
@@ -33,6 +34,11 @@ enum periph_clock {
GPIO_I_CLOCK_CFG,
GPIO_J_CLOCK_CFG,
GPIO_K_CLOCK_CFG,
+ SYSCFG_CLOCK_CFG,
+ TIMER2_CLOCK_CFG,
+ FMC_CLOCK_CFG,
+ STMMAC_CLOCK_CFG,
+ QSPI_CLOCK_CFG,
};
#endif /* __ASM_ARM_ARCH_PERIPH_H */
diff --git a/arch/arm/include/asm/arch-stm32f7/syscfg.h b/arch/arm/include/asm/arch-stm32f7/syscfg.h
new file mode 100644
index 0000000..49e78f2
--- /dev/null
+++ b/arch/arm/include/asm/arch-stm32f7/syscfg.h
@@ -0,0 +1,38 @@
+/*
+ * (C) Copyright 2016
+ * Michael Kurz, michi.kurz@gmail.com.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _STM32_SYSCFG_H
+#define _STM32_SYSCFG_H
+
+struct stm32_syscfg_regs {
+ u32 memrmp;
+ u32 pmc;
+ u32 exticr1;
+ u32 exticr2;
+ u32 exticr3;
+ u32 exticr4;
+ u32 cmpcr;
+};
+
+/*
+ * SYSCFG registers base
+ */
+#define STM32_SYSCFG ((struct stm32_syscfg_regs *)STM32_SYSCFG_BASE)
+
+/* SYSCFG memory remap register */
+#define SYSCFG_MEMRMP_MEM_BOOT BIT(0)
+#define SYSCFG_MEMRMP_SWP_FMC BIT(10)
+
+/* SYSCFG peripheral mode configuration register */
+#define SYSCFG_PMC_ADCXDC2 BIT(16)
+#define SYSCFG_PMC_MII_RMII_SEL BIT(23)
+
+/* Compensation cell control register */
+#define SYSCFG_CMPCR_CMP_PD BIT(0)
+#define SYSCFG_CMPCR_READY BIT(8)
+
+#endif