blob: 6cf46704f245a261738c57cad94807b23c26ad22 [file] [log] [blame]
Samuel Holland58032582017-08-12 04:07:39 -05001/*
Samuel Hollanda1d349b2021-01-24 06:37:29 -06002 * Copyright (c) 2017-2021, ARM Limited and Contributors. All rights reserved.
Samuel Holland58032582017-08-12 04:07:39 -05003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Andre Przywara4ec1a232018-10-14 12:02:02 +01007#ifndef SUNXI_PRIVATE_H
8#define SUNXI_PRIVATE_H
Samuel Holland58032582017-08-12 04:07:39 -05009
Samuel Hollandfe753c92021-01-16 00:56:48 -060010#include <lib/psci/psci.h>
11
Samuel Holland58032582017-08-12 04:07:39 -050012void sunxi_configure_mmu_el3(int flags);
Andre Przywara4ec1a232018-10-14 12:02:02 +010013
Samuel Holland5d4bd662019-02-17 15:33:33 -060014void sunxi_cpu_on(u_register_t mpidr);
Samuel Hollanda1d349b2021-01-24 06:37:29 -060015void sunxi_cpu_power_off_others(void);
16void sunxi_cpu_power_off_self(void);
Samuel Holland818e6732019-10-20 15:06:57 -050017void sunxi_power_down(void);
Andre Przywara4ec1a232018-10-14 12:02:02 +010018
Andre Przywarab23ab8e2021-01-20 00:09:44 +000019#if SUNXI_PSCI_USE_NATIVE
Samuel Hollandfe753c92021-01-16 00:56:48 -060020void sunxi_set_native_psci_ops(const plat_psci_ops_t **psci_ops);
Andre Przywarab23ab8e2021-01-20 00:09:44 +000021#else
22static inline void sunxi_set_native_psci_ops(const plat_psci_ops_t **psci_ops)
23{
24}
25#endif
26#if SUNXI_PSCI_USE_SCPI
Samuel Hollandfe753c92021-01-16 00:56:48 -060027int sunxi_set_scpi_psci_ops(const plat_psci_ops_t **psci_ops);
Andre Przywarab23ab8e2021-01-20 00:09:44 +000028#else
29static inline int sunxi_set_scpi_psci_ops(const plat_psci_ops_t **psci_ops)
30{
31 return -1;
32}
33#endif
Samuel Hollandfe753c92021-01-16 00:56:48 -060034int sunxi_validate_ns_entrypoint(uintptr_t ns_entrypoint);
35
Andre Przywaradf301602018-09-08 19:18:37 +010036int sunxi_pmic_setup(uint16_t socid, const void *fdt);
Andre Przywara4ec1a232018-10-14 12:02:02 +010037void sunxi_security_setup(void);
Samuel Holland58032582017-08-12 04:07:39 -050038
Andre Przywarac4143b72018-06-22 00:47:08 +010039uint16_t sunxi_read_soc_id(void);
Andre Przywara7020dca2018-10-14 12:03:23 +010040void sunxi_set_gpio_out(char port, int pin, bool level_high);
Andre Przywarad5ddf672018-10-14 22:13:53 +010041int sunxi_init_platform_r_twi(uint16_t socid, bool use_rsb);
Samuel Holland5cffedc2019-10-20 14:18:48 -050042void sunxi_execute_arisc_code(uint32_t *code, size_t size, uint16_t param);
Icenowy Zheng7c26b6e2018-07-21 20:41:12 +080043
Andre Przywara0be10ee2020-12-14 12:06:24 +000044#ifdef SUNXI_BL31_IN_DRAM
45void sunxi_prepare_dtb(void *fdt);
46#else
47static inline void sunxi_prepare_dtb(void *fdt)
48{
49}
50#endif
51
Andre Przywara4ec1a232018-10-14 12:02:02 +010052#endif /* SUNXI_PRIVATE_H */