1 /* $NetBSD */ 2 /*- 3 * Copyright (c) 2014 The NetBSD Foundation, Inc. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to The NetBSD Foundation 7 * by Reinoud Zandijk. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 #ifndef _ARM_SAMSUNG_EXYNOS_REG_H_ 32 #define _ARM_SAMSUNG_EXYNOS_REG_H_ 33 34 /* 35 * 36 * The exynos can boot from its iROM or from an external Nand memory. Since 37 * these are normally hardly used they are excluded from the normal register 38 * space here. 39 * 40 * XXX What about the audio subsystem region. Where are the docs? 41 * 42 * EXYNOS_CORE_PBASE points to the main SFR region. 43 * 44 * Notes: 45 * 46 * SFR Special Function Register 47 * ISP In-System Programming, like a JTAG 48 * ACP Accelerator Coherency Port 49 * SSS Security Sub System 50 * GIC Generic Interurrupt Controller 51 * PMU Power Management Unit 52 * DMC 2D Graphics engine 53 * LEFTBUS Data bus / Peripheral bus 54 * RIGHTBUS ,, 55 * G3D 3D Graphics engine 56 * MFC Multi-Format Codec 57 * LCD0 LCD display 58 * MCT Multi Core Timer 59 * CMU Clock Management Unit 60 * TMU Thermal Management Unit 61 * PPMU Pin Parametric Measurement Unit (?) 62 * MMU Memory Management Unit 63 * MCTimer ? 64 * WDT Watch Dog Timer 65 * RTC Real Time Clock 66 * KEYIF Keypad interface 67 * SECKEY ? 68 * TZPC TrustZone Protection Controller 69 * UART Universal asynchronous receiver/transmitter 70 * I2C Inter IC Connect 71 * SPI Serial Peripheral Interface Bus 72 * I2S Inter-IC Sound, Integrated Interchip Sound, or IIS 73 * PCM Pulse-code modulation, audio stream at set fixed rate 74 * SPDIF Sony/Philips Digital Interface Format 75 * Slimbus Serial Low-power Inter-chip Media Bus 76 * SMMU System mmu. No idea as how its programmed (or not) 77 * PERI-L UART, I2C, SPI, I2S, PCM, SPDIF, PWM, I2CHDMI, Slimbus 78 * PERI-R CHIPID, SYSREG, PMU/CMU/TMU Bus I/F, MCTimer, WDT, RTC, KEYIF, 79 * SECKEY, TZPC 80 */ 81 82 /* 83 * Common to Exynos4 and Exynos 5 84 * */ 85 #define EXYNOS_CORE_PBASE 0x10000000 /* SFR */ 86 #define EXYNOS_CORE_SIZE 0x10000000 87 88 89 #define EXYNOS_CHIPID_OFFSET 0x00000000 90 #define EXYNOS_PROD_ID_OFFSET (EXYNOS_CHIPID_OFFSET + 0) 91 #define EXYNOS_PACKAGE_ID_OFFSET (EXYNOS_CHIPID_OFFSET + 4) 92 93 #define EXYNOS_PACKAGE_ID_2_GIG 0x06030058 94 95 /* standard block size for offsets defined below */ 96 #define EXYNOS_BLOCK_SIZE 0x00010000 97 98 99 #if defined(EXYNOS5) 100 #include <arm/samsung/exynos5_reg.h> 101 #endif 102 #if defined(EXYNOS4) 103 #include <arm/samsung/exynos4_reg.h> 104 #endif 105 106 107 /* standard frequency settings */ 108 #define EXYNOS_ACLK_REF_FREQ (200*1000*1000) /* 200 Mhz */ 109 #define EXYNOS_UART_FREQ (109*1000*1000) /* should be EXYNOS_ACLK_REF_FREQ! */ 110 111 #define EXYNOS_F_IN_FREQ (24*1000*1000) /* 24 Mhz */ 112 #define EXYNOS_USB_FREQ EXYNOS_F_IN_FREQ/* 24 Mhz */ 113 114 115 /* Watchdog register definitions */ 116 #define EXYNOS_WDT_WTCON 0x0000 117 #define WTCON_PRESCALER __BITS(15,8) 118 #define WTCON_ENABLE __BIT(5) 119 #define WTCON_CLOCK_SELECT __BITS(4,3) 120 #define WTCON_CLOCK_SELECT_16 __SHIFTIN(0, WTCON_CLOCK_SELECT) 121 #define WTCON_CLOCK_SELECT_32 __SHIFTIN(1, WTCON_CLOCK_SELECT) 122 #define WTCON_CLOCK_SELECT_64 __SHIFTIN(2, WTCON_CLOCK_SELECT) 123 #define WTCON_CLOCK_SELECT_128 __SHIFTIN(3, WTCON_CLOCK_SELECT) 124 #define WTCON_INT_ENABLE __BIT(2) 125 #define WTCON_RESET_ENABLE __BIT(0) 126 #define EXYNOS_WDT_WTDAT 0x0004 127 #define WTDAT_RELOAD __BITS(15,0) 128 #define EXYNOS_WDT_WTCNT 0x0008 129 #define WTCNT_COUNT __BITS(15,0) 130 #define EXYNOS_WDT_WTCLRINT 0x000C 131 132 133 /* GPIO register definitions */ 134 #define EXYNOS_GPIO_GRP_SIZE 0x20 135 #define EXYNOS_GPIO_CON 0x00 136 #define EXYNOS_GPIO_DAT 0x04 137 #define EXYNOS_GPIO_PUD 0x08 138 #define EXYNOS_GPIO_DRV 0x0C 139 #define EXYNOS_GPIO_CONPWD 0x10 140 #define EXYNOS_GPIO_PUDPWD 0x14 141 /* rest of space is not used */ 142 143 #define EXYNOS_GPIO_FUNC_INPUT 0x0 144 #define EXYNOS_GPIO_FUNC_OUTPUT 0x1 145 /* intermediate values are devices, defintions dependent on pin */ 146 #define EXYNOS_GPIO_FUNC_EXTINT 0xF 147 148 #define EXYNOS_GPIO_PIN_FLOAT 0 149 #define EXYNOS_GPIO_PIN_PULL_DOWN 1 150 #define EXYNOS_GPIO_PIN_PULL_UP 3 151 152 153 /* used PMU registers */ 154 /* Exynos 4210 or Exynos 5 */ 155 #define EXYNOS_PMU_USBDEV_PHY_CTRL 0x704 156 #define EXYNOS_PMU_USBHOST_PHY_CTRL 0x708 157 /* Exynos 4x12 */ 158 #define EXYNOS_PMU_USB_PHY_CTRL 0x704 159 #define EXYNOS_PMU_USB_HSIC_1_PHY_CTRL 0x708 160 #define EXYNOS_PMU_USB_HSIC_2_PHY_CTRL 0x70C 161 162 #define PMU_PHY_ENABLE (1<< 0) 163 #define PMU_PHY_DISABLE (0) 164 165 166 /* used SYSREG registers */ 167 #define EXYNOS5_SYSREG_USB20_PHY_TYPE 0x230 168 169 170 /* used USB PHY registers */ 171 #define USB_PHYPWR 0x00 172 #define PHYPWR_FORCE_SUSPEND __BIT(1) 173 #define PHYPWR_ANALOG_POWERDOWN __BIT(3) 174 #define PHYPWR_OTG_DISABLE __BIT(4) 175 #define PHYPWR_SLEEP_PHY0 __BIT(5) 176 #define PHYPWR_NORMAL_MASK 0x19 177 #define PHYPWR_NORMAL_MASK_PHY0 (__BITS(3,3) | 1) 178 #define PHYPWR_NORMAL_MASK_PHY1 __BITS(6,3) 179 #define PHYPWR_NORMAL_MASK_HSIC0 __BITS(9,3) 180 #define PHYPWR_NORMAL_MASK_HSIC1 __BITS(12,3) 181 #define USB_PHYCLK 0x04 182 #define USB_RSTCON 0x08 183 #define RSTCON_SWRST __BIT(0) 184 #define RSTCON_HLINK_RWRST __BIT(1) 185 #define RSTCON_DEVPHYLINK_SWRST __BIT(2) 186 #define RSTCON_DEVPHY_SWRST __BITS(0,3) 187 #define RSTCON_HOSTPHY_SWRST __BITS(3,4) 188 #define RSTCON_HOSTPHYLINK_SWRST __BITS(7,4) 189 190 #endif /* _ARM_SAMSUNG_EXYNOS_REG_H_ */ 191