socfpga: Adding System Manager driver

Adding System Manager driver which will configure the
pin mux for real hardware Cyclone V development kit
(not Virtual Platform)

Signed-off-by: Chin Liang See <clsee@altera.com>
Reviewed-by: Pavel Machek <pavel@denx.de>
Acked-by: Dinh Nguyen <dinguyen@altera.com>
Cc: Wolfgang Denk <wd@denx.de>
CC: Pavel Machek <pavel@denx.de>
Cc: Dinh Nguyen <dinguyen@altera.com>
Cc: Tom Rini <trini@ti.com>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
This commit is contained in:
Chin Liang See 2013-09-11 11:24:48 -05:00 committed by Albert ARIBAUD
parent 0610a16cf2
commit 5d649d2b08
7 changed files with 61 additions and 2 deletions

View file

@ -13,7 +13,7 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(SOC).o
SOBJS := lowlevel_init.o
COBJS-y := misc.o timer.o reset_manager.o
COBJS-y := misc.o timer.o reset_manager.o system_manager.o
COBJS-$(CONFIG_SPL_BUILD) += spl.o
COBJS := $(COBJS-y)

View file

@ -12,6 +12,7 @@
#include <image.h>
#include <asm/arch/reset_manager.h>
#include <spl.h>
#include <asm/arch/system_manager.h>
DECLARE_GLOBAL_DATA_PTR;
@ -25,6 +26,11 @@ u32 spl_boot_device(void)
*/
void spl_board_init(void)
{
#ifndef CONFIG_SOCFPGA_VIRTUAL_TARGET
/* configure the pin muxing through system manager */
sysmgr_pinmux_init();
#endif /* CONFIG_SOCFPGA_VIRTUAL_TARGET */
/* de-assert reset for peripherals and bridges based on handoff */
reset_deassert_peripherals_handoff();

View file

@ -0,0 +1,27 @@
/*
* Copyright (C) 2013 Altera Corporation <www.altera.com>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
#include <asm/io.h>
#include <asm/arch/system_manager.h>
DECLARE_GLOBAL_DATA_PTR;
/*
* Configure all the pin muxes
*/
void sysmgr_pinmux_init(void)
{
unsigned long offset = CONFIG_SYSMGR_PINMUXGRP_OFFSET;
const unsigned long *pval = sys_mgr_init_table;
unsigned long i;
for (i = 0; i < ARRAY_SIZE(sys_mgr_init_table);
i++, offset += sizeof(unsigned long)) {
writel(*pval++, (SOCFPGA_SYSMGR_ADDRESS + offset));
}
}

View file

@ -12,5 +12,6 @@
#define SOCFPGA_UART1_ADDRESS 0xffc03000
#define SOCFPGA_OSC1TIMER0_ADDRESS 0xffd00000
#define SOCFPGA_RSTMGR_ADDRESS 0xffd05000
#define SOCFPGA_SYSMGR_ADDRESS 0xffd08000
#endif /* _SOCFPGA_BASE_ADDRS_H_ */

View file

@ -0,0 +1,22 @@
/*
* Copyright (C) 2013 Altera Corporation <www.altera.com>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef _SYSTEM_MANAGER_H_
#define _SYSTEM_MANAGER_H_
#ifndef __ASSEMBLY__
void sysmgr_pinmux_init(void);
/* declaration for handoff table type */
extern unsigned long sys_mgr_init_table[CONFIG_HPS_PINMUX_NUM];
#endif
#define CONFIG_SYSMGR_PINMUXGRP_OFFSET (0x400)
#endif /* _SYSTEM_MANAGER_H_ */

View file

@ -10,8 +10,10 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).o
COBJS := socfpga_cyclone5.o
COBJS-y := socfpga_cyclone5.o
COBJS-$(CONFIG_SPL_BUILD) += pinmux_config.o
COBJS := $(COBJS-y)
SRCS := $(COBJS:.o=.c)
OBJS := $(addprefix $(obj),$(COBJS))

View file

@ -7,6 +7,7 @@
#define __CONFIG_H
#include <asm/arch/socfpga_base_addrs.h>
#include "../../board/altera/socfpga/pinmux_config.h"
/*
* High level configuration