1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Parts of this file are based on Ralink's 2.6.21 BSP 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org> 7*4882a593Smuzhiyun * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> 8*4882a593Smuzhiyun * Copyright (C) 2013 John Crispin <john@phrozen.org> 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef _MT7620_REGS_H_ 12*4882a593Smuzhiyun #define _MT7620_REGS_H_ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define MT7620_SYSC_BASE 0x10000000 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #define SYSC_REG_CHIP_NAME0 0x00 17*4882a593Smuzhiyun #define SYSC_REG_CHIP_NAME1 0x04 18*4882a593Smuzhiyun #define SYSC_REG_EFUSE_CFG 0x08 19*4882a593Smuzhiyun #define SYSC_REG_CHIP_REV 0x0c 20*4882a593Smuzhiyun #define SYSC_REG_SYSTEM_CONFIG0 0x10 21*4882a593Smuzhiyun #define SYSC_REG_SYSTEM_CONFIG1 0x14 22*4882a593Smuzhiyun #define SYSC_REG_CLKCFG0 0x2c 23*4882a593Smuzhiyun #define SYSC_REG_CPU_SYS_CLKCFG 0x3c 24*4882a593Smuzhiyun #define SYSC_REG_CPLL_CONFIG0 0x54 25*4882a593Smuzhiyun #define SYSC_REG_CPLL_CONFIG1 0x58 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #define MT7620_CHIP_NAME0 0x3637544d 28*4882a593Smuzhiyun #define MT7620_CHIP_NAME1 0x20203032 29*4882a593Smuzhiyun #define MT7628_CHIP_NAME1 0x20203832 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #define SYSCFG0_XTAL_FREQ_SEL BIT(6) 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #define CHIP_REV_PKG_MASK 0x1 34*4882a593Smuzhiyun #define CHIP_REV_PKG_SHIFT 16 35*4882a593Smuzhiyun #define CHIP_REV_VER_MASK 0xf 36*4882a593Smuzhiyun #define CHIP_REV_VER_SHIFT 8 37*4882a593Smuzhiyun #define CHIP_REV_ECO_MASK 0xf 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #define CLKCFG0_PERI_CLK_SEL BIT(4) 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_SHIFT 16 42*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_MASK 0xf 43*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_1 0 /* 1:1 (Reserved) */ 44*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_1_5 1 /* 1:1.5 (Reserved) */ 45*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_2 2 /* 1:2 */ 46*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_2_5 3 /* 1:2.5 (Reserved) */ 47*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_3 4 /* 1:3 */ 48*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_3_5 5 /* 1:3.5 (Reserved) */ 49*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_4 6 /* 1:4 */ 50*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_5 7 /* 1:5 */ 51*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_OCP_RATIO_10 8 /* 1:10 */ 52*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_CPU_FDIV_SHIFT 8 53*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_CPU_FDIV_MASK 0x1f 54*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_CPU_FFRAC_SHIFT 0 55*4882a593Smuzhiyun #define CPU_SYS_CLKCFG_CPU_FFRAC_MASK 0x1f 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun #define CPLL_CFG0_SW_CFG BIT(31) 58*4882a593Smuzhiyun #define CPLL_CFG0_PLL_MULT_RATIO_SHIFT 16 59*4882a593Smuzhiyun #define CPLL_CFG0_PLL_MULT_RATIO_MASK 0x7 60*4882a593Smuzhiyun #define CPLL_CFG0_LC_CURFCK BIT(15) 61*4882a593Smuzhiyun #define CPLL_CFG0_BYPASS_REF_CLK BIT(14) 62*4882a593Smuzhiyun #define CPLL_CFG0_PLL_DIV_RATIO_SHIFT 10 63*4882a593Smuzhiyun #define CPLL_CFG0_PLL_DIV_RATIO_MASK 0x3 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun #define CPLL_CFG1_CPU_AUX1 BIT(25) 66*4882a593Smuzhiyun #define CPLL_CFG1_CPU_AUX0 BIT(24) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #define SYSCFG0_DRAM_TYPE_MASK 0x3 69*4882a593Smuzhiyun #define SYSCFG0_DRAM_TYPE_SHIFT 4 70*4882a593Smuzhiyun #define SYSCFG0_DRAM_TYPE_SDRAM 0 71*4882a593Smuzhiyun #define SYSCFG0_DRAM_TYPE_DDR1 1 72*4882a593Smuzhiyun #define SYSCFG0_DRAM_TYPE_DDR2 2 73*4882a593Smuzhiyun #define SYSCFG0_DRAM_TYPE_UNKNOWN 3 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #define SYSCFG0_DRAM_TYPE_DDR2_MT7628 0 76*4882a593Smuzhiyun #define SYSCFG0_DRAM_TYPE_DDR1_MT7628 1 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun #define MT7620_DRAM_BASE 0x0 79*4882a593Smuzhiyun #define MT7620_SDRAM_SIZE_MIN 2 80*4882a593Smuzhiyun #define MT7620_SDRAM_SIZE_MAX 64 81*4882a593Smuzhiyun #define MT7620_DDR1_SIZE_MIN 32 82*4882a593Smuzhiyun #define MT7620_DDR1_SIZE_MAX 128 83*4882a593Smuzhiyun #define MT7620_DDR2_SIZE_MIN 32 84*4882a593Smuzhiyun #define MT7620_DDR2_SIZE_MAX 256 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun #define MT7620_GPIO_MODE_UART0_SHIFT 2 87*4882a593Smuzhiyun #define MT7620_GPIO_MODE_UART0_MASK 0x7 88*4882a593Smuzhiyun #define MT7620_GPIO_MODE_UART0(x) ((x) << MT7620_GPIO_MODE_UART0_SHIFT) 89*4882a593Smuzhiyun #define MT7620_GPIO_MODE_UARTF 0x0 90*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PCM_UARTF 0x1 91*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PCM_I2S 0x2 92*4882a593Smuzhiyun #define MT7620_GPIO_MODE_I2S_UARTF 0x3 93*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PCM_GPIO 0x4 94*4882a593Smuzhiyun #define MT7620_GPIO_MODE_GPIO_UARTF 0x5 95*4882a593Smuzhiyun #define MT7620_GPIO_MODE_GPIO_I2S 0x6 96*4882a593Smuzhiyun #define MT7620_GPIO_MODE_GPIO 0x7 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define MT7620_GPIO_MODE_NAND 0 99*4882a593Smuzhiyun #define MT7620_GPIO_MODE_SD 1 100*4882a593Smuzhiyun #define MT7620_GPIO_MODE_ND_SD_GPIO 2 101*4882a593Smuzhiyun #define MT7620_GPIO_MODE_ND_SD_MASK 0x3 102*4882a593Smuzhiyun #define MT7620_GPIO_MODE_ND_SD_SHIFT 18 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PCIE_RST 0 105*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PCIE_REF 1 106*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PCIE_GPIO 2 107*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PCIE_MASK 0x3 108*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PCIE_SHIFT 16 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #define MT7620_GPIO_MODE_WDT_RST 0 111*4882a593Smuzhiyun #define MT7620_GPIO_MODE_WDT_REF 1 112*4882a593Smuzhiyun #define MT7620_GPIO_MODE_WDT_GPIO 2 113*4882a593Smuzhiyun #define MT7620_GPIO_MODE_WDT_MASK 0x3 114*4882a593Smuzhiyun #define MT7620_GPIO_MODE_WDT_SHIFT 21 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun #define MT7620_GPIO_MODE_MDIO 0 117*4882a593Smuzhiyun #define MT7620_GPIO_MODE_MDIO_REFCLK 1 118*4882a593Smuzhiyun #define MT7620_GPIO_MODE_MDIO_GPIO 2 119*4882a593Smuzhiyun #define MT7620_GPIO_MODE_MDIO_MASK 0x3 120*4882a593Smuzhiyun #define MT7620_GPIO_MODE_MDIO_SHIFT 7 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun #define MT7620_GPIO_MODE_I2C 0 123*4882a593Smuzhiyun #define MT7620_GPIO_MODE_UART1 5 124*4882a593Smuzhiyun #define MT7620_GPIO_MODE_RGMII1 9 125*4882a593Smuzhiyun #define MT7620_GPIO_MODE_RGMII2 10 126*4882a593Smuzhiyun #define MT7620_GPIO_MODE_SPI 11 127*4882a593Smuzhiyun #define MT7620_GPIO_MODE_SPI_REF_CLK 12 128*4882a593Smuzhiyun #define MT7620_GPIO_MODE_WLED 13 129*4882a593Smuzhiyun #define MT7620_GPIO_MODE_JTAG 15 130*4882a593Smuzhiyun #define MT7620_GPIO_MODE_EPHY 15 131*4882a593Smuzhiyun #define MT7620_GPIO_MODE_PA 20 132*4882a593Smuzhiyun mt7620_get_eco(void)133*4882a593Smuzhiyunstatic inline int mt7620_get_eco(void) 134*4882a593Smuzhiyun { 135*4882a593Smuzhiyun return rt_sysc_r32(SYSC_REG_CHIP_REV) & CHIP_REV_ECO_MASK; 136*4882a593Smuzhiyun } 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun #endif 139