summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-01-24docs/platform: Update QEMU platforms documentationDamien Le Moal
Mostly reformating. Some minor edits. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-24docs/platform: Add top level document fileDamien Le Moal
List supported platforms and point to the platform specific document. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-24docs/firmware: Update FW_PAYLOAD documentationDamien Le Moal
Reformatting, typos, and various corrections. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-24docs/firmware: Update FW_JUMP documentationDamien Le Moal
Reformatting, typos, and various corrections. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-24docs/firmware: Add top level document fileDamien Le Moal
Provide an overview of all supported firmware files and point to each firmware type documentation file. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-24docs: Contribution guideline updateDamien Le Moal
Explicitely mention that this project adheres to the Developer Certificate of Origin (DCO) and include this short text. Also reformat the file to have lines bounded at 80 chars and add some more details regarding the expected commit message format. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-24top: Rename LICENSE file to COPYING.BSDDamien Le Moal
Also make sure that this file contains only the official BSD 2-clause license text, nothing else. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-24platform: add template platform filesDamien Le Moal
Create commented template files to use as a base for new platforms support implementation. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-24all: Update copyright header in all filesAnup patel
This patch updates copyright header in all files as follows: 1. Makes "SPDX-License-Identifier: BSD-2-Clause" as first line 2. Change copyright year to 2019 for Western Digital Signed-off-by: Anup Patel <[email protected]>
2019-01-23include: Use TRUE/FALSE as return values in sbi_platform_hart_disabled()Anup Patel
The sbi_platform_hart_disabled() returns bool hence explicitly return TRUE or FALSE instead of 1 or 0. Signed-off-by: Anup Patel <[email protected]>
2019-01-23include: Rename ipi_inject() to ipi_send() for sbi_platformAnup Patel
For better naming, we rename ipi_inject() to ipi_send() in struct sbi_platform. We also replace term "inject" with "send" in all related places. Signed-off-by: Anup Patel <[email protected]>
2019-01-23include: Drop MMIO from SBI_PLATFORM_HAS_MMIO_TIMER_VALUEAnup Patel
It is not necessary that platform has MMIO-based timer value register. It can also have some custom (implementation specific) CSR for timer value. This patch renames SBI_PLATFORM_HAS_MMIO_TIMER_VALUE to SBI_PLATFORM_HAS_TIMER_VALUE to imply "platform timer value" instead of "mmio timer value". Signed-off-by: Anup Patel <[email protected]>
2019-01-23include: Update documentation of sbi_platform after callback cleanupAnup Patel
The prototypes of sbi_platform callbacks have changed hence we update related documentation. Signed-off-by: Anup Patel <[email protected]>
2019-01-23lib: Remove target_hart and hartid parameter from TIMER callbacksAnup Patel
The target_hart and hartid paramter of TIMER callbacks is not required because it always current hartid which can be obtained using sbi_current_hartid() API. Signed-off-by: Anup Patel <[email protected]>
2019-01-23lib: Remove hartid parameter from IRQCHIP callbacksAnup Patel
The hartid parameter in IRQCHIP callbacks of sbi_platform is not required because current hartid can be determined using sbi_current_hartid() API. Signed-off-by: Anup Patel <[email protected]>
2019-01-23lib: Remove source_hart and hartid parameter from IPI callbacksAnup patel
The source_hart and hartid parameter is really not required in IPI callbacks of sbi_platform because current hartid can always be obtained by calling sbi_current_hartid() API. Signed-off-by: Anup Patel <[email protected]>
2019-01-23lib: Remove hartid paramter from early_init() and final_init() callbacksAnup Patel
We simplify early_init() and final_init() callbacks of sbi_platform by removing "hartid" parameter. Signed-off-by: Anup Patel <[email protected]>
2019-01-22docs: Typo fixes.Atish Patra
Signed-off-by: Atish Patra <[email protected]>
2019-01-22docs: Fix nits in firmware/fw_jump.mdBin Meng
Add a space before (FW_JUMP) to make it more readable. This also fixes "No newline at end of file" warning. Signed-off-by: Bin Meng <[email protected]>
2019-01-22top: Fix broken links in top-level README.mdBin Meng
There are 2 markdown links that are currently broken in top-level README.md. Fix them so that github could render the URL correctly. This also fixes "No newline at end of file" warning. Signed-off-by: Bin Meng <[email protected]>
2019-01-22lib: Add doxygen style documentation for sbi_platformAnup Patel
This patch adds doxygen style documenation for struct sbi_platform and related functions/macros/defines. Signed-off-by: Anup Patel <[email protected]>
2019-01-22lib: Update documentation of sbi_init()Anup Patel
We don't need to pre-enable MSIP in MIE CSR when calling sbi_init() from firmware. This patch updates documentation accordingly. Signed-off-by: Anup Patel <[email protected]>
2019-01-22Makefile: Don't install generic headers under <install_dir>/platformAnup Patel
We don't need to install generic headers separately for every platforn under <install_dir>/platform. It is unnecessary duplication of files hence updating install_libplatsbi in top-level makefile. Signed-off-by: Anup Patel <[email protected]>
2019-01-22docs: Add OpenSBI version to doxygen.cfgAnup Patel
The PDF document generated by doxygen should have OpenSBI version hence this patch adds OpenSBI version to doxygen.cfg. Signed-off-by: Anup Patel <[email protected]>
2019-01-22lib: Do not access mi/edeleg register if S mode is not present.Atish Patra
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 <[email protected]>
2019-01-22lib: Allow sending IPI to self.Atish Patra
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 <[email protected]>
2019-01-22lib: Fix ipi type updateAtish Patra
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 <[email protected]>
2019-01-22lib: Add atomic bit set/clear operations.Atish Patra
Add addtional functionlities for set/clear bits atomically. Signed-off-by: Atish Patra <[email protected]>
2019-01-22lib: Move software interrupt enablement from firmware to libAtish Patra
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 <[email protected]>
2019-01-21lib: Use AMO instructions whenever __riscv_atomic is definedAnup Patel
We should use AMO instructions whenever __riscv_atomic is defined (i.e. atomics are supported). We use LR/SC only when __riscv_atomic is not defined. Signed-off-by: Anup Patel <[email protected]>
2019-01-21sbi: Add ecall helpersDamien Le Moal
Define sbi_ecall_console_puts() using sbi_ecall_console_putchar() renamed as sbi_ecall_console_putc() and remove the hardcoded version of the same funtion in the test payload code. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-21payload: rename dummy payload to test payloadDamien Le Moal
Use a more neutral term more representative of this payload intent. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-21kendryte/k210: Add device tree supportDamien Le Moal
The Kendryte k210 board initial loader does not provide a device tree for the firmware and subsequent payload. Add the k210.dts device tree description file to solve this. This file describes only the SoC core components: CPUs, memory and PLIC. Automatically compile and add this file to the firmware generated using the FW_PAYLOAD_FDT_PATH configuration parameter. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-21kendryte/k210: Fix consoleDamien Le Moal
Clear console input when intializing it. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-21Makefile: Improve readabilityDamien Le Moal
Repeating "ifdef CROSS_COMPILE" multiple times does not help with readability. Simplify by grouping compilation command setup under a single ifdef statement. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-21Makefile: Add support for device tree compilationDamien Le Moal
Add rules to compile dts files into dtb files using the device tree compiler (dtc). A platform can specify the DTS file to compile using the platform-dtb-y variable. The flattened device tree binary file to be used for building the final polatform firmware can be specified using the new FW_PAYLOAD_FDT firmware configuration option to point to the automatically compiled FDT file. Using the existing FW_PAYLOAD_FDT_PATH configuration option is still possible and will take precedence over the FW_PAYLOAD_FDT definition. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-21lib: code cleanupDamien Le Moal
Use commonly accepted styles: newlines after declarations and before return to make the code more readable. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-21lib: Fix bannerDamien Le Moal
Define the "OpenSBI" logo string as a macro renamed BANNER, since it is one rather than a logo. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-21build: Introduce FW_PAYLOAD_ALIGNDamien Le Moal
The firmware payload offset defined by FW_PAYLOAD_OFFSET must specify a value large enough so the the payload does not overlap with the base firmware data, bss and text. For platforms without any strong requirement on the payload address, introduce the FW_PAYLOAD_ALIGN build parameter to automatically place the payload right after the base firmware at an address aligned with the defined value. Either FW_PAYLOAD_OFFSET or FW_PAYLOAD_ALIGN should be defined by a platform configuration. If both FW_PAYLOAD_OFFSET and FW_PAYLOAD_ALIGN are defined by a platform, FW_PAYLOAD_OFFSET has precedence and is used for building the final firmawre image. Using FW_PAYLOAD_ALIGN=4096 with the Kendryte platform rather than the abitrary FW_PAYLOAD_OFFSET=0x10000 value reduces the final firmware image size by about 20KB. Add a description of the FW_PAYLOAD_ALIGN configuration parameter in the fw_payload documentation file as well. And while at it, also fix various grammar and style issues in that file.. Signed-off-by: Damien Le Moal <[email protected]>
2019-01-18platform: Fix compile error caused by standard includesAnup Patel
Avoid using standard includes namely stdint.h, string.h, stdlib.h, etc. All standard include except stddef.h give compilation error due to differences in RISC-V toolchain configuration. Typically, the compilation error is related to "gnu-stubs-lp64.h". This patch fixes compile error caused by standard includes by providing substitutes of definetions provided by standard includes wherever required. Signed-off-by: Anup Patel <[email protected]>
2019-01-18platform: No need to pass context id for plic fixup.Atish Patra
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 <[email protected]>
2019-01-18platform: Modify DT using libfdtAtish Patra
Perform following DT updates. 1. Mask hart if mmu is not supported. 2. Add stdout-path under chosen node. Signed-off-by: Atish Patra <[email protected]>
2019-01-18docs: Add licensing seciton for external projects.Atish Patra
Signed-off-by: Atish Patra <[email protected]>
2019-01-18platform: Remove string functions from tinyfdt.cAtish Patra
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 <[email protected]>
2019-01-18platform: Include libfdt & libc.Atish Patra
Signed-off-by: Atish Patra <[email protected]>
2019-01-18platform: Rename fdt.c to tinyfdt.cAtish Patra
Libfdt already have fdt.c and fdt.h. Rename both fdt.* present in openSBI to tinyfdt.* Signed-off-by: Atish Patra <[email protected]>
2019-01-18platform: Add libfdt support.Atish Patra
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 <[email protected]>
2019-01-18platform: Add minimal libc support.Atish Patra
libfdt requires minimal libc support. Absoultely minimum functions are added in libc. Signed-off-by: Atish Patra <[email protected]>
2019-01-16include: Add documentation for sbi_trap_regs and friendsAnup Patel
This patch adds doxygen style documentation for struct sbi_trap_regs and related macros/defines/functions. Signed-off-by: Anup Patel <[email protected]>
2019-01-16include: Add __packed define for packed structuresAnup Patel
This patch adds __packed define for specifying packed attribute of structures. Signed-off-by: Anup Patel <[email protected]>