From 793e5e1184f04012804914bd922e68536f3b68dd Mon Sep 17 00:00:00 2001 From: Atish Patra Date: Tue, 18 Jun 2019 14:54:03 -0700 Subject: 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 Acked-by: Anup Patel --- include/sbi_utils/irqchip/plic.h | 21 +++++++++++ include/sbi_utils/serial/sifive-uart.h | 21 +++++++++++ include/sbi_utils/serial/uart8250.h | 22 +++++++++++ include/sbi_utils/sys/clint.h | 35 ++++++++++++++++++ include/sbi_utils/tinyfdt.h | 67 ++++++++++++++++++++++++++++++++++ 5 files changed, 166 insertions(+) create mode 100644 include/sbi_utils/irqchip/plic.h create mode 100644 include/sbi_utils/serial/sifive-uart.h create mode 100644 include/sbi_utils/serial/uart8250.h create mode 100644 include/sbi_utils/sys/clint.h create mode 100644 include/sbi_utils/tinyfdt.h (limited to 'include/sbi_utils') diff --git a/include/sbi_utils/irqchip/plic.h b/include/sbi_utils/irqchip/plic.h new file mode 100644 index 00000000..eb97123b --- /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 + */ + +#ifndef __IRQCHIP_PLIC_H__ +#define __IRQCHIP_PLIC_H__ + +#include + +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 00000000..f3233921 --- /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 + */ + +#ifndef __SERIAL_SIFIVE_UART_H__ +#define __SERIAL_SIFIVE_UART_H__ + +#include + +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 00000000..0a1b5d36 --- /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 + */ + +#ifndef __SERIAL_UART8250_H__ +#define __SERIAL_UART8250_H__ + +#include + +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 00000000..78e12099 --- /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 + */ + +#ifndef __SYS_CLINT_H__ +#define __SYS_CLINT_H__ + +#include + +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 00000000..3a681d97 --- /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 + */ + +#ifndef __FDT_H__ +#define __FDT_H__ + +#include + +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 -- cgit v1.3.1