xref: /openbmc/u-boot/arch/arm/mach-keystone/keystone.c (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
239a72345SMasahiro Yamada /*
339a72345SMasahiro Yamada  * Keystone EVM : Board initialization
439a72345SMasahiro Yamada  *
539a72345SMasahiro Yamada  * (C) Copyright 2014
639a72345SMasahiro Yamada  *     Texas Instruments Incorporated, <www.ti.com>
739a72345SMasahiro Yamada  */
839a72345SMasahiro Yamada 
939a72345SMasahiro Yamada #include <common.h>
1039a72345SMasahiro Yamada #include <asm/io.h>
1139a72345SMasahiro Yamada #include <asm/arch/psc_defs.h>
1239a72345SMasahiro Yamada #include <asm/arch/hardware.h>
1339a72345SMasahiro Yamada 
1439a72345SMasahiro Yamada /**
1539a72345SMasahiro Yamada  * cpu_to_bus - swap bytes of the 32-bit data if the device is BE
1639a72345SMasahiro Yamada  * @ptr - array of data
1739a72345SMasahiro Yamada  * @length - lenght of data array
1839a72345SMasahiro Yamada  */
cpu_to_bus(u32 * ptr,u32 length)1939a72345SMasahiro Yamada int cpu_to_bus(u32 *ptr, u32 length)
2039a72345SMasahiro Yamada {
2139a72345SMasahiro Yamada 	u32 i;
2239a72345SMasahiro Yamada 
2339a72345SMasahiro Yamada 	if (!(readl(KS2_DEVSTAT) & 0x1))
2439a72345SMasahiro Yamada 		for (i = 0; i < length; i++, ptr++)
2539a72345SMasahiro Yamada 			*ptr = cpu_to_be32(*ptr);
2639a72345SMasahiro Yamada 
2739a72345SMasahiro Yamada 	return 0;
2839a72345SMasahiro Yamada }
2939a72345SMasahiro Yamada 
turn_off_all_dsps(int num_dsps)3039a72345SMasahiro Yamada static void turn_off_all_dsps(int num_dsps)
3139a72345SMasahiro Yamada {
3239a72345SMasahiro Yamada 	int i;
3339a72345SMasahiro Yamada 
3439a72345SMasahiro Yamada 	for (i = 0; i < num_dsps; i++) {
3539a72345SMasahiro Yamada 		if (psc_disable_module(i + KS2_LPSC_GEM_0))
3639a72345SMasahiro Yamada 			printf("Cannot disable module for #%d DSP", i);
3739a72345SMasahiro Yamada 
384ed8b2c9SSuman Anna 		if (psc_disable_domain(i + KS2_GEM_0_PWR_DOMAIN))
3939a72345SMasahiro Yamada 			printf("Cannot disable domain for #%d DSP", i);
4039a72345SMasahiro Yamada 	}
4139a72345SMasahiro Yamada }
4239a72345SMasahiro Yamada 
misc_init_r(void)4339a72345SMasahiro Yamada int misc_init_r(void)
4439a72345SMasahiro Yamada {
4539a72345SMasahiro Yamada 	char *env;
4639a72345SMasahiro Yamada 	long ks2_debug = 0;
4739a72345SMasahiro Yamada 
4800caae6dSSimon Glass 	env = env_get("ks2_debug");
4939a72345SMasahiro Yamada 
5039a72345SMasahiro Yamada 	if (env)
5139a72345SMasahiro Yamada 		ks2_debug = simple_strtol(env, NULL, 0);
5239a72345SMasahiro Yamada 
5339a72345SMasahiro Yamada 	if ((ks2_debug & DBG_LEAVE_DSPS_ON) == 0)
5439a72345SMasahiro Yamada 		turn_off_all_dsps(KS2_NUM_DSPS);
5539a72345SMasahiro Yamada 
5639a72345SMasahiro Yamada 	return 0;
5739a72345SMasahiro Yamada }
58