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