185639910SJohn Crispin /*
285639910SJohn Crispin  *  Ralink SoC register definitions
385639910SJohn Crispin  *
497b92108SJohn Crispin  *  Copyright (C) 2013 John Crispin <john@phrozen.org>
585639910SJohn Crispin  *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
685639910SJohn Crispin  *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
785639910SJohn Crispin  *
885639910SJohn Crispin  *  This program is free software; you can redistribute it and/or modify it
985639910SJohn Crispin  *  under the terms of the GNU General Public License version 2 as published
1085639910SJohn Crispin  *  by the Free Software Foundation.
1185639910SJohn Crispin  */
1285639910SJohn Crispin 
1385639910SJohn Crispin #ifndef _RALINK_REGS_H_
1485639910SJohn Crispin #define _RALINK_REGS_H_
1585639910SJohn Crispin 
16e3ccf1d1SHarvey Hunt #include <linux/io.h>
17e3ccf1d1SHarvey Hunt 
18418d29c8SJohn Crispin enum ralink_soc_type {
19418d29c8SJohn Crispin 	RALINK_UNKNOWN = 0,
20418d29c8SJohn Crispin 	RT2880_SOC,
21418d29c8SJohn Crispin 	RT3883_SOC,
22418d29c8SJohn Crispin 	RT305X_SOC_RT3050,
23418d29c8SJohn Crispin 	RT305X_SOC_RT3052,
24418d29c8SJohn Crispin 	RT305X_SOC_RT3350,
25418d29c8SJohn Crispin 	RT305X_SOC_RT3352,
26418d29c8SJohn Crispin 	RT305X_SOC_RT5350,
27418d29c8SJohn Crispin 	MT762X_SOC_MT7620A,
28418d29c8SJohn Crispin 	MT762X_SOC_MT7620N,
29418d29c8SJohn Crispin 	MT762X_SOC_MT7621AT,
30418d29c8SJohn Crispin 	MT762X_SOC_MT7628AN,
31418d29c8SJohn Crispin 	MT762X_SOC_MT7688,
32418d29c8SJohn Crispin };
33418d29c8SJohn Crispin extern enum ralink_soc_type ralink_soc;
34418d29c8SJohn Crispin 
3585639910SJohn Crispin extern __iomem void *rt_sysc_membase;
3685639910SJohn Crispin extern __iomem void *rt_memc_membase;
3785639910SJohn Crispin 
3885639910SJohn Crispin static inline void rt_sysc_w32(u32 val, unsigned reg)
3985639910SJohn Crispin {
4085639910SJohn Crispin 	__raw_writel(val, rt_sysc_membase + reg);
4185639910SJohn Crispin }
4285639910SJohn Crispin 
4385639910SJohn Crispin static inline u32 rt_sysc_r32(unsigned reg)
4485639910SJohn Crispin {
4585639910SJohn Crispin 	return __raw_readl(rt_sysc_membase + reg);
4685639910SJohn Crispin }
4785639910SJohn Crispin 
4847e14d66SJohn Crispin static inline void rt_sysc_m32(u32 clr, u32 set, unsigned reg)
4947e14d66SJohn Crispin {
5047e14d66SJohn Crispin 	u32 val = rt_sysc_r32(reg) & ~clr;
5147e14d66SJohn Crispin 
5247e14d66SJohn Crispin 	__raw_writel(val | set, rt_sysc_membase + reg);
5347e14d66SJohn Crispin }
5447e14d66SJohn Crispin 
5585639910SJohn Crispin static inline void rt_memc_w32(u32 val, unsigned reg)
5685639910SJohn Crispin {
5785639910SJohn Crispin 	__raw_writel(val, rt_memc_membase + reg);
5885639910SJohn Crispin }
5985639910SJohn Crispin 
6085639910SJohn Crispin static inline u32 rt_memc_r32(unsigned reg)
6185639910SJohn Crispin {
6285639910SJohn Crispin 	return __raw_readl(rt_memc_membase + reg);
6385639910SJohn Crispin }
6485639910SJohn Crispin 
6585639910SJohn Crispin #endif /* _RALINK_REGS_H_ */
66