forked from Mirrors/opensbi
		
	include: Move callbacks in sbi_platform to separate struct
Move platform opensbi functions to sbi_platform_operations structure. Both sbi_platform and sbi_platform_operations structures are maintained by platform vendors. Signed-off-by: Abner Chang <abner.chang@hpe.com> Acked-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
		@@ -176,12 +176,7 @@ static int ariane_system_shutdown(u32 type)
 | 
			
		||||
/*
 | 
			
		||||
 * Platform descriptor.
 | 
			
		||||
 */
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name = "ARIANE RISC-V",
 | 
			
		||||
	.features = SBI_ARIANE_FEATURES,
 | 
			
		||||
	.hart_count = ARIANE_HART_COUNT,
 | 
			
		||||
	.hart_stack_size = 4096,
 | 
			
		||||
	.disabled_hart_mask = 0,
 | 
			
		||||
const struct sbi_platform_operations platform_ops = {
 | 
			
		||||
	.early_init = ariane_early_init,
 | 
			
		||||
	.final_init = ariane_final_init,
 | 
			
		||||
	.console_init = ariane_console_init,
 | 
			
		||||
@@ -199,3 +194,12 @@ const struct sbi_platform platform = {
 | 
			
		||||
	.system_reboot = ariane_system_reboot,
 | 
			
		||||
	.system_shutdown = ariane_system_shutdown
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name = "ARIANE RISC-V",
 | 
			
		||||
	.features = SBI_ARIANE_FEATURES,
 | 
			
		||||
	.hart_count = ARIANE_HART_COUNT,
 | 
			
		||||
	.hart_stack_size = 4096,
 | 
			
		||||
	.disabled_hart_mask = 0,
 | 
			
		||||
	.platform_ops_addr = (unsigned long)&platform_ops
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -93,18 +93,10 @@ static int k210_system_shutdown(u32 type)
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
 | 
			
		||||
	.name	  = "Kendryte K210",
 | 
			
		||||
	.features = SBI_PLATFORM_HAS_TIMER_VALUE,
 | 
			
		||||
 | 
			
		||||
	.hart_count	    = K210_HART_COUNT,
 | 
			
		||||
	.hart_stack_size    = K210_HART_STACK_SIZE,
 | 
			
		||||
	.disabled_hart_mask = 0,
 | 
			
		||||
 | 
			
		||||
	.console_init = k210_console_init,
 | 
			
		||||
	.console_putc = k210_console_putc,
 | 
			
		||||
	.console_getc = k210_console_getc,
 | 
			
		||||
const struct sbi_platform_operations platform_ops = {
 | 
			
		||||
	.console_init	= k210_console_init,
 | 
			
		||||
	.console_putc	= k210_console_putc,
 | 
			
		||||
	.console_getc	= k210_console_getc,
 | 
			
		||||
 | 
			
		||||
	.irqchip_init = k210_irqchip_init,
 | 
			
		||||
 | 
			
		||||
@@ -121,3 +113,12 @@ const struct sbi_platform platform = {
 | 
			
		||||
	.system_reboot	 = k210_system_reboot,
 | 
			
		||||
	.system_shutdown = k210_system_shutdown
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name			= "Kendryte K210",
 | 
			
		||||
	.features		= SBI_PLATFORM_HAS_TIMER_VALUE,
 | 
			
		||||
	.hart_count		= K210_HART_COUNT,
 | 
			
		||||
	.hart_stack_size	= K210_HART_STACK_SIZE,
 | 
			
		||||
	.disabled_hart_mask	= 0,
 | 
			
		||||
	.platform_ops_addr	= (unsigned long)&platform_ops
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -127,27 +127,31 @@ static int sifive_u_system_down(u32 type)
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name		    = "QEMU SiFive Unleashed",
 | 
			
		||||
	.features	    = SBI_PLATFORM_DEFAULT_FEATURES,
 | 
			
		||||
	.hart_count	    = SIFIVE_U_HART_COUNT,
 | 
			
		||||
	.hart_stack_size    = SIFIVE_U_HART_STACK_SIZE,
 | 
			
		||||
	.disabled_hart_mask = 0,
 | 
			
		||||
	.pmp_region_count   = sifive_u_pmp_region_count,
 | 
			
		||||
	.pmp_region_info    = sifive_u_pmp_region_info,
 | 
			
		||||
	.final_init	    = sifive_u_final_init,
 | 
			
		||||
	.console_putc	    = sifive_uart_putc,
 | 
			
		||||
	.console_getc	    = sifive_uart_getc,
 | 
			
		||||
	.console_init	    = sifive_u_console_init,
 | 
			
		||||
	.irqchip_init	    = sifive_u_irqchip_init,
 | 
			
		||||
	.ipi_send	    = clint_ipi_send,
 | 
			
		||||
	.ipi_sync	    = clint_ipi_sync,
 | 
			
		||||
	.ipi_clear	    = clint_ipi_clear,
 | 
			
		||||
	.ipi_init	    = sifive_u_ipi_init,
 | 
			
		||||
	.timer_value	    = clint_timer_value,
 | 
			
		||||
	.timer_event_stop   = clint_timer_event_stop,
 | 
			
		||||
	.timer_event_start  = clint_timer_event_start,
 | 
			
		||||
	.timer_init	    = sifive_u_timer_init,
 | 
			
		||||
	.system_reboot	    = sifive_u_system_down,
 | 
			
		||||
	.system_shutdown    = sifive_u_system_down
 | 
			
		||||
const struct sbi_platform_operations platform_ops = {
 | 
			
		||||
	.pmp_region_count	= sifive_u_pmp_region_count,
 | 
			
		||||
	.pmp_region_info	= sifive_u_pmp_region_info,
 | 
			
		||||
	.final_init		= sifive_u_final_init,
 | 
			
		||||
	.console_putc		= sifive_uart_putc,
 | 
			
		||||
	.console_getc		= sifive_uart_getc,
 | 
			
		||||
	.console_init		= sifive_u_console_init,
 | 
			
		||||
	.irqchip_init		= sifive_u_irqchip_init,
 | 
			
		||||
	.ipi_send		= clint_ipi_send,
 | 
			
		||||
	.ipi_sync		= clint_ipi_sync,
 | 
			
		||||
	.ipi_clear		= clint_ipi_clear,
 | 
			
		||||
	.ipi_init		= sifive_u_ipi_init,
 | 
			
		||||
	.timer_value		= clint_timer_value,
 | 
			
		||||
	.timer_event_stop	= clint_timer_event_stop,
 | 
			
		||||
	.timer_event_start	= clint_timer_event_start,
 | 
			
		||||
	.timer_init		= sifive_u_timer_init,
 | 
			
		||||
	.system_reboot		= sifive_u_system_down,
 | 
			
		||||
	.system_shutdown	= sifive_u_system_down
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name			= "QEMU SiFive Unleashed",
 | 
			
		||||
	.features		= SBI_PLATFORM_DEFAULT_FEATURES,
 | 
			
		||||
	.hart_count		= SIFIVE_U_HART_COUNT,
 | 
			
		||||
	.hart_stack_size	= SIFIVE_U_HART_STACK_SIZE,
 | 
			
		||||
	.disabled_hart_mask	= 0,
 | 
			
		||||
	.platform_ops_addr	= (unsigned long)&platform_ops
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -132,27 +132,31 @@ static int virt_system_down(u32 type)
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name		    = "QEMU Virt Machine",
 | 
			
		||||
	.features	    = SBI_PLATFORM_DEFAULT_FEATURES,
 | 
			
		||||
	.hart_count	    = VIRT_HART_COUNT,
 | 
			
		||||
	.hart_stack_size    = VIRT_HART_STACK_SIZE,
 | 
			
		||||
	.disabled_hart_mask = 0,
 | 
			
		||||
	.pmp_region_count   = virt_pmp_region_count,
 | 
			
		||||
	.pmp_region_info    = virt_pmp_region_info,
 | 
			
		||||
	.final_init	    = virt_final_init,
 | 
			
		||||
	.console_putc	    = uart8250_putc,
 | 
			
		||||
	.console_getc	    = uart8250_getc,
 | 
			
		||||
	.console_init	    = virt_console_init,
 | 
			
		||||
	.irqchip_init	    = virt_irqchip_init,
 | 
			
		||||
	.ipi_send	    = clint_ipi_send,
 | 
			
		||||
	.ipi_sync	    = clint_ipi_sync,
 | 
			
		||||
	.ipi_clear	    = clint_ipi_clear,
 | 
			
		||||
	.ipi_init	    = virt_ipi_init,
 | 
			
		||||
	.timer_value	    = clint_timer_value,
 | 
			
		||||
	.timer_event_stop   = clint_timer_event_stop,
 | 
			
		||||
	.timer_event_start  = clint_timer_event_start,
 | 
			
		||||
	.timer_init	    = virt_timer_init,
 | 
			
		||||
	.system_reboot	    = virt_system_down,
 | 
			
		||||
	.system_shutdown    = virt_system_down
 | 
			
		||||
const struct sbi_platform_operations platform_ops = {
 | 
			
		||||
	.pmp_region_count	= virt_pmp_region_count,
 | 
			
		||||
	.pmp_region_info	= virt_pmp_region_info,
 | 
			
		||||
	.final_init		= virt_final_init,
 | 
			
		||||
	.console_putc		= uart8250_putc,
 | 
			
		||||
	.console_getc		= uart8250_getc,
 | 
			
		||||
	.console_init		= virt_console_init,
 | 
			
		||||
	.irqchip_init		= virt_irqchip_init,
 | 
			
		||||
	.ipi_send		= clint_ipi_send,
 | 
			
		||||
	.ipi_sync		= clint_ipi_sync,
 | 
			
		||||
	.ipi_clear		= clint_ipi_clear,
 | 
			
		||||
	.ipi_init		= virt_ipi_init,
 | 
			
		||||
	.timer_value		= clint_timer_value,
 | 
			
		||||
	.timer_event_stop	= clint_timer_event_stop,
 | 
			
		||||
	.timer_event_start	= clint_timer_event_start,
 | 
			
		||||
	.timer_init		= virt_timer_init,
 | 
			
		||||
	.system_reboot		= virt_system_down,
 | 
			
		||||
	.system_shutdown	= virt_system_down
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name			= "QEMU Virt Machine",
 | 
			
		||||
	.features		= SBI_PLATFORM_DEFAULT_FEATURES,
 | 
			
		||||
	.hart_count		= VIRT_HART_COUNT,
 | 
			
		||||
	.hart_stack_size	= VIRT_HART_STACK_SIZE,
 | 
			
		||||
	.disabled_hart_mask	= 0,
 | 
			
		||||
	.platform_ops_addr	= (unsigned long)&platform_ops
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -188,27 +188,31 @@ static int fu540_system_down(u32 type)
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name		    = "SiFive Freedom U540",
 | 
			
		||||
	.features	    = SBI_PLATFORM_DEFAULT_FEATURES,
 | 
			
		||||
	.hart_count	    = FU540_HART_COUNT,
 | 
			
		||||
	.hart_stack_size    = FU540_HART_STACK_SIZE,
 | 
			
		||||
	.disabled_hart_mask = FU540_HARITD_DISABLED,
 | 
			
		||||
	.pmp_region_count   = fu540_pmp_region_count,
 | 
			
		||||
	.pmp_region_info    = fu540_pmp_region_info,
 | 
			
		||||
	.final_init	    = fu540_final_init,
 | 
			
		||||
	.console_putc	    = sifive_uart_putc,
 | 
			
		||||
	.console_getc	    = sifive_uart_getc,
 | 
			
		||||
	.console_init	    = fu540_console_init,
 | 
			
		||||
	.irqchip_init	    = fu540_irqchip_init,
 | 
			
		||||
	.ipi_send	    = clint_ipi_send,
 | 
			
		||||
	.ipi_sync	    = clint_ipi_sync,
 | 
			
		||||
	.ipi_clear	    = clint_ipi_clear,
 | 
			
		||||
	.ipi_init	    = fu540_ipi_init,
 | 
			
		||||
	.timer_value	    = clint_timer_value,
 | 
			
		||||
	.timer_event_stop   = clint_timer_event_stop,
 | 
			
		||||
	.timer_event_start  = clint_timer_event_start,
 | 
			
		||||
	.timer_init	    = fu540_timer_init,
 | 
			
		||||
	.system_reboot	    = fu540_system_down,
 | 
			
		||||
	.system_shutdown    = fu540_system_down
 | 
			
		||||
const struct sbi_platform_operations platform_ops = {
 | 
			
		||||
	.pmp_region_count	= fu540_pmp_region_count,
 | 
			
		||||
	.pmp_region_info	= fu540_pmp_region_info,
 | 
			
		||||
	.final_init		= fu540_final_init,
 | 
			
		||||
	.console_putc		= sifive_uart_putc,
 | 
			
		||||
	.console_getc		= sifive_uart_getc,
 | 
			
		||||
	.console_init		= fu540_console_init,
 | 
			
		||||
	.irqchip_init		= fu540_irqchip_init,
 | 
			
		||||
	.ipi_send		= clint_ipi_send,
 | 
			
		||||
	.ipi_sync		= clint_ipi_sync,
 | 
			
		||||
	.ipi_clear		= clint_ipi_clear,
 | 
			
		||||
	.ipi_init		= fu540_ipi_init,
 | 
			
		||||
	.timer_value		= clint_timer_value,
 | 
			
		||||
	.timer_event_stop	= clint_timer_event_stop,
 | 
			
		||||
	.timer_event_start	= clint_timer_event_start,
 | 
			
		||||
	.timer_init		= fu540_timer_init,
 | 
			
		||||
	.system_reboot		= fu540_system_down,
 | 
			
		||||
	.system_shutdown	= fu540_system_down
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name			= "SiFive Freedom U540",
 | 
			
		||||
	.features		= SBI_PLATFORM_DEFAULT_FEATURES,
 | 
			
		||||
	.hart_count		= FU540_HART_COUNT,
 | 
			
		||||
	.hart_stack_size	= FU540_HART_STACK_SIZE,
 | 
			
		||||
	.disabled_hart_mask	= FU540_HARITD_DISABLED,
 | 
			
		||||
	.platform_ops_addr	= (unsigned long)&platform_ops
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -12,9 +12,9 @@
 | 
			
		||||
 * Include these files as needed.
 | 
			
		||||
 * See config.mk PLATFORM_xxx configuration parameters.
 | 
			
		||||
 */
 | 
			
		||||
#include <plat/irqchip/plic.h>
 | 
			
		||||
#include <plat/serial/uart8250.h>
 | 
			
		||||
#include <plat/sys/clint.h>
 | 
			
		||||
#include <sbi_utils/irqchip/plic.h>
 | 
			
		||||
#include <sbi_utils/serial/uart8250.h>
 | 
			
		||||
#include <sbi_utils/sys/clint.h>
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Platform early initialization.
 | 
			
		||||
@@ -206,35 +206,31 @@ static int platform_system_shutdown(u32 type)
 | 
			
		||||
/*
 | 
			
		||||
 * Platform descriptor.
 | 
			
		||||
 */
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
 | 
			
		||||
	.name		    = "platform-name",
 | 
			
		||||
	.features	    = SBI_PLATFORM_DEFAULT_FEATURES,
 | 
			
		||||
	.hart_count	    = 1,
 | 
			
		||||
	.hart_stack_size    = 4096,
 | 
			
		||||
	.disabled_hart_mask = 0,
 | 
			
		||||
 | 
			
		||||
	.early_init = platform_early_init,
 | 
			
		||||
	.final_init = platform_final_init,
 | 
			
		||||
 | 
			
		||||
	.pmp_region_count = platform_pmp_region_count,
 | 
			
		||||
	.pmp_region_info  = platform_pmp_region_info,
 | 
			
		||||
 | 
			
		||||
	.console_init = platform_console_init,
 | 
			
		||||
	.console_putc = platform_console_putc,
 | 
			
		||||
	.console_getc = platform_console_getc,
 | 
			
		||||
 | 
			
		||||
	.irqchip_init = platform_irqchip_init,
 | 
			
		||||
	.ipi_init     = platform_ipi_init,
 | 
			
		||||
	.ipi_send     = platform_ipi_send,
 | 
			
		||||
	.ipi_sync     = platform_ipi_sync,
 | 
			
		||||
	.ipi_clear    = platform_ipi_clear,
 | 
			
		||||
 | 
			
		||||
	.timer_init	   = platform_timer_init,
 | 
			
		||||
	.timer_value	   = platform_timer_value,
 | 
			
		||||
	.timer_event_start = platform_timer_event_start,
 | 
			
		||||
	.timer_event_stop  = platform_timer_event_stop,
 | 
			
		||||
 | 
			
		||||
	.system_reboot	 = platform_system_reboot,
 | 
			
		||||
	.system_shutdown = platform_system_shutdown
 | 
			
		||||
const struct sbi_platform_operations platform_ops = {
 | 
			
		||||
	.early_init		= platform_early_init,
 | 
			
		||||
	.final_init		= platform_final_init,
 | 
			
		||||
	.pmp_region_count	= platform_pmp_region_count,
 | 
			
		||||
	.pmp_region_info	= platform_pmp_region_info,
 | 
			
		||||
	.console_putc		= platform_console_putc,
 | 
			
		||||
	.console_getc		= platform_console_getc,
 | 
			
		||||
	.console_init		= platform_console_init,
 | 
			
		||||
	.irqchip_init		= platform_irqchip_init,
 | 
			
		||||
	.ipi_send		= platform_ipi_send,
 | 
			
		||||
	.ipi_sync		= platform_ipi_sync,
 | 
			
		||||
	.ipi_clear		= platform_ipi_clear,
 | 
			
		||||
	.ipi_init		= platform_ipi_init,
 | 
			
		||||
	.timer_value		= platform_timer_value,
 | 
			
		||||
	.timer_event_stop	= platform_timer_event_stop,
 | 
			
		||||
	.timer_event_start	= platform_timer_event_start,
 | 
			
		||||
	.timer_init		= platform_timer_init,
 | 
			
		||||
	.system_reboot		= platform_system_down,
 | 
			
		||||
	.system_shutdown	= platform_system_down
 | 
			
		||||
};
 | 
			
		||||
const struct sbi_platform platform = {
 | 
			
		||||
	.name			= "platform-name",
 | 
			
		||||
	.features		= SBI_PLATFORM_DEFAULT_FEATURES,
 | 
			
		||||
	.hart_count		= 1,
 | 
			
		||||
	.hart_stack_size	= 4096,
 | 
			
		||||
	.disabled_hart_mask	= 0,
 | 
			
		||||
	.platform_ops_addr	= (unsigned long)&platform_ops
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user