board: sl28: add basic PSCI implementation
For now, this only provides reset and poweroff functions. Signed-off-by: Michael Walle <michael@walle.cc> [Rebased] Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
		
							parent
							
								
									49bb245f1d
								
							
						
					
					
						commit
						20759b2973
					
				| 
						 | 
				
			
			@ -6,6 +6,8 @@ endif
 | 
			
		|||
 | 
			
		||||
obj-y += common.o ddr.o
 | 
			
		||||
 | 
			
		||||
obj-$(CONFIG_ARMV8_PSCI) += psci.o
 | 
			
		||||
 | 
			
		||||
ifdef CONFIG_SPL_BUILD
 | 
			
		||||
obj-y += spl.o
 | 
			
		||||
obj-$(CONFIG_SPL_ATF) += spl_atf.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
// SPDX-License-Identifier: GPL-2.0+
 | 
			
		||||
 | 
			
		||||
#include <asm/secure.h>
 | 
			
		||||
#include <asm/psci.h>
 | 
			
		||||
#include <asm/types.h>
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/system.h>
 | 
			
		||||
 | 
			
		||||
#define GPIO2_GPDIR	0x2310000
 | 
			
		||||
#define GPIO2_GPDAT	0x2310008
 | 
			
		||||
#define RSTCR		0x1e60000
 | 
			
		||||
#define RESET_REQ	BIT(1)
 | 
			
		||||
 | 
			
		||||
u32 __secure psci_version(void)
 | 
			
		||||
{
 | 
			
		||||
	return ARM_PSCI_VER_0_2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __secure psci_system_reset(void)
 | 
			
		||||
{
 | 
			
		||||
	writel(RESET_REQ, RSTCR);
 | 
			
		||||
 | 
			
		||||
	while (1)
 | 
			
		||||
		wfi();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __secure psci_system_off(void)
 | 
			
		||||
{
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	writel(0x02000000, GPIO2_GPDIR);
 | 
			
		||||
	writel(0, GPIO2_GPDAT);
 | 
			
		||||
 | 
			
		||||
	/* make sure the management controller has sampled the input */
 | 
			
		||||
	for (i = 0; i < (1 << 11); i++)
 | 
			
		||||
		asm("nop");
 | 
			
		||||
 | 
			
		||||
	writel(RESET_REQ, RSTCR);
 | 
			
		||||
 | 
			
		||||
	while (1)
 | 
			
		||||
		wfi();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -20,6 +20,8 @@ CONFIG_ENV_OFFSET_REDUND=0x3f0000
 | 
			
		|||
CONFIG_SPL_SPI_FLASH_SUPPORT=y
 | 
			
		||||
CONFIG_SPL_SPI=y
 | 
			
		||||
# CONFIG_PSCI_RESET is not set
 | 
			
		||||
CONFIG_ARMV8_PSCI=y
 | 
			
		||||
CONFIG_ARMV8_PSCI_RELOCATE=y
 | 
			
		||||
CONFIG_SYS_LOAD_ADDR=0x82000000
 | 
			
		||||
CONFIG_AHCI=y
 | 
			
		||||
CONFIG_DISTRO_DEFAULTS=y
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue