diff options
author | Atish Patra <atish.patra@wdc.com> | 2019-06-19 00:54:03 +0300 |
---|---|---|
committer | Anup Patel <anup.patel@wdc.com> | 2019-06-19 07:18:56 +0300 |
commit | 793e5e1184f04012804914bd922e68536f3b68dd (patch) | |
tree | cb2ec2a81ed5e832de5c9c8a79dca17fce599af8 /include/sbi_utils | |
parent | 98aaf8317b74414afa78078bc056670f46c45f41 (diff) | |
download | opensbi-793e5e1184f04012804914bd922e68536f3b68dd.tar.xz |
platform: Move platform common to lib/utils.
Currently, platform/common contains platform/non-platform specific
common minimal drivers and libraries. This is helpful is all platforms
are built within opensbi framework.
Move them to lib/utils so that any external platform code also can
reuse the minimalistic drivers or other common libraries.
This patch doesn't introduce any functional changes.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
Acked-by: Anup Patel <anup.patel@wdc.com>
Diffstat (limited to 'include/sbi_utils')
-rw-r--r-- | include/sbi_utils/irqchip/plic.h | 21 | ||||
-rw-r--r-- | include/sbi_utils/serial/sifive-uart.h | 21 | ||||
-rw-r--r-- | include/sbi_utils/serial/uart8250.h | 22 | ||||
-rw-r--r-- | include/sbi_utils/sys/clint.h | 35 | ||||
-rw-r--r-- | include/sbi_utils/tinyfdt.h | 67 |
5 files changed, 166 insertions, 0 deletions
diff --git a/include/sbi_utils/irqchip/plic.h b/include/sbi_utils/irqchip/plic.h new file mode 100644 index 0000000..eb97123 --- /dev/null +++ b/include/sbi_utils/irqchip/plic.h @@ -0,0 +1,21 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2019 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel <anup.patel@wdc.com> + */ + +#ifndef __IRQCHIP_PLIC_H__ +#define __IRQCHIP_PLIC_H__ + +#include <sbi/sbi_types.h> + +void plic_fdt_fixup(void *fdt, const char *compat); + +int plic_warm_irqchip_init(u32 target_hart, int m_cntx_id, int s_cntx_id); + +int plic_cold_irqchip_init(unsigned long base, u32 num_sources, u32 hart_count); + +#endif diff --git a/include/sbi_utils/serial/sifive-uart.h b/include/sbi_utils/serial/sifive-uart.h new file mode 100644 index 0000000..f323392 --- /dev/null +++ b/include/sbi_utils/serial/sifive-uart.h @@ -0,0 +1,21 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2019 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel <anup.patel@wdc.com> + */ + +#ifndef __SERIAL_SIFIVE_UART_H__ +#define __SERIAL_SIFIVE_UART_H__ + +#include <sbi/sbi_types.h> + +void sifive_uart_putc(char ch); + +int sifive_uart_getc(void); + +int sifive_uart_init(unsigned long base, u32 in_freq, u32 baudrate); + +#endif diff --git a/include/sbi_utils/serial/uart8250.h b/include/sbi_utils/serial/uart8250.h new file mode 100644 index 0000000..0a1b5d3 --- /dev/null +++ b/include/sbi_utils/serial/uart8250.h @@ -0,0 +1,22 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2019 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel <anup.patel@wdc.com> + */ + +#ifndef __SERIAL_UART8250_H__ +#define __SERIAL_UART8250_H__ + +#include <sbi/sbi_types.h> + +void uart8250_putc(char ch); + +int uart8250_getc(void); + +int uart8250_init(unsigned long base, u32 in_freq, u32 baudrate, u32 reg_shift, + u32 reg_width); + +#endif diff --git a/include/sbi_utils/sys/clint.h b/include/sbi_utils/sys/clint.h new file mode 100644 index 0000000..78e1209 --- /dev/null +++ b/include/sbi_utils/sys/clint.h @@ -0,0 +1,35 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2019 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel <anup.patel@wdc.com> + */ + +#ifndef __SYS_CLINT_H__ +#define __SYS_CLINT_H__ + +#include <sbi/sbi_types.h> + +void clint_ipi_send(u32 target_hart); + +void clint_ipi_sync(u32 target_hart); + +void clint_ipi_clear(u32 target_hart); + +int clint_warm_ipi_init(void); + +int clint_cold_ipi_init(unsigned long base, u32 hart_count); + +u64 clint_timer_value(void); + +void clint_timer_event_stop(void); + +void clint_timer_event_start(u64 next_event); + +int clint_warm_timer_init(void); + +int clint_cold_timer_init(unsigned long base, u32 hart_count); + +#endif diff --git a/include/sbi_utils/tinyfdt.h b/include/sbi_utils/tinyfdt.h new file mode 100644 index 0000000..3a681d9 --- /dev/null +++ b/include/sbi_utils/tinyfdt.h @@ -0,0 +1,67 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2019 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel <anup.patel@wdc.com> + */ + +#ifndef __FDT_H__ +#define __FDT_H__ + +#include <sbi/sbi_types.h> + +struct fdt_node { + char *data; + const struct fdt_node *parent; + const char *name; + int depth; + int address_cells; + int size_cells; +}; + +struct fdt_prop { + const struct fdt_node *node; + const char *name; + void *value; + u32 len; +}; + +/* Reverse byte-order of 32bit number */ +u32 fdt_rev32(u32 v); + +/* Length of a string */ +ulong fdt_strlen(const char *str); + +/* Compate two strings */ +int fdt_strcmp(const char *a, const char *b); + +/* Find index of matching string from a list of strings */ +int fdt_prop_string_index(const struct fdt_prop *prop, const char *str); + +/* Iterate over each property of matching node */ +int fdt_match_node_prop(void *fdt, + int (*match)(const struct fdt_node *node, + const struct fdt_prop *prop, void *priv), + void *match_priv, + void (*fn)(const struct fdt_node *node, + const struct fdt_prop *prop, void *priv), + void *fn_priv); + +/* Iterate over each property of compatible node */ +int fdt_compat_node_prop(void *fdt, const char *compat, + void (*fn)(const struct fdt_node *node, + const struct fdt_prop *prop, void *priv), + void *fn_priv); + +/* Iterate over each node and property */ +int fdt_walk(void *fdt, + void (*fn)(const struct fdt_node *node, + const struct fdt_prop *prop, void *priv), + void *fn_priv); + +/* Get size of FDT */ +u32 fdt_size(void *fdt); + +#endif |