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