1d8e919c7SMasahiro Yamada /* 2247fc043SMasahiro Yamada * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. 3d8e919c7SMasahiro Yamada * 4d8e919c7SMasahiro Yamada * SPDX-License-Identifier: BSD-3-Clause 5d8e919c7SMasahiro Yamada */ 6d8e919c7SMasahiro Yamada 7d8e919c7SMasahiro Yamada #ifndef __UNIPHIER_H__ 8d8e919c7SMasahiro Yamada #define __UNIPHIER_H__ 9d8e919c7SMasahiro Yamada 10d8e919c7SMasahiro Yamada #include <stdint.h> 11*93c78ed2SAntonio Nino Diaz #include <string.h> 12d8e919c7SMasahiro Yamada 13d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_type(void); 14d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_model(void); 15d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_revision(void); 16d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_id(void); 17d8e919c7SMasahiro Yamada 18d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_LD11 0 19d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_LD20 1 20d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_PXS3 2 21d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_UNKNOWN 0xffffffff 22d8e919c7SMasahiro Yamada 23d8e919c7SMasahiro Yamada unsigned int uniphier_get_boot_device(unsigned int soc); 24d8e919c7SMasahiro Yamada 25d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_EMMC 0 26d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_NAND 1 27d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_NOR 2 28d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_USB 3 29d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_RSV 0xffffffff 30d8e919c7SMasahiro Yamada 31d8e919c7SMasahiro Yamada unsigned int uniphier_get_boot_master(unsigned int soc); 32d8e919c7SMasahiro Yamada 33d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_THIS 0 34d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_SCP 1 35d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_EXT 2 36d8e919c7SMasahiro Yamada 37d8e919c7SMasahiro Yamada void uniphier_console_setup(void); 38d8e919c7SMasahiro Yamada 39d8e919c7SMasahiro Yamada int uniphier_emmc_init(uintptr_t *block_dev_spec); 40d8e919c7SMasahiro Yamada int uniphier_nand_init(uintptr_t *block_dev_spec); 41d8e919c7SMasahiro Yamada int uniphier_usb_init(unsigned int soc, uintptr_t *block_dev_spec); 42d8e919c7SMasahiro Yamada 43d8e919c7SMasahiro Yamada int uniphier_io_setup(unsigned int soc); 44d8e919c7SMasahiro Yamada int uniphier_check_image(unsigned int image_id); 450ac60c08SMasahiro Yamada 460ac60c08SMasahiro Yamada struct image_info; 470ac60c08SMasahiro Yamada struct image_info *uniphier_get_image_info(unsigned int image_id); 48d8e919c7SMasahiro Yamada 49d8e919c7SMasahiro Yamada int uniphier_scp_is_running(void); 50d8e919c7SMasahiro Yamada void uniphier_scp_start(void); 51d8e919c7SMasahiro Yamada void uniphier_scp_open_com(void); 52d8e919c7SMasahiro Yamada void uniphier_scp_system_off(void); 53d8e919c7SMasahiro Yamada void uniphier_scp_system_reset(void); 54d8e919c7SMasahiro Yamada 55d8e919c7SMasahiro Yamada struct mmap_region; 56d8e919c7SMasahiro Yamada void uniphier_mmap_setup(uintptr_t total_base, size_t total_size, 57d8e919c7SMasahiro Yamada const struct mmap_region *mmap); 58d8e919c7SMasahiro Yamada 59d8e919c7SMasahiro Yamada void uniphier_cci_init(unsigned int soc); 60d8e919c7SMasahiro Yamada void uniphier_cci_enable(void); 61d8e919c7SMasahiro Yamada void uniphier_cci_disable(void); 62d8e919c7SMasahiro Yamada 63d8e919c7SMasahiro Yamada void uniphier_gic_driver_init(unsigned int soc); 64d8e919c7SMasahiro Yamada void uniphier_gic_init(void); 65d8e919c7SMasahiro Yamada void uniphier_gic_cpuif_enable(void); 66d8e919c7SMasahiro Yamada void uniphier_gic_cpuif_disable(void); 67d8e919c7SMasahiro Yamada void uniphier_gic_pcpu_init(void); 68d8e919c7SMasahiro Yamada 69d8e919c7SMasahiro Yamada unsigned int uniphier_calc_core_pos(u_register_t mpidr); 70d8e919c7SMasahiro Yamada 71d8e919c7SMasahiro Yamada #define UNIPHIER_NS_DRAM_BASE 0x84000000 72247fc043SMasahiro Yamada #define UNIPHIER_NS_DRAM_LIMIT 0x85000000 73247fc043SMasahiro Yamada #define UNIPHIER_NS_DRAM_SIZE ((UNIPHIER_NS_DRAM_LIMIT) - \ 74247fc043SMasahiro Yamada (UNIPHIER_NS_DRAM_BASE)) 75d8e919c7SMasahiro Yamada 76d8e919c7SMasahiro Yamada #define UNIPHIER_BL33_BASE (UNIPHIER_NS_DRAM_BASE) 77d8e919c7SMasahiro Yamada #define UNIPHIER_BL33_MAX_SIZE 0x00100000 78d8e919c7SMasahiro Yamada 79d8e919c7SMasahiro Yamada #define UNIPHIER_SCP_BASE ((UNIPHIER_BL33_BASE) + \ 80d8e919c7SMasahiro Yamada (UNIPHIER_BL33_MAX_SIZE)) 81d8e919c7SMasahiro Yamada #define UNIPHIER_SCP_MAX_SIZE 0x00020000 82d8e919c7SMasahiro Yamada 83247fc043SMasahiro Yamada #define UNIPHIER_BLOCK_BUF_BASE ((UNIPHIER_SCP_BASE) + \ 84247fc043SMasahiro Yamada (UNIPHIER_SCP_MAX_SIZE)) 858951b058SMasahiro Yamada #define UNIPHIER_BLOCK_BUF_SIZE 0x00100000 868951b058SMasahiro Yamada 878951b058SMasahiro Yamada #define UNIPHIER_IMAGE_BUF_BASE ((UNIPHIER_BLOCK_BUF_BASE) + \ 888951b058SMasahiro Yamada (UNIPHIER_BLOCK_BUF_SIZE)) 898951b058SMasahiro Yamada #define UNIPHIER_IMAGE_BUF_SIZE ((UNIPHIER_NS_DRAM_LIMIT) - \ 908951b058SMasahiro Yamada (UNIPHIER_IMAGE_BUF_BASE)) 91247fc043SMasahiro Yamada 92d8e919c7SMasahiro Yamada #endif /* __UNIPHIER_H__ */ 93