1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * (C) Copyright 2016 Rockchip Electronics Co., Ltd 4 * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH 5 */ 6 #ifndef _ASM_ARCH_GRF_RK3368_H 7 #define _ASM_ARCH_GRF_RK3368_H 8 9 #ifndef __ASSEMBLY__ 10 #include <linux/bitops.h> 11 #endif 12 13 struct rk3368_grf { 14 u32 gpio1a_iomux; 15 u32 gpio1b_iomux; 16 u32 gpio1c_iomux; 17 u32 gpio1d_iomux; 18 u32 gpio2a_iomux; 19 u32 gpio2b_iomux; 20 u32 gpio2c_iomux; 21 u32 gpio2d_iomux; 22 u32 gpio3a_iomux; 23 u32 gpio3b_iomux; 24 u32 gpio3c_iomux; 25 u32 gpio3d_iomux; 26 u32 reserved[0x34]; 27 u32 gpio1a_pull; 28 u32 gpio1b_pull; 29 u32 gpio1c_pull; 30 u32 gpio1d_pull; 31 u32 gpio2a_pull; 32 u32 gpio2b_pull; 33 u32 gpio2c_pull; 34 u32 gpio2d_pull; 35 u32 gpio3a_pull; 36 u32 gpio3b_pull; 37 u32 gpio3c_pull; 38 u32 gpio3d_pull; 39 u32 reserved1[0x34]; 40 u32 gpio1a_drv; 41 u32 gpio1b_drv; 42 u32 gpio1c_drv; 43 u32 gpio1d_drv; 44 u32 gpio2a_drv; 45 u32 gpio2b_drv; 46 u32 gpio2c_drv; 47 u32 gpio2d_drv; 48 u32 gpio3a_drv; 49 u32 gpio3b_drv; 50 u32 gpio3c_drv; 51 u32 gpio3d_drv; 52 u32 reserved2[0x34]; 53 u32 gpio1l_sr; 54 u32 gpio1h_sr; 55 u32 gpio2l_sr; 56 u32 gpio2h_sr; 57 u32 gpio3l_sr; 58 u32 gpio3h_sr; 59 u32 reserved3[0x1a]; 60 u32 gpio_smt; 61 u32 reserved4[0x1f]; 62 u32 soc_con0; 63 u32 soc_con1; 64 u32 soc_con2; 65 u32 soc_con3; 66 u32 soc_con4; 67 u32 soc_con5; 68 u32 soc_con6; 69 u32 soc_con7; 70 u32 soc_con8; 71 u32 soc_con9; 72 u32 soc_con10; 73 u32 soc_con11; 74 u32 soc_con12; 75 u32 soc_con13; 76 u32 soc_con14; 77 u32 soc_con15; 78 u32 soc_con16; 79 u32 soc_con17; 80 u32 reserved5[0x6e]; 81 u32 ddrc0_con0; 82 }; 83 check_member(rk3368_grf, soc_con17, 0x444); 84 check_member(rk3368_grf, ddrc0_con0, 0x600); 85 86 struct rk3368_pmu_grf { 87 u32 gpio0a_iomux; 88 u32 gpio0b_iomux; 89 u32 gpio0c_iomux; 90 u32 gpio0d_iomux; 91 u32 gpio0a_pull; 92 u32 gpio0b_pull; 93 u32 gpio0c_pull; 94 u32 gpio0d_pull; 95 u32 gpio0a_drv; 96 u32 gpio0b_drv; 97 u32 gpio0c_drv; 98 u32 gpio0d_drv; 99 u32 gpio0l_sr; 100 u32 gpio0h_sr; 101 u32 reserved[0x72]; 102 u32 os_reg[4]; 103 }; 104 check_member(rk3368_pmu_grf, gpio0h_sr, 0x34); 105 check_member(rk3368_pmu_grf, os_reg[0], 0x200); 106 107 /*GRF_SOC_CON11/12/13*/ 108 enum { 109 MCU_SRAM_BASE_BIT27_BIT12_SHIFT = 0, 110 MCU_SRAM_BASE_BIT27_BIT12_MASK = GENMASK(15, 0), 111 }; 112 113 /*GRF_SOC_CON12*/ 114 enum { 115 MCU_EXSRAM_BASE_BIT27_BIT12_SHIFT = 0, 116 MCU_EXSRAM_BASE_BIT27_BIT12_MASK = GENMASK(15, 0), 117 }; 118 119 /*GRF_SOC_CON13*/ 120 enum { 121 MCU_EXPERI_BASE_BIT27_BIT12_SHIFT = 0, 122 MCU_EXPERI_BASE_BIT27_BIT12_MASK = GENMASK(15, 0), 123 }; 124 125 /*GRF_SOC_CON14*/ 126 enum { 127 MCU_EXPERI_BASE_BIT31_BIT28_SHIFT = 12, 128 MCU_EXPERI_BASE_BIT31_BIT28_MASK = GENMASK(15, 12), 129 MCU_EXSRAM_BASE_BIT31_BIT28_SHIFT = 8, 130 MCU_EXSRAM_BASE_BIT31_BIT28_MASK = GENMASK(11, 8), 131 MCU_SRAM_BASE_BIT31_BIT28_SHIFT = 4, 132 MCU_SRAM_BASE_BIT31_BIT28_MASK = GENMASK(7, 4), 133 MCU_CODE_BASE_BIT31_BIT28_SHIFT = 0, 134 MCU_CODE_BASE_BIT31_BIT28_MASK = GENMASK(3, 0), 135 }; 136 137 #endif 138