summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-01-24all: Update copyright header in all filesAnup patel88-260/+260
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 <anup.patel@wdc.com>
2019-01-23include: Use TRUE/FALSE as return values in sbi_platform_hart_disabled()Anup Patel1-2/+2
The sbi_platform_hart_disabled() returns bool hence explicitly return TRUE or FALSE instead of 1 or 0. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-23include: Rename ipi_inject() to ipi_send() for sbi_platformAnup Patel9-15/+15
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 <anup.patel@wdc.com>
2019-01-23include: Drop MMIO from SBI_PLATFORM_HAS_MMIO_TIMER_VALUEAnup Patel3-8/+8
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 <anup.patel@wdc.com>
2019-01-23include: Update documentation of sbi_platform after callback cleanupAnup Patel1-16/+16
The prototypes of sbi_platform callbacks have changed hence we update related documentation. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-23lib: Remove target_hart and hartid parameter from TIMER callbacksAnup Patel12-47/+44
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 <anup.patel@wdc.com>
2019-01-23lib: Remove hartid parameter from IRQCHIP callbacksAnup Patel6-10/+17
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 <anup.patel@wdc.com>
2019-01-23lib: Remove source_hart and hartid parameter from IPI callbacksAnup patel13-55/+52
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 <anup.patel@wdc.com>
2019-01-23lib: Remove hartid paramter from early_init() and final_init() callbacksAnup Patel7-28/+22
We simplify early_init() and final_init() callbacks of sbi_platform by removing "hartid" parameter. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-22docs: Typo fixes.Atish Patra4-20/+22
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-22docs: Fix nits in firmware/fw_jump.mdBin Meng1-3/+3
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 <bmeng.cn@gmail.com>
2019-01-22top: Fix broken links in top-level README.mdBin Meng1-4/+5
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 <bmeng.cn@gmail.com>
2019-01-22lib: Add doxygen style documentation for sbi_platformAnup Patel2-10/+235
This patch adds doxygen style documenation for struct sbi_platform and related functions/macros/defines. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-22lib: Update documentation of sbi_init()Anup Patel1-1/+1
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 <anup.patel@wdc.com>
2019-01-22Makefile: Don't install generic headers under <install_dir>/platformAnup Patel1-1/+0
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 <anup.patel@wdc.com>
2019-01-22docs: Add OpenSBI version to doxygen.cfgAnup Patel2-2/+2
The PDF document generated by doxygen should have OpenSBI version hence this patch adds OpenSBI version to doxygen.cfg. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-22lib: Do not access mi/edeleg register if S mode is not present.Atish Patra1-15/+13
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-22lib: Allow sending IPI to self.Atish Patra1-1/+1
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-22lib: Fix ipi type updateAtish Patra1-16/+27
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-22lib: Add atomic bit set/clear operations.Atish Patra5-0/+179
Add addtional functionlities for set/clear bits atomically. Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-22lib: Move software interrupt enablement from firmware to libAtish Patra2-4/+4
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-21lib: Use AMO instructions whenever __riscv_atomic is definedAnup Patel1-0/+24
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 <anup.patel@wdc.com>
2019-01-21sbi: Add ecall helpersDamien Le Moal2-10/+11
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 <damien.lemoal@wdc.com>
2019-01-21payload: rename dummy payload to test payloadDamien Le Moal6-9/+10
Use a more neutral term more representative of this payload intent. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21kendryte/k210: Add device tree supportDamien Le Moal3-0/+72
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 <damien.lemoal@wdc.com>
2019-01-21kendryte/k210: Fix consoleDamien Le Moal1-3/+7
Clear console input when intializing it. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21Makefile: Improve readabilityDamien Le Moal1-24/+13
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 <damien.lemoal@wdc.com>
2019-01-21Makefile: Add support for device tree compilationDamien Le Moal4-0/+25
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 <damien.lemoal@wdc.com>
2019-01-21lib: code cleanupDamien Le Moal1-0/+5
Use commonly accepted styles: newlines after declarations and before return to make the code more readable. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21lib: Fix bannerDamien Le Moal1-11/+11
Define the "OpenSBI" logo string as a macro renamed BANNER, since it is one rather than a logo. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
2019-01-21build: Introduce FW_PAYLOAD_ALIGNDamien Le Moal5-41/+66
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 <damien.lemoal@wdc.com>
2019-01-18platform: Fix compile error caused by standard includesAnup Patel5-15/+60
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 <anup.patel@wdc.com>
2019-01-18platform: No need to pass context id for plic fixup.Atish Patra5-17/+11
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-18platform: Modify DT using libfdtAtish Patra1-4/+37
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-18docs: Add licensing seciton for external projects.Atish Patra1-0/+13
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18platform: Remove string functions from tinyfdt.cAtish Patra5-26/+18
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-18platform: Include libfdt & libc.Atish Patra3-0/+6
Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-18platform: Rename fdt.c to tinyfdt.cAtish Patra4-2/+2
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-18platform: Add libfdt support.Atish Patra18-1/+5875
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-18platform: Add minimal libc support.Atish Patra2-0/+185
libfdt requires minimal libc support. Absoultely minimum functions are added in libc. Signed-off-by: Atish Patra <atish.patra@wdc.com>
2019-01-16include: Add documentation for sbi_trap_regs and friendsAnup Patel4-7/+106
This patch adds doxygen style documentation for struct sbi_trap_regs and related macros/defines/functions. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-16include: Add __packed define for packed structuresAnup Patel1-0/+1
This patch adds __packed define for specifying packed attribute of structures. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-16include: Add documentation for sbi_scratch and friendsAnup Patel1-0/+22
This patch adds doxygen style documentation for struct sbi_scratch and related helper macros/defines. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-16lib: Add documentation for sbi_init() APIAnup Patel2-6/+15
This patch adds doxygen style documentation for sbi_init() API. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-16include: Add __noreturn define for noreturn function attributeAnup Patel1-0/+2
There are quite a few noreturn functions in OpenSBI hence we add commong __noreturn define for noreturn functin attribute. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-16docs: Update title in contributing.mdAnup Patel1-2/+2
The patch updates title in contributing.md to match other .md files under docs/ directory. Signed-off-by: Anup Patel <anup.pate@wdc.com>
2019-01-16top: Update top-level README.md to build/install documentation PDFAnup Patel1-15/+30
This patch updates top-level README.md for steps required to build and install documentation PDF. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-16Makefile: Add make targets to build and install documentationAnup Patel2-0/+2475
This patch extends top-level makefile to build and install documentation. The 'docs' make target is for building the documentation PDF whereas 'install_docs' make target is for installing the documentation PDF. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-05Makefile: Use '=' instead of '?=' for make variablesAnup Patel1-6/+26
The '?=' will not assign value if the target make variable is overriden via command-line or is set in environment variable. On other hand, '=' will not assign value only if variable is overriden via command-line parameter. It is quite common to have CC, AS, CPP, LD, etc to be set as environment variables pointing to native compiler and binutils. If '-rR' option is not set in MAKEFLAGS then this results in compile error because '?=' will use the native compiler and binutils. If '-rR' option is set in MAKEFLAGS then this again results in compile error because CC, AS, CPP, etc are set to empty strings which causes '?=' to use empty string as compiler and binutils. To handle this, we use '?=' only when CROSS_COMPILE is not defined and we use '=' when CROSS_COMPILE is defined. Signed-off-by: Anup Patel <anup.patel@wdc.com>
2019-01-04docs: Add a contributing documentAlistair Francis1-0/+13
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>