162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *  Ralink SoC register definitions
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *  Copyright (C) 2013 John Crispin <john@phrozen.org>
662306a36Sopenharmony_ci *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
762306a36Sopenharmony_ci *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef _RALINK_REGS_H_
1162306a36Sopenharmony_ci#define _RALINK_REGS_H_
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include <linux/io.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cienum ralink_soc_type {
1662306a36Sopenharmony_ci	RALINK_UNKNOWN = 0,
1762306a36Sopenharmony_ci	RT2880_SOC,
1862306a36Sopenharmony_ci	RT3883_SOC,
1962306a36Sopenharmony_ci	RT305X_SOC_RT3050,
2062306a36Sopenharmony_ci	RT305X_SOC_RT3052,
2162306a36Sopenharmony_ci	RT305X_SOC_RT3350,
2262306a36Sopenharmony_ci	RT305X_SOC_RT3352,
2362306a36Sopenharmony_ci	RT305X_SOC_RT5350,
2462306a36Sopenharmony_ci	MT762X_SOC_MT7620A,
2562306a36Sopenharmony_ci	MT762X_SOC_MT7620N,
2662306a36Sopenharmony_ci	MT762X_SOC_MT7621AT,
2762306a36Sopenharmony_ci	MT762X_SOC_MT7628AN,
2862306a36Sopenharmony_ci	MT762X_SOC_MT7688,
2962306a36Sopenharmony_ci};
3062306a36Sopenharmony_ciextern enum ralink_soc_type ralink_soc;
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciextern __iomem void *rt_sysc_membase;
3362306a36Sopenharmony_ciextern __iomem void *rt_memc_membase;
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cistatic inline void rt_sysc_w32(u32 val, unsigned reg)
3662306a36Sopenharmony_ci{
3762306a36Sopenharmony_ci	__raw_writel(val, rt_sysc_membase + reg);
3862306a36Sopenharmony_ci}
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_cistatic inline u32 rt_sysc_r32(unsigned reg)
4162306a36Sopenharmony_ci{
4262306a36Sopenharmony_ci	return __raw_readl(rt_sysc_membase + reg);
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_cistatic inline void rt_sysc_m32(u32 clr, u32 set, unsigned reg)
4662306a36Sopenharmony_ci{
4762306a36Sopenharmony_ci	u32 val = rt_sysc_r32(reg) & ~clr;
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	__raw_writel(val | set, rt_sysc_membase + reg);
5062306a36Sopenharmony_ci}
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cistatic inline void rt_memc_w32(u32 val, unsigned reg)
5362306a36Sopenharmony_ci{
5462306a36Sopenharmony_ci	__raw_writel(val, rt_memc_membase + reg);
5562306a36Sopenharmony_ci}
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_cistatic inline u32 rt_memc_r32(unsigned reg)
5862306a36Sopenharmony_ci{
5962306a36Sopenharmony_ci	return __raw_readl(rt_memc_membase + reg);
6062306a36Sopenharmony_ci}
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci#endif /* _RALINK_REGS_H_ */
63