11d3d0f1fSWills Wang /* 21d3d0f1fSWills Wang * Atheros AR71XX/AR724X/AR913X common definitions 31d3d0f1fSWills Wang * 41d3d0f1fSWills Wang * Copyright (C) 2015-2016 Wills Wang <wills.wang@live.com> 51d3d0f1fSWills Wang * Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org> 61d3d0f1fSWills Wang * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> 71d3d0f1fSWills Wang * 81d3d0f1fSWills Wang * SPDX-License-Identifier: GPL-2.0+ 91d3d0f1fSWills Wang */ 101d3d0f1fSWills Wang 111d3d0f1fSWills Wang #ifndef __ASM_MACH_ATH79_H 121d3d0f1fSWills Wang #define __ASM_MACH_ATH79_H 131d3d0f1fSWills Wang 141d3d0f1fSWills Wang #include <linux/types.h> 151d3d0f1fSWills Wang 161d3d0f1fSWills Wang DECLARE_GLOBAL_DATA_PTR; 171d3d0f1fSWills Wang 181d3d0f1fSWills Wang enum ath79_soc_type { 191d3d0f1fSWills Wang ATH79_SOC_UNKNOWN, 201d3d0f1fSWills Wang ATH79_SOC_AR7130, 211d3d0f1fSWills Wang ATH79_SOC_AR7141, 221d3d0f1fSWills Wang ATH79_SOC_AR7161, 231d3d0f1fSWills Wang ATH79_SOC_AR7240, 241d3d0f1fSWills Wang ATH79_SOC_AR7241, 251d3d0f1fSWills Wang ATH79_SOC_AR7242, 261d3d0f1fSWills Wang ATH79_SOC_AR9130, 271d3d0f1fSWills Wang ATH79_SOC_AR9132, 281d3d0f1fSWills Wang ATH79_SOC_AR9330, 291d3d0f1fSWills Wang ATH79_SOC_AR9331, 301d3d0f1fSWills Wang ATH79_SOC_AR9341, 311d3d0f1fSWills Wang ATH79_SOC_AR9342, 321d3d0f1fSWills Wang ATH79_SOC_AR9344, 331d3d0f1fSWills Wang ATH79_SOC_QCA9533, 341d3d0f1fSWills Wang ATH79_SOC_QCA9556, 351d3d0f1fSWills Wang ATH79_SOC_QCA9558, 361d3d0f1fSWills Wang ATH79_SOC_TP9343, 371d3d0f1fSWills Wang ATH79_SOC_QCA9561, 381d3d0f1fSWills Wang }; 391d3d0f1fSWills Wang 401d3d0f1fSWills Wang static inline int soc_is_ar71xx(void) 411d3d0f1fSWills Wang { 421d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR7130 || 431d3d0f1fSWills Wang gd->arch.soc == ATH79_SOC_AR7141 || 441d3d0f1fSWills Wang gd->arch.soc == ATH79_SOC_AR7161; 451d3d0f1fSWills Wang } 461d3d0f1fSWills Wang 471d3d0f1fSWills Wang static inline int soc_is_ar724x(void) 481d3d0f1fSWills Wang { 491d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR7240 || 501d3d0f1fSWills Wang gd->arch.soc == ATH79_SOC_AR7241 || 511d3d0f1fSWills Wang gd->arch.soc == ATH79_SOC_AR7242; 521d3d0f1fSWills Wang } 531d3d0f1fSWills Wang 541d3d0f1fSWills Wang static inline int soc_is_ar7240(void) 551d3d0f1fSWills Wang { 561d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR7240; 571d3d0f1fSWills Wang } 581d3d0f1fSWills Wang 591d3d0f1fSWills Wang static inline int soc_is_ar7241(void) 601d3d0f1fSWills Wang { 611d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR7241; 621d3d0f1fSWills Wang } 631d3d0f1fSWills Wang 641d3d0f1fSWills Wang static inline int soc_is_ar7242(void) 651d3d0f1fSWills Wang { 661d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR7242; 671d3d0f1fSWills Wang } 681d3d0f1fSWills Wang 691d3d0f1fSWills Wang static inline int soc_is_ar913x(void) 701d3d0f1fSWills Wang { 711d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR9130 || 721d3d0f1fSWills Wang gd->arch.soc == ATH79_SOC_AR9132; 731d3d0f1fSWills Wang } 741d3d0f1fSWills Wang 751d3d0f1fSWills Wang static inline int soc_is_ar933x(void) 761d3d0f1fSWills Wang { 771d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR9330 || 781d3d0f1fSWills Wang gd->arch.soc == ATH79_SOC_AR9331; 791d3d0f1fSWills Wang } 801d3d0f1fSWills Wang 811d3d0f1fSWills Wang static inline int soc_is_ar9341(void) 821d3d0f1fSWills Wang { 831d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR9341; 841d3d0f1fSWills Wang } 851d3d0f1fSWills Wang 861d3d0f1fSWills Wang static inline int soc_is_ar9342(void) 871d3d0f1fSWills Wang { 881d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR9342; 891d3d0f1fSWills Wang } 901d3d0f1fSWills Wang 911d3d0f1fSWills Wang static inline int soc_is_ar9344(void) 921d3d0f1fSWills Wang { 931d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_AR9344; 941d3d0f1fSWills Wang } 951d3d0f1fSWills Wang 961d3d0f1fSWills Wang static inline int soc_is_ar934x(void) 971d3d0f1fSWills Wang { 981d3d0f1fSWills Wang return soc_is_ar9341() || 991d3d0f1fSWills Wang soc_is_ar9342() || 1001d3d0f1fSWills Wang soc_is_ar9344(); 1011d3d0f1fSWills Wang } 1021d3d0f1fSWills Wang 1031d3d0f1fSWills Wang static inline int soc_is_qca9533(void) 1041d3d0f1fSWills Wang { 1051d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_QCA9533; 1061d3d0f1fSWills Wang } 1071d3d0f1fSWills Wang 1081d3d0f1fSWills Wang static inline int soc_is_qca953x(void) 1091d3d0f1fSWills Wang { 1101d3d0f1fSWills Wang return soc_is_qca9533(); 1111d3d0f1fSWills Wang } 1121d3d0f1fSWills Wang 1131d3d0f1fSWills Wang static inline int soc_is_qca9556(void) 1141d3d0f1fSWills Wang { 1151d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_QCA9556; 1161d3d0f1fSWills Wang } 1171d3d0f1fSWills Wang 1181d3d0f1fSWills Wang static inline int soc_is_qca9558(void) 1191d3d0f1fSWills Wang { 1201d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_QCA9558; 1211d3d0f1fSWills Wang } 1221d3d0f1fSWills Wang 1231d3d0f1fSWills Wang static inline int soc_is_qca955x(void) 1241d3d0f1fSWills Wang { 1251d3d0f1fSWills Wang return soc_is_qca9556() || soc_is_qca9558(); 1261d3d0f1fSWills Wang } 1271d3d0f1fSWills Wang 1281d3d0f1fSWills Wang static inline int soc_is_tp9343(void) 1291d3d0f1fSWills Wang { 1301d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_TP9343; 1311d3d0f1fSWills Wang } 1321d3d0f1fSWills Wang 1331d3d0f1fSWills Wang static inline int soc_is_qca9561(void) 1341d3d0f1fSWills Wang { 1351d3d0f1fSWills Wang return gd->arch.soc == ATH79_SOC_QCA9561; 1361d3d0f1fSWills Wang } 1371d3d0f1fSWills Wang 1381d3d0f1fSWills Wang static inline int soc_is_qca956x(void) 1391d3d0f1fSWills Wang { 1401d3d0f1fSWills Wang return soc_is_tp9343() || soc_is_qca9561(); 1411d3d0f1fSWills Wang } 1421d3d0f1fSWills Wang 1434771bbeeSMarek Vasut int ath79_eth_reset(void); 1446b699742SMarek Vasut int ath79_usb_reset(void); 1456b699742SMarek Vasut 146*e08539b7SMarek Vasut void ar934x_pll_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 ahb_mhz); 147*e08539b7SMarek Vasut void ar934x_ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 ahb_mhz); 148*e08539b7SMarek Vasut 1491d3d0f1fSWills Wang #endif /* __ASM_MACH_ATH79_H */ 150