1*54fd6939SJiyong Park /* 2*54fd6939SJiyong Park * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved. 3*54fd6939SJiyong Park * 4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park */ 6*54fd6939SJiyong Park 7*54fd6939SJiyong Park #ifndef UNIPHIER_H 8*54fd6939SJiyong Park #define UNIPHIER_H 9*54fd6939SJiyong Park 10*54fd6939SJiyong Park #include <stdint.h> 11*54fd6939SJiyong Park #include <string.h> 12*54fd6939SJiyong Park 13*54fd6939SJiyong Park unsigned int uniphier_get_soc_type(void); 14*54fd6939SJiyong Park unsigned int uniphier_get_soc_model(void); 15*54fd6939SJiyong Park unsigned int uniphier_get_soc_revision(void); 16*54fd6939SJiyong Park unsigned int uniphier_get_soc_id(void); 17*54fd6939SJiyong Park 18*54fd6939SJiyong Park #define UNIPHIER_SOC_LD11 0 19*54fd6939SJiyong Park #define UNIPHIER_SOC_LD20 1 20*54fd6939SJiyong Park #define UNIPHIER_SOC_PXS3 2 21*54fd6939SJiyong Park #define UNIPHIER_SOC_UNKNOWN 0xffffffff 22*54fd6939SJiyong Park 23*54fd6939SJiyong Park unsigned int uniphier_get_boot_device(unsigned int soc); 24*54fd6939SJiyong Park 25*54fd6939SJiyong Park #define UNIPHIER_BOOT_DEVICE_EMMC 0 26*54fd6939SJiyong Park #define UNIPHIER_BOOT_DEVICE_NAND 1 27*54fd6939SJiyong Park #define UNIPHIER_BOOT_DEVICE_NOR 2 28*54fd6939SJiyong Park #define UNIPHIER_BOOT_DEVICE_SD 3 29*54fd6939SJiyong Park #define UNIPHIER_BOOT_DEVICE_USB 4 30*54fd6939SJiyong Park #define UNIPHIER_BOOT_DEVICE_RSV 0xffffffff 31*54fd6939SJiyong Park 32*54fd6939SJiyong Park unsigned int uniphier_get_boot_master(unsigned int soc); 33*54fd6939SJiyong Park 34*54fd6939SJiyong Park #define UNIPHIER_BOOT_MASTER_THIS 0 35*54fd6939SJiyong Park #define UNIPHIER_BOOT_MASTER_SCP 1 36*54fd6939SJiyong Park #define UNIPHIER_BOOT_MASTER_EXT 2 37*54fd6939SJiyong Park 38*54fd6939SJiyong Park void uniphier_console_setup(unsigned int soc); 39*54fd6939SJiyong Park 40*54fd6939SJiyong Park struct io_block_dev_spec; 41*54fd6939SJiyong Park int uniphier_emmc_init(unsigned int soc, 42*54fd6939SJiyong Park struct io_block_dev_spec **block_dev_spec); 43*54fd6939SJiyong Park int uniphier_nand_init(unsigned int soc, 44*54fd6939SJiyong Park struct io_block_dev_spec **block_dev_spec); 45*54fd6939SJiyong Park int uniphier_usb_init(unsigned int soc, 46*54fd6939SJiyong Park struct io_block_dev_spec **block_dev_spec); 47*54fd6939SJiyong Park 48*54fd6939SJiyong Park int uniphier_io_setup(unsigned int soc, uintptr_t mem_base); 49*54fd6939SJiyong Park 50*54fd6939SJiyong Park void uniphier_init_image_descs(uintptr_t mem_base); 51*54fd6939SJiyong Park struct image_info; 52*54fd6939SJiyong Park struct image_info *uniphier_get_image_info(unsigned int image_id); 53*54fd6939SJiyong Park 54*54fd6939SJiyong Park int uniphier_scp_is_running(void); 55*54fd6939SJiyong Park void uniphier_scp_start(uint32_t scp_base); 56*54fd6939SJiyong Park void uniphier_scp_open_com(void); 57*54fd6939SJiyong Park void uniphier_scp_system_off(void); 58*54fd6939SJiyong Park void uniphier_scp_system_reset(void); 59*54fd6939SJiyong Park 60*54fd6939SJiyong Park void uniphier_mmap_setup(unsigned int soc); 61*54fd6939SJiyong Park 62*54fd6939SJiyong Park void uniphier_cci_init(unsigned int soc); 63*54fd6939SJiyong Park void uniphier_cci_enable(void); 64*54fd6939SJiyong Park void uniphier_cci_disable(void); 65*54fd6939SJiyong Park 66*54fd6939SJiyong Park void uniphier_gic_driver_init(unsigned int soc); 67*54fd6939SJiyong Park void uniphier_gic_init(void); 68*54fd6939SJiyong Park void uniphier_gic_cpuif_enable(void); 69*54fd6939SJiyong Park void uniphier_gic_cpuif_disable(void); 70*54fd6939SJiyong Park void uniphier_gic_pcpu_init(void); 71*54fd6939SJiyong Park 72*54fd6939SJiyong Park void uniphier_psci_init(unsigned int soc); 73*54fd6939SJiyong Park 74*54fd6939SJiyong Park unsigned int uniphier_calc_core_pos(u_register_t mpidr); 75*54fd6939SJiyong Park 76*54fd6939SJiyong Park #endif /* UNIPHIER_H */ 77