1*d8e919c7SMasahiro Yamada /* 2*d8e919c7SMasahiro Yamada * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 3*d8e919c7SMasahiro Yamada * 4*d8e919c7SMasahiro Yamada * SPDX-License-Identifier: BSD-3-Clause 5*d8e919c7SMasahiro Yamada */ 6*d8e919c7SMasahiro Yamada 7*d8e919c7SMasahiro Yamada #ifndef __UNIPHIER_H__ 8*d8e919c7SMasahiro Yamada #define __UNIPHIER_H__ 9*d8e919c7SMasahiro Yamada 10*d8e919c7SMasahiro Yamada #include <stdint.h> 11*d8e919c7SMasahiro Yamada #include <types.h> 12*d8e919c7SMasahiro Yamada 13*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_type(void); 14*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_model(void); 15*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_revision(void); 16*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_id(void); 17*d8e919c7SMasahiro Yamada 18*d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_LD11 0 19*d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_LD20 1 20*d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_PXS3 2 21*d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_UNKNOWN 0xffffffff 22*d8e919c7SMasahiro Yamada 23*d8e919c7SMasahiro Yamada unsigned int uniphier_get_boot_device(unsigned int soc); 24*d8e919c7SMasahiro Yamada 25*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_EMMC 0 26*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_NAND 1 27*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_NOR 2 28*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_USB 3 29*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_RSV 0xffffffff 30*d8e919c7SMasahiro Yamada 31*d8e919c7SMasahiro Yamada unsigned int uniphier_get_boot_master(unsigned int soc); 32*d8e919c7SMasahiro Yamada 33*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_THIS 0 34*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_SCP 1 35*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_EXT 2 36*d8e919c7SMasahiro Yamada 37*d8e919c7SMasahiro Yamada void uniphier_console_setup(void); 38*d8e919c7SMasahiro Yamada 39*d8e919c7SMasahiro Yamada int uniphier_emmc_init(uintptr_t *block_dev_spec); 40*d8e919c7SMasahiro Yamada int uniphier_nand_init(uintptr_t *block_dev_spec); 41*d8e919c7SMasahiro Yamada int uniphier_usb_init(unsigned int soc, uintptr_t *block_dev_spec); 42*d8e919c7SMasahiro Yamada 43*d8e919c7SMasahiro Yamada int uniphier_io_setup(unsigned int soc); 44*d8e919c7SMasahiro Yamada int uniphier_check_image(unsigned int image_id); 45*d8e919c7SMasahiro Yamada void uniphier_image_descs_fixup(void); 46*d8e919c7SMasahiro Yamada 47*d8e919c7SMasahiro Yamada int uniphier_scp_is_running(void); 48*d8e919c7SMasahiro Yamada void uniphier_scp_start(void); 49*d8e919c7SMasahiro Yamada void uniphier_scp_open_com(void); 50*d8e919c7SMasahiro Yamada void uniphier_scp_system_off(void); 51*d8e919c7SMasahiro Yamada void uniphier_scp_system_reset(void); 52*d8e919c7SMasahiro Yamada 53*d8e919c7SMasahiro Yamada struct mmap_region; 54*d8e919c7SMasahiro Yamada void uniphier_mmap_setup(uintptr_t total_base, size_t total_size, 55*d8e919c7SMasahiro Yamada const struct mmap_region *mmap); 56*d8e919c7SMasahiro Yamada 57*d8e919c7SMasahiro Yamada void uniphier_cci_init(unsigned int soc); 58*d8e919c7SMasahiro Yamada void uniphier_cci_enable(void); 59*d8e919c7SMasahiro Yamada void uniphier_cci_disable(void); 60*d8e919c7SMasahiro Yamada 61*d8e919c7SMasahiro Yamada void uniphier_gic_driver_init(unsigned int soc); 62*d8e919c7SMasahiro Yamada void uniphier_gic_init(void); 63*d8e919c7SMasahiro Yamada void uniphier_gic_cpuif_enable(void); 64*d8e919c7SMasahiro Yamada void uniphier_gic_cpuif_disable(void); 65*d8e919c7SMasahiro Yamada void uniphier_gic_pcpu_init(void); 66*d8e919c7SMasahiro Yamada 67*d8e919c7SMasahiro Yamada unsigned int uniphier_calc_core_pos(u_register_t mpidr); 68*d8e919c7SMasahiro Yamada 69*d8e919c7SMasahiro Yamada #define UNIPHIER_NS_DRAM_BASE 0x84000000 70*d8e919c7SMasahiro Yamada #define UNIPHIER_NS_DRAM_SIZE 0x01000000 71*d8e919c7SMasahiro Yamada 72*d8e919c7SMasahiro Yamada #define UNIPHIER_BL33_BASE (UNIPHIER_NS_DRAM_BASE) 73*d8e919c7SMasahiro Yamada #define UNIPHIER_BL33_MAX_SIZE 0x00100000 74*d8e919c7SMasahiro Yamada 75*d8e919c7SMasahiro Yamada #define UNIPHIER_SCP_BASE ((UNIPHIER_BL33_BASE) + \ 76*d8e919c7SMasahiro Yamada (UNIPHIER_BL33_MAX_SIZE)) 77*d8e919c7SMasahiro Yamada #define UNIPHIER_SCP_MAX_SIZE 0x00020000 78*d8e919c7SMasahiro Yamada 79*d8e919c7SMasahiro Yamada #endif /* __UNIPHIER_H__ */ 80