xref: /optee_os/core/arch/arm/plat-hikey/hikey_peripherals.h (revision 1bb929836182ecb96d2d9d268daa807c67596396)
1*1bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-3-Clause */
271c1078aSVictor Chong /*
371c1078aSVictor Chong  * Copyright (c) 2016, Linaro Ltd and Contributors. All rights reserved.
471c1078aSVictor Chong  * Copyright (c) 2016, Hisilicon Ltd and Contributors. All rights reserved.
571c1078aSVictor Chong  *
671c1078aSVictor Chong  * Redistribution and use in source and binary forms, with or without
771c1078aSVictor Chong  * modification, are permitted provided that the following conditions are met:
871c1078aSVictor Chong  *
971c1078aSVictor Chong  * Redistributions of source code must retain the above copyright notice, this
1071c1078aSVictor Chong  * list of conditions and the following disclaimer.
1171c1078aSVictor Chong  *
1271c1078aSVictor Chong  * Redistributions in binary form must reproduce the above copyright notice,
1371c1078aSVictor Chong  * this list of conditions and the following disclaimer in the documentation
1471c1078aSVictor Chong  * and/or other materials provided with the distribution.
1571c1078aSVictor Chong  *
1671c1078aSVictor Chong  * Neither the name of ARM nor the names of its contributors may be used
1771c1078aSVictor Chong  * to endorse or promote products derived from this software without specific
1871c1078aSVictor Chong  * prior written permission.
1971c1078aSVictor Chong  *
2071c1078aSVictor Chong  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2171c1078aSVictor Chong  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2271c1078aSVictor Chong  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2371c1078aSVictor Chong  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
2471c1078aSVictor Chong  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2571c1078aSVictor Chong  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2671c1078aSVictor Chong  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2771c1078aSVictor Chong  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2871c1078aSVictor Chong  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2971c1078aSVictor Chong  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
3071c1078aSVictor Chong  * POSSIBILITY OF SUCH DAMAGE.
3171c1078aSVictor Chong  */
3271c1078aSVictor Chong 
3371c1078aSVictor Chong #ifndef __HIKEY_PERIPHERALS_H__
3471c1078aSVictor Chong #define __HIKEY_PERIPHERALS_H__
3571c1078aSVictor Chong 
3671c1078aSVictor Chong #include <types_ext.h>
3771c1078aSVictor Chong 
3871c1078aSVictor Chong #define PMUSSI_BASE	0xF8000000
3971c1078aSVictor Chong #define PERI_BASE	0xF7030000
4071c1078aSVictor Chong #define PMX0_BASE	0xF7010000
4171c1078aSVictor Chong #define PMX1_BASE	0xF7010800
4271c1078aSVictor Chong #define GPIO6_BASE	0xF7022000
4371c1078aSVictor Chong #define SPI_BASE	0xF7106000
4471c1078aSVictor Chong 
4571c1078aSVictor Chong #define PMUSSI_REG_SIZE		0x1000
4671c1078aSVictor Chong #define PERI_BASE_REG_SIZE	0x2000
4771c1078aSVictor Chong #define PMX0_REG_SIZE		0x27c
4871c1078aSVictor Chong #define PMX1_REG_SIZE		0x28c
4971c1078aSVictor Chong 
5071c1078aSVictor Chong /* register offsets */
5171c1078aSVictor Chong #define PMUSSI_LDO21_REG_ADJ	SHIFT_U32(0x86, 2)
5271c1078aSVictor Chong #define PMUSSI_ENA_LDO17_22	SHIFT_U32(0x2F, 2)
5371c1078aSVictor Chong 
5471c1078aSVictor Chong #define PERI_SC_PERIPH_RSTDIS3	0x334
5571c1078aSVictor Chong #define PERI_SC_PERIPH_RSTSTAT3	0x338
5671c1078aSVictor Chong #define PERI_SC_PERIPH_CLKEN3	0x230
5771c1078aSVictor Chong #define PERI_SC_PERIPH_CLKSTAT3	0x238
5871c1078aSVictor Chong 
5971c1078aSVictor Chong #define PMX0_IOMG104	0x1a0
6071c1078aSVictor Chong #define PMX0_IOMG105	0x1a4
6171c1078aSVictor Chong #define PMX0_IOMG106	0x1a8
6271c1078aSVictor Chong #define PMX0_IOMG107	0x1ac
6371c1078aSVictor Chong 
6471c1078aSVictor Chong #define PMX1_IOCG104	0x1b0
6571c1078aSVictor Chong #define PMX1_IOCG105	0x1b4
6671c1078aSVictor Chong #define PMX1_IOCG106	0x1b8
6771c1078aSVictor Chong #define PMX1_IOCG107	0x1bc
6871c1078aSVictor Chong /* end register offsets */
6971c1078aSVictor Chong 
7071c1078aSVictor Chong #define PMUSSI_LDO21_REG_VL_MASK	0x7
7171c1078aSVictor Chong #define PMUSSI_LDO21_REG_VL_1V8		0x3
7271c1078aSVictor Chong #define PMUSSI_ENA_LDO21		BIT(4)
7371c1078aSVictor Chong 
7471c1078aSVictor Chong #define PERI_RST3_SSP	BIT(9)
7571c1078aSVictor Chong #define PERI_CLK3_SSP	BIT(9)
7671c1078aSVictor Chong 
7771c1078aSVictor Chong #define PINMUX_GPIO	0
7871c1078aSVictor Chong #define PINMUX_SPI	1
7971c1078aSVictor Chong 
8071c1078aSVictor Chong #define PINCFG_NOPULL	0
8171c1078aSVictor Chong #define PINCFG_PULLUP	1
8271c1078aSVictor Chong #define PINCFG_PULLDN	2
8371c1078aSVictor Chong 
8471c1078aSVictor Chong #define GPIO6_2		50
8571c1078aSVictor Chong #define SPI_CLK_HZ	150000000 /* 150mhz */
8671c1078aSVictor Chong #define SPI_500_KHZ	500000
873765523aSVictor Chong #define SPI_10_KHZ	10000
8871c1078aSVictor Chong 
8971c1078aSVictor Chong #ifdef CFG_SPI
9071c1078aSVictor Chong void spi_init(void);
9171c1078aSVictor Chong #ifdef CFG_SPI_TEST
9271c1078aSVictor Chong void spi_test(void);
9371c1078aSVictor Chong #endif /* CFG_SPI_TEST */
9471c1078aSVictor Chong #endif /* CFG_SPI */
9571c1078aSVictor Chong 
9671c1078aSVictor Chong #endif /* __HIKEY_PERIPHERALS_H__ */
97