Blame view
arch/arm/cpu/armv7/socfpga/misc.c
3.64 KB
777544085 ARM: Add Altera S... |
1 2 3 |
/* * Copyright (C) 2012 Altera Corporation <www.altera.com> * |
1a4596601 Add GPL-2.0+ SPDX... |
4 |
* SPDX-License-Identifier: GPL-2.0+ |
777544085 ARM: Add Altera S... |
5 6 7 8 |
*/ #include <common.h> #include <asm/io.h> |
230fe9b20 arm: socfpga: fpg... |
9 |
#include <altera.h> |
99b97106f socfpga: initiali... |
10 11 |
#include <miiphy.h> #include <netdev.h> |
de6da9255 arm: socfpga: Add... |
12 |
#include <asm/arch/reset_manager.h> |
45d6e6771 arm: socfpga: mis... |
13 |
#include <asm/arch/system_manager.h> |
4e736869c arm: socfpga: mis... |
14 |
#include <asm/arch/dwmmc.h> |
60d804c2f arm: socfpga: pl3... |
15 16 |
#include <asm/arch/nic301.h> #include <asm/pl310.h> |
777544085 ARM: Add Altera S... |
17 18 |
DECLARE_GLOBAL_DATA_PTR; |
60d804c2f arm: socfpga: pl3... |
19 20 |
static struct pl310_regs *const pl310 = (struct pl310_regs *)CONFIG_SYS_PL310_BASE; |
45d6e6771 arm: socfpga: mis... |
21 22 |
static struct socfpga_system_manager *sysmgr_regs = (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS; |
60d804c2f arm: socfpga: pl3... |
23 24 |
static struct nic301_registers *nic301_regs = (struct nic301_registers *)SOCFPGA_L3REGS_ADDRESS; |
45d6e6771 arm: socfpga: mis... |
25 |
|
777544085 ARM: Add Altera S... |
26 27 28 29 30 |
int dram_init(void) { gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE); return 0; } |
23f23f23d socfpga: Relocate... |
31 |
|
45d6e6771 arm: socfpga: mis... |
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
/* * DesignWare Ethernet initialization */ #ifdef CONFIG_DESIGNWARE_ETH int cpu_eth_init(bd_t *bis) { #if CONFIG_EMAC_BASE == SOCFPGA_EMAC0_ADDRESS const int physhift = SYSMGR_EMACGRP_CTRL_PHYSEL0_LSB; #elif CONFIG_EMAC_BASE == SOCFPGA_EMAC1_ADDRESS const int physhift = SYSMGR_EMACGRP_CTRL_PHYSEL1_LSB; #else #error "Incorrect CONFIG_EMAC_BASE value!" #endif /* Initialize EMAC. This needs to be done at least once per boot. */ /* * Putting the EMAC controller to reset when configuring the PHY * interface select at System Manager */ socfpga_emac_reset(1); /* Clearing emac0 PHY interface select to 0 */ clrbits_le32(&sysmgr_regs->emacgrp_ctrl, SYSMGR_EMACGRP_CTRL_PHYSEL_MASK << physhift); /* configure to PHY interface select choosed */ setbits_le32(&sysmgr_regs->emacgrp_ctrl, SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII << physhift); /* Release the EMAC controller from reset */ socfpga_emac_reset(0); /* initialize and register the emac */ return designware_initialize(CONFIG_EMAC_BASE, CONFIG_PHY_INTERFACE_MODE); } #endif |
4e736869c arm: socfpga: mis... |
70 71 72 73 74 75 76 77 78 79 80 |
#ifdef CONFIG_DWMMC /* * Initializes MMC controllers. * to override, implement board_mmc_init() */ int cpu_mmc_init(bd_t *bis) { return socfpga_dwmmc_init(SOCFPGA_SDMMC_ADDRESS, CONFIG_HPS_SDMMC_BUSWIDTH, 0); } #endif |
23f23f23d socfpga: Relocate... |
81 82 83 84 85 86 |
#if defined(CONFIG_DISPLAY_CPUINFO) /* * Print CPU information */ int print_cpuinfo(void) { |
d5a3d3c9e arm: socfpga: mis... |
87 88 |
puts("CPU: Altera SoCFPGA Platform "); |
23f23f23d socfpga: Relocate... |
89 90 91 92 93 94 95 96 97 98 99 |
return 0; } #endif #if defined(CONFIG_SYS_CONSOLE_IS_IN_ENV) && \ defined(CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE) int overwrite_console(void) { return 0; } #endif |
230fe9b20 arm: socfpga: fpg... |
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
#ifdef CONFIG_FPGA /* * FPGA programming support for SoC FPGA Cyclone V */ static Altera_desc altera_fpga[] = { { /* Family */ Altera_SoCFPGA, /* Interface type */ fast_passive_parallel, /* No limitation as additional data will be ignored */ -1, /* No device function table */ NULL, /* Base interface address specified in driver */ NULL, /* No cookie implementation */ 0 }, }; /* add device descriptor to FPGA device table */ static void socfpga_fpga_add(void) { int i; fpga_init(); for (i = 0; i < ARRAY_SIZE(altera_fpga); i++) fpga_add(fpga_altera, &altera_fpga[i]); } #else static inline void socfpga_fpga_add(void) {} #endif |
de6da9255 arm: socfpga: Add... |
132 133 134 135 136 137 138 139 140 141 142 143 |
int arch_cpu_init(void) { /* * If the HW watchdog is NOT enabled, make sure it is not running, * for example because it was enabled in the preloader. This might * trigger a watchdog-triggered reboot of Linux kernel later. */ #ifndef CONFIG_HW_WATCHDOG socfpga_watchdog_reset(); #endif return 0; } |
23f23f23d socfpga: Relocate... |
144 145 |
int misc_init_r(void) { |
60d804c2f arm: socfpga: pl3... |
146 147 148 149 150 151 152 |
/* Configure the L2 controller to make SDRAM start at 0 */ #ifdef CONFIG_SOCFPGA_VIRTUAL_TARGET writel(0x2, &nic301_regs->remap); #else writel(0x1, &nic301_regs->remap); /* remap.mpuzero */ writel(0x1, &pl310->pl310_addr_filter_start); #endif |
230fe9b20 arm: socfpga: fpg... |
153 154 |
/* Add device descriptor to FPGA device table */ socfpga_fpga_add(); |
23f23f23d socfpga: Relocate... |
155 156 |
return 0; } |