@ -11,76 +11,50 @@
# include <asm/arch/stm32.h>
# include <asm/arch/stm32_periph.h>
# define RCC_CR_HSION (1 << 0)
# define RCC_CR_HSEON (1 << 16)
# define RCC_CR_HSERDY (1 << 17)
# define RCC_CR_HSEBYP (1 << 18)
# define RCC_CR_CSSON (1 << 19)
# define RCC_CR_PLLON (1 << 24)
# define RCC_CR_PLLRDY (1 << 25)
# define RCC_CR_HSION BIT (0)
# define RCC_CR_HSEON BIT (16)
# define RCC_CR_HSERDY BIT (17)
# define RCC_CR_HSEBYP BIT (18)
# define RCC_CR_CSSON BIT (19)
# define RCC_CR_PLLON BIT (24)
# define RCC_CR_PLLRDY BIT (25)
# define RCC_PLLCFGR_PLLM_MASK 0x3F
# define RCC_PLLCFGR_PLLN_MASK 0x7FC0
# define RCC_PLLCFGR_PLLP_MASK 0x30000
# define RCC_PLLCFGR_PLLQ_MASK 0xF000000
# define RCC_PLLCFGR_PLLSRC (1 << 22)
# define RCC_PLLCFGR_PLLM_SHIFT 0
# define RCC_PLLCFGR_PLLN_SHIFT 6
# define RCC_PLLCFGR_PLLP_SHIFT 16
# define RCC_PLLCFGR_PLLQ_SHIFT 24
# define RCC_PLLCFGR_PLLM_MASK GENMASK(5, 0)
# define RCC_PLLCFGR_PLLN_MASK GENMASK(14, 6)
# define RCC_PLLCFGR_PLLP_MASK GENMASK(17, 16)
# define RCC_PLLCFGR_PLLQ_MASK GENMASK(27, 24)
# define RCC_PLLCFGR_PLLSRC BIT (22)
# define RCC_PLLCFGR_PLLM_SHIFT 0
# define RCC_PLLCFGR_PLLN_SHIFT 6
# define RCC_PLLCFGR_PLLP_SHIFT 16
# define RCC_PLLCFGR_PLLQ_SHIFT 24
# define RCC_CFGR_AHB_PSC_MASK 0xF0
# define RCC_CFGR_APB1_PSC_MASK 0x1C00
# define RCC_CFGR_APB2_PSC_MASK 0xE000
# define RCC_CFGR_SW0 (1 << 0)
# define RCC_CFGR_SW1 (1 << 1)
# define RCC_CFGR_SW_MASK 0x3
# define RCC_CFGR_SW_HSI 0
# define RCC_CFGR_SW_HSE RCC_CFGR_SW0
# define RCC_CFGR_SW_PLL RCC_CFGR_SW1
# define RCC_CFGR_SWS0 (1 << 2)
# define RCC_CFGR_SWS1 (1 << 3)
# define RCC_CFGR_SWS_MASK 0xC
# define RCC_CFGR_SWS_HSI 0
# define RCC_CFGR_SWS_HSE RCC_CFGR_SWS0
# define RCC_CFGR_SWS_PLL RCC_CFGR_SWS1
# define RCC_CFGR_HPRE_SHIFT 4
# define RCC_CFGR_PPRE1_SHIFT 10
# define RCC_CFGR_PPRE2_SHIFT 13
# define RCC_APB1ENR_PWREN (1 << 28)
/*
* RCC USART 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_CFGR_AHB_PSC_MASK GENMASK(7, 4)
# define RCC_CFGR_APB1_PSC_MASK GENMASK(12, 10)
# define RCC_CFGR_APB2_PSC_MASK GENMASK(15, 13)
# define RCC_CFGR_SW0 BIT(0)
# define RCC_CFGR_SW1 BIT(1)
# define RCC_CFGR_SW_MASK GENMASK(1, 0)
# define RCC_CFGR_SW_HSI 0
# define RCC_CFGR_SW_HSE RCC_CFGR_SW0
# define RCC_CFGR_SW_PLL RCC_CFGR_SW1
# define RCC_CFGR_SWS0 BIT(2)
# define RCC_CFGR_SWS1 BIT(3)
# define RCC_CFGR_SWS_MASK GENMASK(3, 2)
# define RCC_CFGR_SWS_HSI 0
# define RCC_CFGR_SWS_HSE RCC_CFGR_SWS0
# define RCC_CFGR_SWS_PLL RCC_CFGR_SWS1
# define RCC_CFGR_HPRE_SHIFT 4
# define RCC_CFGR_PPRE1_SHIFT 10
# define RCC_CFGR_PPRE2_SHIFT 13
/*
* Offsets of some PWR registers
*/
# define PWR_CR1_ODEN (1 << 16)
# define PWR_CR1_ODSWEN (1 << 17)
# define PWR_CSR1_ODRDY (1 << 16)
# define PWR_CSR1_ODSWRDY (1 << 17)
/*
* RCC GPIO 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 PWR_CR1_ODEN BIT(16)
# define PWR_CR1_ODSWEN BIT(17)
# define PWR_CSR1_ODRDY BIT(16)
# define PWR_CSR1_ODSWRDY BIT(17)
struct pll_psc {
u8 pll_m ;
@ -92,21 +66,21 @@ struct pll_psc {
u8 apb2_psc ;
} ;
# define AHB_PSC_1 0
# define AHB_PSC_2 0x8
# define AHB_PSC_4 0x9
# define AHB_PSC_8 0xA
# define AHB_PSC_16 0xB
# define AHB_PSC_64 0xC
# define AHB_PSC_128 0xD
# define AHB_PSC_256 0xE
# define AHB_PSC_512 0xF
# define AHB_PSC_1 0
# define AHB_PSC_2 0x8
# define AHB_PSC_4 0x9
# define AHB_PSC_8 0xA
# define AHB_PSC_16 0xB
# define AHB_PSC_64 0xC
# define AHB_PSC_128 0xD
# define AHB_PSC_256 0xE
# define AHB_PSC_512 0xF
# define APB_PSC_1 0
# define APB_PSC_2 0x4
# define APB_PSC_4 0x5
# define APB_PSC_8 0x6
# define APB_PSC_16 0x7
# define APB_PSC_1 0
# define APB_PSC_2 0x4
# define APB_PSC_4 0x5
# define APB_PSC_8 0x6
# define APB_PSC_16 0x7
# if !defined(CONFIG_STM32_HSE_HZ)
# error "CONFIG_STM32_HSE_HZ not defined!"
@ -243,40 +217,40 @@ void clock_setup(int peripheral)
{
switch ( peripheral ) {
case USART1_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_APB2ENR , RCC_ENR_USART1EN ) ;
setbits_le32 ( & STM32_RCC - > apb2enr , RCC_APB2 ENR_USART1EN ) ;
break ;
case GPIO_A_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_A_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_A_EN ) ;
break ;
case GPIO_B_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_B_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_B_EN ) ;
break ;
case GPIO_C_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_C_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_C_EN ) ;
break ;
case GPIO_D_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_D_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_D_EN ) ;
break ;
case GPIO_E_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_E_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_E_EN ) ;
break ;
case GPIO_F_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_F_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_F_EN ) ;
break ;
case GPIO_G_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_G_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_G_EN ) ;
break ;
case GPIO_H_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_H_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_H_EN ) ;
break ;
case GPIO_I_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_I_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_I_EN ) ;
break ;
case GPIO_J_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_J_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_J_EN ) ;
break ;
case GPIO_K_CLOCK_CFG :
setbits_le32 ( RCC_BASE + RCC_AHB1ENR , RCC_ENR_GPIO_K_EN ) ;
setbits_le32 ( & STM32_RCC - > ahb1enr , RCC_AHB1 ENR_GPIO_K_EN ) ;
break ;
default :
break ;