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, 32d8411466SGabor Juhos ATH79_SOC_AR9341, 33d8411466SGabor Juhos ATH79_SOC_AR9342, 34d8411466SGabor Juhos ATH79_SOC_AR9344, 35d4a67d9dSGabor Juhos }; 36d4a67d9dSGabor Juhos 37d4a67d9dSGabor Juhos extern enum ath79_soc_type ath79_soc; 38be5f3623SGabor Juhos extern unsigned int ath79_soc_rev; 39d4a67d9dSGabor Juhos 40d4a67d9dSGabor Juhos static inline int soc_is_ar71xx(void) 41d4a67d9dSGabor Juhos { 42d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7130 || 43d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR7141 || 44d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR7161); 45d4a67d9dSGabor Juhos } 46d4a67d9dSGabor Juhos 47d4a67d9dSGabor Juhos static inline int soc_is_ar724x(void) 48d4a67d9dSGabor Juhos { 49d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7240 || 50d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR7241 || 51d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR7242); 52d4a67d9dSGabor Juhos } 53d4a67d9dSGabor Juhos 54d4a67d9dSGabor Juhos static inline int soc_is_ar7240(void) 55d4a67d9dSGabor Juhos { 56d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7240); 57d4a67d9dSGabor Juhos } 58d4a67d9dSGabor Juhos 59d4a67d9dSGabor Juhos static inline int soc_is_ar7241(void) 60d4a67d9dSGabor Juhos { 61d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7241); 62d4a67d9dSGabor Juhos } 63d4a67d9dSGabor Juhos 64d4a67d9dSGabor Juhos static inline int soc_is_ar7242(void) 65d4a67d9dSGabor Juhos { 66d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR7242); 67d4a67d9dSGabor Juhos } 68d4a67d9dSGabor Juhos 69d4a67d9dSGabor Juhos static inline int soc_is_ar913x(void) 70d4a67d9dSGabor Juhos { 71d4a67d9dSGabor Juhos return (ath79_soc == ATH79_SOC_AR9130 || 72d4a67d9dSGabor Juhos ath79_soc == ATH79_SOC_AR9132); 73d4a67d9dSGabor Juhos } 74d4a67d9dSGabor Juhos 7504225e1dSGabor Juhos static inline int soc_is_ar933x(void) 7604225e1dSGabor Juhos { 7704225e1dSGabor Juhos return (ath79_soc == ATH79_SOC_AR9330 || 7804225e1dSGabor Juhos ath79_soc == ATH79_SOC_AR9331); 7904225e1dSGabor Juhos } 8004225e1dSGabor Juhos 81d8411466SGabor Juhos static inline int soc_is_ar9341(void) 82d8411466SGabor Juhos { 83d8411466SGabor Juhos return (ath79_soc == ATH79_SOC_AR9341); 84d8411466SGabor Juhos } 85d8411466SGabor Juhos 86d8411466SGabor Juhos static inline int soc_is_ar9342(void) 87d8411466SGabor Juhos { 88d8411466SGabor Juhos return (ath79_soc == ATH79_SOC_AR9342); 89d8411466SGabor Juhos } 90d8411466SGabor Juhos 91d8411466SGabor Juhos static inline int soc_is_ar9344(void) 92d8411466SGabor Juhos { 93d8411466SGabor Juhos return (ath79_soc == ATH79_SOC_AR9344); 94d8411466SGabor Juhos } 95d8411466SGabor Juhos 96d8411466SGabor Juhos static inline int soc_is_ar934x(void) 97d8411466SGabor Juhos { 98d8411466SGabor Juhos return soc_is_ar9341() || soc_is_ar9342() || soc_is_ar9344(); 99d8411466SGabor Juhos } 100d8411466SGabor Juhos 101d4a67d9dSGabor Juhos extern void __iomem *ath79_ddr_base; 102d4a67d9dSGabor Juhos extern void __iomem *ath79_pll_base; 103d4a67d9dSGabor Juhos extern void __iomem *ath79_reset_base; 104d4a67d9dSGabor Juhos 105d4a67d9dSGabor Juhos static inline void ath79_pll_wr(unsigned reg, u32 val) 106d4a67d9dSGabor Juhos { 107d4a67d9dSGabor Juhos __raw_writel(val, ath79_pll_base + reg); 108d4a67d9dSGabor Juhos } 109d4a67d9dSGabor Juhos 110d4a67d9dSGabor Juhos static inline u32 ath79_pll_rr(unsigned reg) 111d4a67d9dSGabor Juhos { 112d4a67d9dSGabor Juhos return __raw_readl(ath79_pll_base + reg); 113d4a67d9dSGabor Juhos } 114d4a67d9dSGabor Juhos 115d4a67d9dSGabor Juhos static inline void ath79_reset_wr(unsigned reg, u32 val) 116d4a67d9dSGabor Juhos { 117d4a67d9dSGabor Juhos __raw_writel(val, ath79_reset_base + reg); 118d4a67d9dSGabor Juhos } 119d4a67d9dSGabor Juhos 120d4a67d9dSGabor Juhos static inline u32 ath79_reset_rr(unsigned reg) 121d4a67d9dSGabor Juhos { 122d4a67d9dSGabor Juhos return __raw_readl(ath79_reset_base + reg); 123d4a67d9dSGabor Juhos } 124d4a67d9dSGabor Juhos 125d4a67d9dSGabor Juhos void ath79_device_reset_set(u32 mask); 126d4a67d9dSGabor Juhos void ath79_device_reset_clear(u32 mask); 127d4a67d9dSGabor Juhos 128d4a67d9dSGabor Juhos #endif /* __ASM_MACH_ATH79_H */ 129