Commit Graph
30 Commits
Author SHA1 Message Date
Atish PatraandAnup Patel 35e617385f firmware: Use CSR_<FOO> instead of <foo> for csr*
Some older toolchains may not have all the csr's defined. Update all
the csr functions to use the CSR_ #define values instead of the
toolchain defined values.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-02-14 09:31:18 +05:30
Atish PatraandAnup Patel 28d1dd2430 platform: Use CSR_<FOO> instead of <foo> for csr_*()
Some older toolchains may not have all the csr's defined. Update all
the csr functions to use the CSR_ #define values instead of the
toolchain defined values.

Suggested-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-02-14 09:31:18 +05:30
Atish PatraandAnup Patel 70a474d2c2 lib: Use CSR_<FOO> instead of <foo> for csr_*()
Some older toolchains may not have all the csr's defined. Update all
the csr functions to use the CSR_ #define values instead of the
toolchain defined values.

Suggested-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-02-14 09:31:18 +05:30
Atish PatraandAnup Patel 4cb4d46875 docs: Use normal hyphen instead of non-breaking hyphen
Usage non-breaking hyphen breaks make docs as doxygen doesn't know
how to handle this.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-02-14 09:29:56 +05:30
Atish PatraandAnup Patel 02810f151c docs: Add a fu540 document.
Add a readme guide for fu540 with different types of build & booting steps.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-29 07:17:14 +05:30
Atish PatraandAnup Patel 3211b6c542 docs: Typo fixes
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-29 07:17:14 +05:30
Atish PatraandAnup Patel d70f8aab45 platform: fu540: Provide a compile time option selective hart booting.
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>
2019-01-29 07:17:14 +05:30
Atish PatraandAnup Patel f293d21863 docs: Typo fixes.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-22 14:00:44 +05:30
Atish PatraandAnup Patel 023aa6bb04 lib: Do not access mi/edeleg register if S mode is not present.
As per the RISC-V ISA, mideleg and medeleg registers should not exist
if S-mode is not present for a hart.

We shouldn't access these CSRs if non S-mode harts.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-22 10:03:49 +05:30
Atish PatraandAnup Patel bc545539d2 lib: Allow sending IPI to self.
S-mode software may send IPI to self. For example,
tlbflush may be executed for the same hart.

Let the hart send IPI to itself. It's an overhead
but doesn't break anything. However, if we don't
allow it, it breaks if S-mode keep sending IPIs.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-22 10:03:49 +05:30
Atish PatraandAnup Patel b9c517f559 lib: Fix ipi type update
IPIs are updated in scratch space by source hart.
However, different harts or same hart may want to
send different IPIs before previous IPI was read
by the target hart. Currently, previous IPI type
is overwritten in that case.

Use atomic bit set/clear operations to update IPIs.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-22 10:03:49 +05:30
Atish PatraandAnup Patel 312b6bf32f lib: Add atomic bit set/clear operations.
Add addtional functionlities for set/clear bits
atomically.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-22 10:03:49 +05:30
Atish PatraandAnup Patel 784a4657c0 lib: Move software interrupt enablement from firmware to lib
The secondary hart waits for an IPI signal from the boot hart to
executing boot code (hot boot). As a result, software generated
interrupts have to be enabled for secondary harts before waiting for
the boot hart boot completion IPI signal.

Enabling software generated interrupts (IPI) can be done independently
of the firmware code and moved to libsbi code so that the different
firmware do not have to implement this.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-22 10:03:49 +05:30
Atish PatraandAnup Patel e0686ca844 platform: No need to pass context id for plic fixup.
PLIC DT entry fixup can be done by comparing external
interrupt number instead of context id. No need to invoke
fixup for each plic context.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18 10:05:12 +05:30
Atish PatraandAnup Patel 3075da07b6 platform: Modify DT using libfdt
Perform following DT updates.
1. Mask hart if mmu is not supported.
2. Add stdout-path under chosen node.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18 10:05:12 +05:30
Atish PatraandAnup Patel 384ba7f7f1 docs: Add licensing seciton for external projects.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18 10:05:12 +05:30
Atish PatraandAnup Patel 00f77d9ba0 platform: Remove string functions from tinyfdt.c
There are couple of string function defined in platform
code. We no longer need them as we can directly link minimal
libc.

Every platform required to inclde this as PLIC driver required
libc functions.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18 10:05:12 +05:30
Atish PatraandAnup Patel cf83b6e438 platform: Include libfdt & libc.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18 10:05:12 +05:30
Atish PatraandAnup Patel 57d5eaa5fb platform: Rename fdt.c to tinyfdt.c
Libfdt already have fdt.c and fdt.h.
Rename both fdt.* present in openSBI to tinyfdt.*

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18 10:05:12 +05:30
Atish PatraandAnup Patel e2ce15cb3b platform: Add libfdt support.
Some of the platform (i.e. SiFive FU540) requires Device
Tree modification before it is passed to higher stages.
Add libfdt support now to help this process. Libfdt should
only be included per platform basis.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18 10:05:12 +05:30
Atish PatraandAnup Patel 1901e8a287 platform: Add minimal libc support.
libfdt requires minimal libc support. Absoultely
minimum functions are added in libc.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18 10:05:12 +05:30
Atish Patra 8304ee9424 Disable all interrupts during warm irqchip init.
M mode is not expected to recieve any interrupts.
S mode interrupts shouldn't be enabled in M mode.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2018-12-21 22:11:21 -08:00
Atish Patra 88b173b33b Introduce hart disabled parameter in platform.
As of now, uboot doesn't have support for SMP.
Moreover, unleashed board has a E51 hart which
doesn't not support S mode.

We should only boot only 1 non-zero hart.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
2018-12-21 22:11:21 -08:00
Atish Patra 95fbe7d495 Move hardcoded uart constant to macros.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2018-12-21 16:00:28 -08:00
Atish PatraandAnup Patel f003787455 lib: Hang in sbi_hart_boot_next() if next mode is not supported
We should not jump to next stage if next mode (S-mode or U-mode)
is not supported by HART.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-21 11:09:47 +05:30
Atish Patra 1d4e36edf8 Support unsigned long in sbi_printf
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2018-12-20 15:55:32 -08:00
Atish Patra 84971c0bc0 Use wfi for coldboot finish call.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2018-12-20 15:55:27 -08:00
Atish Patra e0a660ec5b Fix baud rate divisor computation for U540.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2018-12-20 15:38:43 -08:00
Atish Patra 3250fe7299 Support /r/n as newline character.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2018-12-20 15:38:43 -08:00
Atish Patra 5adf2fdc9e HiFive Unleashed has 5 harts. Fix the config to reflect that.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2018-12-20 15:38:43 -08:00