xref: /rk3399_rockchip-uboot/arch/arm/cpu/arm926ejs/spear/cpu.c (revision e8d056989a7302eda4e3ed263a375fd175a4e15f)
1962d026bSVipin KUMAR /*
2962d026bSVipin KUMAR  * (C) Copyright 2010
3962d026bSVipin KUMAR  * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com.
4962d026bSVipin KUMAR  *
51a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
6962d026bSVipin KUMAR  */
7962d026bSVipin KUMAR 
8962d026bSVipin KUMAR #include <common.h>
9962d026bSVipin KUMAR #include <asm/io.h>
10962d026bSVipin KUMAR #include <asm/arch/hardware.h>
11962d026bSVipin KUMAR #include <asm/arch/spr_misc.h>
12962d026bSVipin KUMAR 
13962d026bSVipin KUMAR int arch_cpu_init(void)
14962d026bSVipin KUMAR {
15962d026bSVipin KUMAR 	struct misc_regs *const misc_p =
16962d026bSVipin KUMAR 	    (struct misc_regs *)CONFIG_SPEAR_MISCBASE;
177c885a0eSShiraz Hashim 	u32 periph1_clken, periph_clk_cfg;
18962d026bSVipin KUMAR 
19962d026bSVipin KUMAR 	periph1_clken = readl(&misc_p->periph1_clken);
20962d026bSVipin KUMAR 
21962d026bSVipin KUMAR #if defined(CONFIG_SPEAR3XX)
22962d026bSVipin KUMAR 	periph1_clken |= MISC_GPT2ENB;
23962d026bSVipin KUMAR #elif defined(CONFIG_SPEAR600)
24962d026bSVipin KUMAR 	periph1_clken |= MISC_GPT3ENB;
25962d026bSVipin KUMAR #endif
26962d026bSVipin KUMAR 
27962d026bSVipin KUMAR #if defined(CONFIG_PL011_SERIAL)
28962d026bSVipin KUMAR 	periph1_clken |= MISC_UART0ENB;
297c885a0eSShiraz Hashim 
307c885a0eSShiraz Hashim 	periph_clk_cfg = readl(&misc_p->periph_clk_cfg);
317c885a0eSShiraz Hashim 	periph_clk_cfg &= ~CONFIG_SPEAR_UARTCLKMSK;
327c885a0eSShiraz Hashim 	periph_clk_cfg |= CONFIG_SPEAR_UART48M;
337c885a0eSShiraz Hashim 	writel(periph_clk_cfg, &misc_p->periph_clk_cfg);
34962d026bSVipin KUMAR #endif
35ef48f6ddSSimon Glass #if defined(CONFIG_ETH_DESIGNWARE)
36962d026bSVipin KUMAR 	periph1_clken |= MISC_ETHENB;
37962d026bSVipin KUMAR #endif
38962d026bSVipin KUMAR #if defined(CONFIG_DW_UDC)
39962d026bSVipin KUMAR 	periph1_clken |= MISC_USBDENB;
40962d026bSVipin KUMAR #endif
41678398b1SStefan Roese #if defined(CONFIG_SYS_I2C_DW)
42962d026bSVipin KUMAR 	periph1_clken |= MISC_I2CENB;
43962d026bSVipin KUMAR #endif
44962d026bSVipin KUMAR #if defined(CONFIG_ST_SMI)
45962d026bSVipin KUMAR 	periph1_clken |= MISC_SMIENB;
46962d026bSVipin KUMAR #endif
47962d026bSVipin KUMAR #if defined(CONFIG_NAND_FSMC)
48962d026bSVipin KUMAR 	periph1_clken |= MISC_FSMCENB;
49962d026bSVipin KUMAR #endif
50*e8d05698SStefan Roese #if defined(CONFIG_USB_EHCI_SPEAR)
51*e8d05698SStefan Roese 	periph1_clken |= PERIPH_USBH1 | PERIPH_USBH2;
52*e8d05698SStefan Roese #endif
53962d026bSVipin KUMAR 
54962d026bSVipin KUMAR 	writel(periph1_clken, &misc_p->periph1_clken);
55*e8d05698SStefan Roese 
56962d026bSVipin KUMAR 	return 0;
57962d026bSVipin KUMAR }
58962d026bSVipin KUMAR 
59962d026bSVipin KUMAR #ifdef CONFIG_DISPLAY_CPUINFO
60962d026bSVipin KUMAR int print_cpuinfo(void)
61962d026bSVipin KUMAR {
62962d026bSVipin KUMAR #ifdef CONFIG_SPEAR300
63962d026bSVipin KUMAR 	printf("CPU:   SPEAr300\n");
64962d026bSVipin KUMAR #elif defined(CONFIG_SPEAR310)
65962d026bSVipin KUMAR 	printf("CPU:   SPEAr310\n");
66962d026bSVipin KUMAR #elif defined(CONFIG_SPEAR320)
67962d026bSVipin KUMAR 	printf("CPU:   SPEAr320\n");
68962d026bSVipin KUMAR #elif defined(CONFIG_SPEAR600)
69962d026bSVipin KUMAR 	printf("CPU:   SPEAr600\n");
70962d026bSVipin KUMAR #else
71962d026bSVipin KUMAR #error CPU not supported in spear platform
72962d026bSVipin KUMAR #endif
73962d026bSVipin KUMAR 	return 0;
74962d026bSVipin KUMAR }
75962d026bSVipin KUMAR #endif
76