xref: /rk3399_rockchip-uboot/arch/mips/mach-ath79/include/mach/ath79.h (revision dc557e9a1fe00ca9d884bd88feef5bebf23fede4)
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 
soc_is_ar71xx(void)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 
soc_is_ar724x(void)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 
soc_is_ar7240(void)541d3d0f1fSWills Wang static inline int soc_is_ar7240(void)
551d3d0f1fSWills Wang {
561d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_AR7240;
571d3d0f1fSWills Wang }
581d3d0f1fSWills Wang 
soc_is_ar7241(void)591d3d0f1fSWills Wang static inline int soc_is_ar7241(void)
601d3d0f1fSWills Wang {
611d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_AR7241;
621d3d0f1fSWills Wang }
631d3d0f1fSWills Wang 
soc_is_ar7242(void)641d3d0f1fSWills Wang static inline int soc_is_ar7242(void)
651d3d0f1fSWills Wang {
661d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_AR7242;
671d3d0f1fSWills Wang }
681d3d0f1fSWills Wang 
soc_is_ar913x(void)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 
soc_is_ar933x(void)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 
soc_is_ar9341(void)811d3d0f1fSWills Wang static inline int soc_is_ar9341(void)
821d3d0f1fSWills Wang {
831d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_AR9341;
841d3d0f1fSWills Wang }
851d3d0f1fSWills Wang 
soc_is_ar9342(void)861d3d0f1fSWills Wang static inline int soc_is_ar9342(void)
871d3d0f1fSWills Wang {
881d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_AR9342;
891d3d0f1fSWills Wang }
901d3d0f1fSWills Wang 
soc_is_ar9344(void)911d3d0f1fSWills Wang static inline int soc_is_ar9344(void)
921d3d0f1fSWills Wang {
931d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_AR9344;
941d3d0f1fSWills Wang }
951d3d0f1fSWills Wang 
soc_is_ar934x(void)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 
soc_is_qca9533(void)1031d3d0f1fSWills Wang static inline int soc_is_qca9533(void)
1041d3d0f1fSWills Wang {
1051d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_QCA9533;
1061d3d0f1fSWills Wang }
1071d3d0f1fSWills Wang 
soc_is_qca953x(void)1081d3d0f1fSWills Wang static inline int soc_is_qca953x(void)
1091d3d0f1fSWills Wang {
1101d3d0f1fSWills Wang 	return soc_is_qca9533();
1111d3d0f1fSWills Wang }
1121d3d0f1fSWills Wang 
soc_is_qca9556(void)1131d3d0f1fSWills Wang static inline int soc_is_qca9556(void)
1141d3d0f1fSWills Wang {
1151d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_QCA9556;
1161d3d0f1fSWills Wang }
1171d3d0f1fSWills Wang 
soc_is_qca9558(void)1181d3d0f1fSWills Wang static inline int soc_is_qca9558(void)
1191d3d0f1fSWills Wang {
1201d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_QCA9558;
1211d3d0f1fSWills Wang }
1221d3d0f1fSWills Wang 
soc_is_qca955x(void)1231d3d0f1fSWills Wang static inline int soc_is_qca955x(void)
1241d3d0f1fSWills Wang {
1251d3d0f1fSWills Wang 	return soc_is_qca9556() || soc_is_qca9558();
1261d3d0f1fSWills Wang }
1271d3d0f1fSWills Wang 
soc_is_tp9343(void)1281d3d0f1fSWills Wang static inline int soc_is_tp9343(void)
1291d3d0f1fSWills Wang {
1301d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_TP9343;
1311d3d0f1fSWills Wang }
1321d3d0f1fSWills Wang 
soc_is_qca9561(void)1331d3d0f1fSWills Wang static inline int soc_is_qca9561(void)
1341d3d0f1fSWills Wang {
1351d3d0f1fSWills Wang 	return gd->arch.soc == ATH79_SOC_QCA9561;
1361d3d0f1fSWills Wang }
1371d3d0f1fSWills Wang 
soc_is_qca956x(void)1381d3d0f1fSWills Wang static inline int soc_is_qca956x(void)
1391d3d0f1fSWills Wang {
1401d3d0f1fSWills Wang 	return soc_is_tp9343() || soc_is_qca9561();
1411d3d0f1fSWills Wang }
1421d3d0f1fSWills Wang 
143*37523917SWills Wang u32 ath79_get_bootstrap(void);
1444771bbeeSMarek Vasut int ath79_eth_reset(void);
1456b699742SMarek Vasut int ath79_usb_reset(void);
1466b699742SMarek Vasut 
147e08539b7SMarek Vasut void ar934x_pll_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 ahb_mhz);
148e08539b7SMarek Vasut void ar934x_ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 ahb_mhz);
149e08539b7SMarek Vasut 
1501d3d0f1fSWills Wang #endif /* __ASM_MACH_ATH79_H */
151