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