uboot/arch/arm/include/asm/arch-stm32f7/stm32.h
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2016
   3 * Vikas Manocha, STMicroelectronics, <vikas.manocha@st.com>
   4 *
   5 * SPDX-License-Identifier:     GPL-2.0+
   6 */
   7
   8#ifndef _ASM_ARCH_HARDWARE_H
   9#define _ASM_ARCH_HARDWARE_H
  10
  11/* STM32F746 */
  12#define ITCM_FLASH_BASE         0x00200000UL
  13#define AXIM_FLASH_BASE         0x08000000UL
  14
  15#define ITCM_SRAM_BASE          0x00000000UL
  16#define DTCM_SRAM_BASE          0x20000000UL
  17#define SRAM1_BASE              0x20010000UL
  18#define SRAM2_BASE              0x2004C000UL
  19
  20#define PERIPH_BASE             0x40000000UL
  21
  22#define APB1_PERIPH_BASE        (PERIPH_BASE + 0x00000000)
  23#define APB2_PERIPH_BASE        (PERIPH_BASE + 0x00010000)
  24#define AHB1_PERIPH_BASE        (PERIPH_BASE + 0x00020000)
  25#define AHB2_PERIPH_BASE        (PERIPH_BASE + 0x10000000)
  26#define AHB3_PERIPH_BASE        (PERIPH_BASE + 0x20000000)
  27
  28#define TIM2_BASE               (APB1_PERIPH_BASE + 0x0000)
  29#define USART2_BASE             (APB1_PERIPH_BASE + 0x4400)
  30#define USART3_BASE             (APB1_PERIPH_BASE + 0x4800)
  31#define PWR_BASE                (APB1_PERIPH_BASE + 0x7000)
  32
  33#define USART1_BASE             (APB2_PERIPH_BASE + 0x1000)
  34#define USART6_BASE             (APB2_PERIPH_BASE + 0x1400)
  35
  36#define STM32_GPIOA_BASE        (AHB1_PERIPH_BASE + 0x0000)
  37#define STM32_GPIOB_BASE        (AHB1_PERIPH_BASE + 0x0400)
  38#define STM32_GPIOC_BASE        (AHB1_PERIPH_BASE + 0x0800)
  39#define STM32_GPIOD_BASE        (AHB1_PERIPH_BASE + 0x0C00)
  40#define STM32_GPIOE_BASE        (AHB1_PERIPH_BASE + 0x1000)
  41#define STM32_GPIOF_BASE        (AHB1_PERIPH_BASE + 0x1400)
  42#define STM32_GPIOG_BASE        (AHB1_PERIPH_BASE + 0x1800)
  43#define STM32_GPIOH_BASE        (AHB1_PERIPH_BASE + 0x1C00)
  44#define STM32_GPIOI_BASE        (AHB1_PERIPH_BASE + 0x2000)
  45#define STM32_GPIOJ_BASE        (AHB1_PERIPH_BASE + 0x2400)
  46#define STM32_GPIOK_BASE        (AHB1_PERIPH_BASE + 0x2800)
  47#define RCC_BASE                (AHB1_PERIPH_BASE + 0x3800)
  48#define FLASH_CNTL_BASE         (AHB1_PERIPH_BASE + 0x3C00)
  49
  50
  51#define SDRAM_FMC_BASE          (AHB3_PERIPH_BASE + 0x4A0000140)
  52
  53static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = {
  54        [0 ... 3] =     32 * 1024,
  55        [4] =           128 * 1024,
  56        [5 ... 7] =     256 * 1024
  57};
  58
  59enum clock {
  60        CLOCK_CORE,
  61        CLOCK_AHB,
  62        CLOCK_APB1,
  63        CLOCK_APB2
  64};
  65#define STM32_BUS_MASK          0xFFFF0000
  66
  67struct stm32_rcc_regs {
  68        u32 cr;         /* RCC clock control */
  69        u32 pllcfgr;    /* RCC PLL configuration */
  70        u32 cfgr;       /* RCC clock configuration */
  71        u32 cir;        /* RCC clock interrupt */
  72        u32 ahb1rstr;   /* RCC AHB1 peripheral reset */
  73        u32 ahb2rstr;   /* RCC AHB2 peripheral reset */
  74        u32 ahb3rstr;   /* RCC AHB3 peripheral reset */
  75        u32 rsv0;
  76        u32 apb1rstr;   /* RCC APB1 peripheral reset */
  77        u32 apb2rstr;   /* RCC APB2 peripheral reset */
  78        u32 rsv1[2];
  79        u32 ahb1enr;    /* RCC AHB1 peripheral clock enable */
  80        u32 ahb2enr;    /* RCC AHB2 peripheral clock enable */
  81        u32 ahb3enr;    /* RCC AHB3 peripheral clock enable */
  82        u32 rsv2;
  83        u32 apb1enr;    /* RCC APB1 peripheral clock enable */
  84        u32 apb2enr;    /* RCC APB2 peripheral clock enable */
  85        u32 rsv3[2];
  86        u32 ahb1lpenr;  /* RCC AHB1 periph clk enable in low pwr mode */
  87        u32 ahb2lpenr;  /* RCC AHB2 periph clk enable in low pwr mode */
  88        u32 ahb3lpenr;  /* RCC AHB3 periph clk enable in low pwr mode */
  89        u32 rsv4;
  90        u32 apb1lpenr;  /* RCC APB1 periph clk enable in low pwr mode */
  91        u32 apb2lpenr;  /* RCC APB2 periph clk enable in low pwr mode */
  92        u32 rsv5[2];
  93        u32 bdcr;       /* RCC Backup domain control */
  94        u32 csr;        /* RCC clock control & status */
  95        u32 rsv6[2];
  96        u32 sscgr;      /* RCC spread spectrum clock generation */
  97        u32 plli2scfgr; /* RCC PLLI2S configuration */
  98        u32 pllsaicfgr;
  99        u32 dckcfgr;
 100};
 101#define STM32_RCC               ((struct stm32_rcc_regs *)RCC_BASE)
 102
 103struct stm32_pwr_regs {
 104        u32 cr1;   /* power control register 1 */
 105        u32 csr1;  /* power control/status register 2 */
 106        u32 cr2;   /* power control register 2 */
 107        u32 csr2;  /* power control/status register 2 */
 108};
 109#define STM32_PWR               ((struct stm32_pwr_regs *)PWR_BASE)
 110
 111int configure_clocks(void);
 112unsigned long clock_get(enum clock clck);
 113void stm32_flash_latency_cfg(int latency);
 114
 115#endif /* _ASM_ARCH_HARDWARE_H */
 116