162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Parts of this file are based on Ralink's 2.6.21 BSP
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org>
762306a36Sopenharmony_ci * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
862306a36Sopenharmony_ci * Copyright (C) 2013 John Crispin <john@phrozen.org>
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#ifndef _RT305X_REGS_H_
1262306a36Sopenharmony_ci#define _RT305X_REGS_H_
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciextern enum ralink_soc_type ralink_soc;
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistatic inline int soc_is_rt3050(void)
1762306a36Sopenharmony_ci{
1862306a36Sopenharmony_ci	return ralink_soc == RT305X_SOC_RT3050;
1962306a36Sopenharmony_ci}
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistatic inline int soc_is_rt3052(void)
2262306a36Sopenharmony_ci{
2362306a36Sopenharmony_ci	return ralink_soc == RT305X_SOC_RT3052;
2462306a36Sopenharmony_ci}
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cistatic inline int soc_is_rt305x(void)
2762306a36Sopenharmony_ci{
2862306a36Sopenharmony_ci	return soc_is_rt3050() || soc_is_rt3052();
2962306a36Sopenharmony_ci}
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_cistatic inline int soc_is_rt3350(void)
3262306a36Sopenharmony_ci{
3362306a36Sopenharmony_ci	return ralink_soc == RT305X_SOC_RT3350;
3462306a36Sopenharmony_ci}
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cistatic inline int soc_is_rt3352(void)
3762306a36Sopenharmony_ci{
3862306a36Sopenharmony_ci	return ralink_soc == RT305X_SOC_RT3352;
3962306a36Sopenharmony_ci}
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cistatic inline int soc_is_rt5350(void)
4262306a36Sopenharmony_ci{
4362306a36Sopenharmony_ci	return ralink_soc == RT305X_SOC_RT5350;
4462306a36Sopenharmony_ci}
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#define IOMEM(x)			((void __iomem *)(KSEG1ADDR(x)))
4762306a36Sopenharmony_ci#define RT305X_SYSC_BASE		IOMEM(0x10000000)
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci#define SYSC_REG_CHIP_NAME0		0x00
5062306a36Sopenharmony_ci#define SYSC_REG_CHIP_NAME1		0x04
5162306a36Sopenharmony_ci#define SYSC_REG_CHIP_ID		0x0c
5262306a36Sopenharmony_ci#define SYSC_REG_SYSTEM_CONFIG		0x10
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci#define RT3052_CHIP_NAME0		0x30335452
5562306a36Sopenharmony_ci#define RT3052_CHIP_NAME1		0x20203235
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci#define RT3350_CHIP_NAME0		0x33335452
5862306a36Sopenharmony_ci#define RT3350_CHIP_NAME1		0x20203035
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci#define RT3352_CHIP_NAME0		0x33335452
6162306a36Sopenharmony_ci#define RT3352_CHIP_NAME1		0x20203235
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci#define RT5350_CHIP_NAME0		0x33355452
6462306a36Sopenharmony_ci#define RT5350_CHIP_NAME1		0x20203035
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci#define CHIP_ID_ID_MASK			0xff
6762306a36Sopenharmony_ci#define CHIP_ID_ID_SHIFT		8
6862306a36Sopenharmony_ci#define CHIP_ID_REV_MASK		0xff
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#define RT305X_SYSCFG_SRAM_CS0_MODE_SHIFT	2
7162306a36Sopenharmony_ci#define RT305X_SYSCFG_SRAM_CS0_MODE_WDT		0x1
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci#define RT5350_SYSCFG0_DRAM_SIZE_SHIFT  12
7462306a36Sopenharmony_ci#define RT5350_SYSCFG0_DRAM_SIZE_MASK   7
7562306a36Sopenharmony_ci#define RT5350_SYSCFG0_DRAM_SIZE_2M     0
7662306a36Sopenharmony_ci#define RT5350_SYSCFG0_DRAM_SIZE_8M     1
7762306a36Sopenharmony_ci#define RT5350_SYSCFG0_DRAM_SIZE_16M    2
7862306a36Sopenharmony_ci#define RT5350_SYSCFG0_DRAM_SIZE_32M    3
7962306a36Sopenharmony_ci#define RT5350_SYSCFG0_DRAM_SIZE_64M    4
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci/* multi function gpio pins */
8262306a36Sopenharmony_ci#define RT305X_GPIO_I2C_SD		1
8362306a36Sopenharmony_ci#define RT305X_GPIO_I2C_SCLK		2
8462306a36Sopenharmony_ci#define RT305X_GPIO_SPI_EN		3
8562306a36Sopenharmony_ci#define RT305X_GPIO_SPI_CLK		4
8662306a36Sopenharmony_ci/* GPIO 7-14 is shared between UART0, PCM  and I2S interfaces */
8762306a36Sopenharmony_ci#define RT305X_GPIO_7			7
8862306a36Sopenharmony_ci#define RT305X_GPIO_10			10
8962306a36Sopenharmony_ci#define RT305X_GPIO_14			14
9062306a36Sopenharmony_ci#define RT305X_GPIO_UART1_TXD		15
9162306a36Sopenharmony_ci#define RT305X_GPIO_UART1_RXD		16
9262306a36Sopenharmony_ci#define RT305X_GPIO_JTAG_TDO		17
9362306a36Sopenharmony_ci#define RT305X_GPIO_JTAG_TDI		18
9462306a36Sopenharmony_ci#define RT305X_GPIO_MDIO_MDC		22
9562306a36Sopenharmony_ci#define RT305X_GPIO_MDIO_MDIO		23
9662306a36Sopenharmony_ci#define RT305X_GPIO_SDRAM_MD16		24
9762306a36Sopenharmony_ci#define RT305X_GPIO_SDRAM_MD31		39
9862306a36Sopenharmony_ci#define RT305X_GPIO_GE0_TXD0		40
9962306a36Sopenharmony_ci#define RT305X_GPIO_GE0_RXCLK		51
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci#define RT3352_SYSC_REG_SYSCFG0		0x010
10262306a36Sopenharmony_ci#define RT3352_SYSC_REG_SYSCFG1         0x014
10362306a36Sopenharmony_ci#define RT3352_SYSC_REG_RSTCTRL         0x034
10462306a36Sopenharmony_ci#define RT3352_SYSC_REG_USB_PS          0x05c
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci#define RT3352_RSTCTRL_UHST		BIT(22)
10762306a36Sopenharmony_ci#define RT3352_RSTCTRL_UDEV		BIT(25)
10862306a36Sopenharmony_ci#define RT3352_SYSCFG1_USB0_HOST_MODE	BIT(10)
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci#define RT305X_SDRAM_BASE		0x00000000
11162306a36Sopenharmony_ci#define RT305X_MEM_SIZE_MIN		2
11262306a36Sopenharmony_ci#define RT305X_MEM_SIZE_MAX		64
11362306a36Sopenharmony_ci#define RT3352_MEM_SIZE_MIN		2
11462306a36Sopenharmony_ci#define RT3352_MEM_SIZE_MAX		256
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci#endif
117