
On 3/27/20 9:55 AM, Patrice CHOTARD wrote:
Hi Marek
Hi,
[...]
diff --git a/board/dhelectronics/dh_stm32mp1/board.c b/board/dhelectronics/dh_stm32mp1/board.c index b663696983..be55242799 100644 --- a/board/dhelectronics/dh_stm32mp1/board.c +++ b/board/dhelectronics/dh_stm32mp1/board.c @@ -376,6 +376,32 @@ static void sysconf_init(void) #endif }
+static void board_init_fmc2(void) +{ +#define STM32_FMC2_BCR1 0x0 +#define STM32_FMC2_BTR1 0x4 +#define STM32_FMC2_BWTR1 0x104 +#define STM32_FMC2_BCR(x) ((x) * 0x8 + STM32_FMC2_BCR1) +#define STM32_FMC2_BTR(x) ((x) * 0x8 + STM32_FMC2_BTR1) +#define STM32_FMC2_BWTR(x) ((x) * 0x8 + STM32_FMC2_BWTR1)
All these defines can be put in ./arch/arm/mach-stm32mp/include/mach/stm32.h
No, we need a driver for FMC2, that's where they should go. This is a stopgap solution.
+#define RCC_MP_AHB6RSTCLRR 0x218 +#define RCC_MP_AHB6ENSETR 0x19c
- /* Set up FMC2 bus for KS8851-16MLL and X11 SRAM */
- writel(BIT(12), STM32_RCC_BASE + RCC_MP_AHB6RSTCLRR);
- writel(BIT(12), STM32_RCC_BASE + RCC_MP_AHB6ENSETR);
Add a define for AHB6RSTCLRR and AHB6ENSETR BIT(12)
Maybe you should fix board/stm32mp1 and arch/arm/mach-stm32mp to do the same ? :)
- /* KS8851-16MLL */
- writel(0x000010db, STM32_FMC2_BASE + STM32_FMC2_BCR(1));
- writel(0xc0022222, STM32_FMC2_BASE + STM32_FMC2_BTR(1));
- /* AS7C34098 SRAM on X11 */
- writel(0x000010db, STM32_FMC2_BASE + STM32_FMC2_BCR(3));
- writel(0xc0022222, STM32_FMC2_BASE + STM32_FMC2_BTR(3));
Avoid to put hardcoded value, it difficult to see what is done, add defines.
- setbits_le32(STM32_FMC2_BASE + STM32_FMC2_BCR1, BIT(31));
Add a define for FMC2_BCR1 BIT(31) , it will be easier to understand what is done
OK