xref: /freebsd/sys/contrib/dev/athk/ath10k/ahb.h (revision da8fa4e37a0c048a67d7baa3b5a9bed637d02564)
1*da8fa4e3SBjoern A. Zeeb /* SPDX-License-Identifier: ISC */
2*da8fa4e3SBjoern A. Zeeb /*
3*da8fa4e3SBjoern A. Zeeb  * Copyright (c) 2016 Qualcomm Atheros, Inc. All rights reserved.
4*da8fa4e3SBjoern A. Zeeb  * Copyright (c) 2015 The Linux Foundation. All rights reserved.
5*da8fa4e3SBjoern A. Zeeb  */
6*da8fa4e3SBjoern A. Zeeb 
7*da8fa4e3SBjoern A. Zeeb #ifndef _AHB_H_
8*da8fa4e3SBjoern A. Zeeb #define _AHB_H_
9*da8fa4e3SBjoern A. Zeeb 
10*da8fa4e3SBjoern A. Zeeb #include <linux/platform_device.h>
11*da8fa4e3SBjoern A. Zeeb 
12*da8fa4e3SBjoern A. Zeeb struct ath10k_ahb {
13*da8fa4e3SBjoern A. Zeeb 	struct platform_device *pdev;
14*da8fa4e3SBjoern A. Zeeb 	void __iomem *mem;
15*da8fa4e3SBjoern A. Zeeb 	unsigned long mem_len;
16*da8fa4e3SBjoern A. Zeeb 	void __iomem *gcc_mem;
17*da8fa4e3SBjoern A. Zeeb 	void __iomem *tcsr_mem;
18*da8fa4e3SBjoern A. Zeeb 
19*da8fa4e3SBjoern A. Zeeb 	int irq;
20*da8fa4e3SBjoern A. Zeeb 
21*da8fa4e3SBjoern A. Zeeb 	struct clk *cmd_clk;
22*da8fa4e3SBjoern A. Zeeb 	struct clk *ref_clk;
23*da8fa4e3SBjoern A. Zeeb 	struct clk *rtc_clk;
24*da8fa4e3SBjoern A. Zeeb 
25*da8fa4e3SBjoern A. Zeeb 	struct reset_control *core_cold_rst;
26*da8fa4e3SBjoern A. Zeeb 	struct reset_control *radio_cold_rst;
27*da8fa4e3SBjoern A. Zeeb 	struct reset_control *radio_warm_rst;
28*da8fa4e3SBjoern A. Zeeb 	struct reset_control *radio_srif_rst;
29*da8fa4e3SBjoern A. Zeeb 	struct reset_control *cpu_init_rst;
30*da8fa4e3SBjoern A. Zeeb };
31*da8fa4e3SBjoern A. Zeeb 
32*da8fa4e3SBjoern A. Zeeb #ifdef CONFIG_ATH10K_AHB
33*da8fa4e3SBjoern A. Zeeb 
34*da8fa4e3SBjoern A. Zeeb #define ATH10K_GCC_REG_BASE                  0x1800000
35*da8fa4e3SBjoern A. Zeeb #define ATH10K_GCC_REG_SIZE                  0x60000
36*da8fa4e3SBjoern A. Zeeb 
37*da8fa4e3SBjoern A. Zeeb #define ATH10K_TCSR_REG_BASE                 0x1900000
38*da8fa4e3SBjoern A. Zeeb #define ATH10K_TCSR_REG_SIZE                 0x80000
39*da8fa4e3SBjoern A. Zeeb 
40*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_GCC_FEPLL_PLL_DIV         0x2f020
41*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_WIFI_SCRATCH_5_REG        0x4f014
42*da8fa4e3SBjoern A. Zeeb 
43*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_WLAN_CORE_ID_REG          0x82030
44*da8fa4e3SBjoern A. Zeeb 
45*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_TCSR_WIFI0_GLB_CFG        0x49000
46*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_TCSR_WIFI1_GLB_CFG        0x49004
47*da8fa4e3SBjoern A. Zeeb #define TCSR_WIFIX_GLB_CFG_DISABLE_CORE_CLK  BIT(25)
48*da8fa4e3SBjoern A. Zeeb 
49*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_TCSR_WCSS0_HALTREQ        0x52000
50*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_TCSR_WCSS1_HALTREQ        0x52010
51*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_TCSR_WCSS0_HALTACK        0x52004
52*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_TCSR_WCSS1_HALTACK        0x52014
53*da8fa4e3SBjoern A. Zeeb 
54*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_AXI_BUS_HALT_TIMEOUT      10 /* msec */
55*da8fa4e3SBjoern A. Zeeb #define AHB_AXI_BUS_HALT_REQ                 1
56*da8fa4e3SBjoern A. Zeeb #define AHB_AXI_BUS_HALT_ACK                 1
57*da8fa4e3SBjoern A. Zeeb 
58*da8fa4e3SBjoern A. Zeeb #define ATH10K_AHB_CORE_CTRL_CPU_INTR_MASK   1
59*da8fa4e3SBjoern A. Zeeb 
60*da8fa4e3SBjoern A. Zeeb int ath10k_ahb_init(void);
61*da8fa4e3SBjoern A. Zeeb void ath10k_ahb_exit(void);
62*da8fa4e3SBjoern A. Zeeb 
63*da8fa4e3SBjoern A. Zeeb #else /* CONFIG_ATH10K_AHB */
64*da8fa4e3SBjoern A. Zeeb 
ath10k_ahb_init(void)65*da8fa4e3SBjoern A. Zeeb static inline int ath10k_ahb_init(void)
66*da8fa4e3SBjoern A. Zeeb {
67*da8fa4e3SBjoern A. Zeeb 	return 0;
68*da8fa4e3SBjoern A. Zeeb }
69*da8fa4e3SBjoern A. Zeeb 
ath10k_ahb_exit(void)70*da8fa4e3SBjoern A. Zeeb static inline void ath10k_ahb_exit(void)
71*da8fa4e3SBjoern A. Zeeb {
72*da8fa4e3SBjoern A. Zeeb }
73*da8fa4e3SBjoern A. Zeeb 
74*da8fa4e3SBjoern A. Zeeb #endif /* CONFIG_ATH10K_AHB */
75*da8fa4e3SBjoern A. Zeeb 
76*da8fa4e3SBjoern A. Zeeb #endif /* _AHB_H_ */
77