1d4a67d9dSGabor Juhos /* 2d4a67d9dSGabor Juhos * Atheros AR71XX/AR724X/AR913X common definitions 3d4a67d9dSGabor Juhos * 4d4a67d9dSGabor Juhos * Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org> 5d4a67d9dSGabor Juhos * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> 6d4a67d9dSGabor Juhos * 7d4a67d9dSGabor Juhos * Parts of this file are based on Atheros' 2.6.15 BSP 8d4a67d9dSGabor Juhos * 9d4a67d9dSGabor Juhos * This program is free software; you can redistribute it and/or modify it 10d4a67d9dSGabor Juhos * under the terms of the GNU General Public License version 2 as published 11d4a67d9dSGabor Juhos * by the Free Software Foundation. 12d4a67d9dSGabor Juhos */ 13d4a67d9dSGabor Juhos 14d4a67d9dSGabor Juhos #ifndef __ASM_MACH_ATH79_H 15d4a67d9dSGabor Juhos #define __ASM_MACH_ATH79_H 16d4a67d9dSGabor Juhos 17d4a67d9dSGabor Juhos #include <linux/types.h> 18d4a67d9dSGabor Juhos #include <linux/io.h> 19d4a67d9dSGabor Juhos 20d4a67d9dSGabor Juhos enum ath79_soc_type { 21d4a67d9dSGabor Juhos ATH79_SOC_UNKNOWN, 22d4a67d9dSGabor Juhos ATH79_SOC_AR7130, 23d4a67d9dSGabor Juhos ATH79_SOC_AR7141, 24d4a67d9dSGabor Juhos ATH79_SOC_AR7161, 25d4a67d9dSGabor Juhos ATH79_SOC_AR7240, 26d4a67d9dSGabor Juhos ATH79_SOC_AR7241, 27d4a67d9dSGabor Juhos ATH79_SOC_AR7242, 28d4a67d9dSGabor Juhos ATH79_SOC_AR9130, 296d1c8fdeSGabor Juhos ATH79_SOC_AR9132, 306d1c8fdeSGabor Juhos ATH79_SOC_AR9330, 316d1c8fdeSGabor Juhos ATH79_SOC_AR9331, 32d4a67d9dSGabor Juhos }; 33d4a67d9dSGabor Juhos 34d4a67d9dSGabor Juhos extern enum ath79_soc_type ath79_soc; 35d4a67d9dSGabor Juhos 36d4a67d9dSGabor Juhos static inline int soc_is_ar71xx(void) 37d4a67d9dSGabor Juhos { 38d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7130 || 39d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR7141 || 40d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR7161); 41d4a67d9dSGabor Juhos } 42d4a67d9dSGabor Juhos 43d4a67d9dSGabor Juhos static inline int soc_is_ar724x(void) 44d4a67d9dSGabor Juhos { 45d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7240 || 46d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR7241 || 47d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR7242); 48d4a67d9dSGabor Juhos } 49d4a67d9dSGabor Juhos 50d4a67d9dSGabor Juhos static inline int soc_is_ar7240(void) 51d4a67d9dSGabor Juhos { 52d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7240); 53d4a67d9dSGabor Juhos } 54d4a67d9dSGabor Juhos 55d4a67d9dSGabor Juhos static inline int soc_is_ar7241(void) 56d4a67d9dSGabor Juhos { 57d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7241); 58d4a67d9dSGabor Juhos } 59d4a67d9dSGabor Juhos 60d4a67d9dSGabor Juhos static inline int soc_is_ar7242(void) 61d4a67d9dSGabor Juhos { 62d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7242); 63d4a67d9dSGabor Juhos } 64d4a67d9dSGabor Juhos 65d4a67d9dSGabor Juhos static inline int soc_is_ar913x(void) 66d4a67d9dSGabor Juhos { 67d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR9130 || 68d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR9132); 69d4a67d9dSGabor Juhos } 70d4a67d9dSGabor Juhos 7104225e1dSGabor Juhos static inline int soc_is_ar933x(void) 7204225e1dSGabor Juhos { 7304225e1dSGabor Juhos return (ath79_soc == ATH79_SOC_AR9330 || 7404225e1dSGabor Juhos ath79_soc == ATH79_SOC_AR9331); 7504225e1dSGabor Juhos } 7604225e1dSGabor Juhos 77d4a67d9dSGabor Juhos extern void __iomem *ath79_ddr_base; 78d4a67d9dSGabor Juhos extern void __iomem *ath79_pll_base; 79d4a67d9dSGabor Juhos extern void __iomem *ath79_reset_base; 80d4a67d9dSGabor Juhos 81d4a67d9dSGabor Juhos static inline void ath79_pll_wr(unsigned reg, u32 val) 82d4a67d9dSGabor Juhos { 83d4a67d9dSGabor Juhos __raw_writel(val, ath79_pll_base + reg); 84d4a67d9dSGabor Juhos } 85d4a67d9dSGabor Juhos 86d4a67d9dSGabor Juhos static inline u32 ath79_pll_rr(unsigned reg) 87d4a67d9dSGabor Juhos { 88d4a67d9dSGabor Juhos return __raw_readl(ath79_pll_base + reg); 89d4a67d9dSGabor Juhos } 90d4a67d9dSGabor Juhos 91d4a67d9dSGabor Juhos static inline void ath79_reset_wr(unsigned reg, u32 val) 92d4a67d9dSGabor Juhos { 93d4a67d9dSGabor Juhos __raw_writel(val, ath79_reset_base + reg); 94d4a67d9dSGabor Juhos } 95d4a67d9dSGabor Juhos 96d4a67d9dSGabor Juhos static inline u32 ath79_reset_rr(unsigned reg) 97d4a67d9dSGabor Juhos { 98d4a67d9dSGabor Juhos return __raw_readl(ath79_reset_base + reg); 99d4a67d9dSGabor Juhos } 100d4a67d9dSGabor Juhos 101d4a67d9dSGabor Juhos void ath79_device_reset_set(u32 mask); 102d4a67d9dSGabor Juhos void ath79_device_reset_clear(u32 mask); 103d4a67d9dSGabor Juhos 104d4a67d9dSGabor Juhos #endif /* __ASM_MACH_ATH79_H */ 105