1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
285639910SJohn Crispin /*
385639910SJohn Crispin  *  Ralink SoC register definitions
485639910SJohn Crispin  *
597b92108SJohn Crispin  *  Copyright (C) 2013 John Crispin <john@phrozen.org>
685639910SJohn Crispin  *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
785639910SJohn Crispin  *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
885639910SJohn Crispin  */
985639910SJohn Crispin 
1085639910SJohn Crispin #ifndef _RALINK_REGS_H_
1185639910SJohn Crispin #define _RALINK_REGS_H_
1285639910SJohn Crispin 
13e3ccf1d1SHarvey Hunt #include <linux/io.h>
14e3ccf1d1SHarvey Hunt 
15418d29c8SJohn Crispin enum ralink_soc_type {
16418d29c8SJohn Crispin 	RALINK_UNKNOWN = 0,
17418d29c8SJohn Crispin 	RT2880_SOC,
18418d29c8SJohn Crispin 	RT3883_SOC,
19418d29c8SJohn Crispin 	RT305X_SOC_RT3050,
20418d29c8SJohn Crispin 	RT305X_SOC_RT3052,
21418d29c8SJohn Crispin 	RT305X_SOC_RT3350,
22418d29c8SJohn Crispin 	RT305X_SOC_RT3352,
23418d29c8SJohn Crispin 	RT305X_SOC_RT5350,
24418d29c8SJohn Crispin 	MT762X_SOC_MT7620A,
25418d29c8SJohn Crispin 	MT762X_SOC_MT7620N,
26418d29c8SJohn Crispin 	MT762X_SOC_MT7621AT,
27418d29c8SJohn Crispin 	MT762X_SOC_MT7628AN,
28418d29c8SJohn Crispin 	MT762X_SOC_MT7688,
29418d29c8SJohn Crispin };
30418d29c8SJohn Crispin extern enum ralink_soc_type ralink_soc;
31418d29c8SJohn Crispin 
3285639910SJohn Crispin extern __iomem void *rt_sysc_membase;
3385639910SJohn Crispin extern __iomem void *rt_memc_membase;
3485639910SJohn Crispin 
rt_sysc_w32(u32 val,unsigned reg)3585639910SJohn Crispin static inline void rt_sysc_w32(u32 val, unsigned reg)
3685639910SJohn Crispin {
3785639910SJohn Crispin 	__raw_writel(val, rt_sysc_membase + reg);
3885639910SJohn Crispin }
3985639910SJohn Crispin 
rt_sysc_r32(unsigned reg)4085639910SJohn Crispin static inline u32 rt_sysc_r32(unsigned reg)
4185639910SJohn Crispin {
4285639910SJohn Crispin 	return __raw_readl(rt_sysc_membase + reg);
4385639910SJohn Crispin }
4485639910SJohn Crispin 
rt_sysc_m32(u32 clr,u32 set,unsigned reg)4547e14d66SJohn Crispin static inline void rt_sysc_m32(u32 clr, u32 set, unsigned reg)
4647e14d66SJohn Crispin {
4747e14d66SJohn Crispin 	u32 val = rt_sysc_r32(reg) & ~clr;
4847e14d66SJohn Crispin 
4947e14d66SJohn Crispin 	__raw_writel(val | set, rt_sysc_membase + reg);
5047e14d66SJohn Crispin }
5147e14d66SJohn Crispin 
rt_memc_w32(u32 val,unsigned reg)5285639910SJohn Crispin static inline void rt_memc_w32(u32 val, unsigned reg)
5385639910SJohn Crispin {
5485639910SJohn Crispin 	__raw_writel(val, rt_memc_membase + reg);
5585639910SJohn Crispin }
5685639910SJohn Crispin 
rt_memc_r32(unsigned reg)5785639910SJohn Crispin static inline u32 rt_memc_r32(unsigned reg)
5885639910SJohn Crispin {
5985639910SJohn Crispin 	return __raw_readl(rt_memc_membase + reg);
6085639910SJohn Crispin }
6185639910SJohn Crispin 
6285639910SJohn Crispin #endif /* _RALINK_REGS_H_ */
63