platform: fu540: Provide a compile time option selective hart booting.
authorAtish Patra <atish.patra@wdc.com>
Thu, 24 Jan 2019 22:48:45 +0000 (14:48 -0800)
committerAnup Patel <anup@brainfault.org>
Tue, 29 Jan 2019 01:47:14 +0000 (07:17 +0530)
Currently, only hart 1 is enabled for fu540 platform to support U-boot.

Introduce a compile time FU540_ENABLED_HART_MASK option so that specific
harts can be selected for booting. As fu540 is a multicore, we should
boot all cores by default except hart 0.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
platform/sifive/fu540/objects.mk
platform/sifive/fu540/platform.c

index e0d0585..f09a305 100644 (file)
@@ -8,3 +8,6 @@
 #
 
 platform-objs-y += platform.o
+ifdef FU540_ENABLED_HART_MASK
+platform-genflags-y += -DFU540_ENABLED_HART_MASK=$(FU540_ENABLED_HART_MASK)
+endif
index 56ca666..ea6ced9 100644 (file)
 #define FU540_UART1_ADDR                       0x10011000
 #define FU540_UART_BAUDRATE                    115200
 
-#define FU540_HARITD_ENABLED                   1
+/**
+ * The FU540 SoC has 5 HARTs but HART ID 0 doesn't have S mode. enable only
+ * HARTs 1 to 4.
+ */
+#ifndef FU540_ENABLED_HART_MASK
+#define FU540_ENABLED_HART_MASK (1 << 1 | 1 << 2 | 1 << 3 | 1 << 4)
+#endif
+
+#define FU540_HARITD_DISABLED                  ~(FU540_ENABLED_HART_MASK)
 
 /* PRCI clock related macros */
 //TODO: Do we need a separate driver for this ?
@@ -183,7 +191,7 @@ struct sbi_platform platform = {
        .features = SBI_PLATFORM_DEFAULT_FEATURES,
        .hart_count = FU540_HART_COUNT,
        .hart_stack_size = FU540_HART_STACK_SIZE,
-       .disabled_hart_mask = ~(1 << FU540_HARITD_ENABLED),
+       .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,