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