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