10b523cedSRaja Mani /* 20b523cedSRaja Mani * Copyright (c) 2016 Qualcomm Atheros, Inc. All rights reserved. 30b523cedSRaja Mani * Copyright (c) 2015 The Linux Foundation. All rights reserved. 40b523cedSRaja Mani * 50b523cedSRaja Mani * Permission to use, copy, modify, and/or distribute this software for any 60b523cedSRaja Mani * purpose with or without fee is hereby granted, provided that the above 70b523cedSRaja Mani * copyright notice and this permission notice appear in all copies. 80b523cedSRaja Mani * 90b523cedSRaja Mani * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 100b523cedSRaja Mani * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 110b523cedSRaja Mani * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 120b523cedSRaja Mani * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 130b523cedSRaja Mani * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 140b523cedSRaja Mani * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 150b523cedSRaja Mani * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 160b523cedSRaja Mani */ 170b523cedSRaja Mani 180b523cedSRaja Mani #ifndef _AHB_H_ 190b523cedSRaja Mani #define _AHB_H_ 200b523cedSRaja Mani 210b523cedSRaja Mani #include <linux/platform_device.h> 220b523cedSRaja Mani 237f8e79cdSRaja Mani struct ath10k_ahb { 247f8e79cdSRaja Mani struct platform_device *pdev; 257f8e79cdSRaja Mani void __iomem *mem; 26704dc4e3SRaja Mani unsigned long mem_len; 277f8e79cdSRaja Mani void __iomem *gcc_mem; 287f8e79cdSRaja Mani void __iomem *tcsr_mem; 298beff219SRaja Mani 301c44fcb9SRaja Mani int irq; 311c44fcb9SRaja Mani 328beff219SRaja Mani struct clk *cmd_clk; 338beff219SRaja Mani struct clk *ref_clk; 348beff219SRaja Mani struct clk *rtc_clk; 3514854bfdSRaja Mani 3614854bfdSRaja Mani struct reset_control *core_cold_rst; 3714854bfdSRaja Mani struct reset_control *radio_cold_rst; 3814854bfdSRaja Mani struct reset_control *radio_warm_rst; 3914854bfdSRaja Mani struct reset_control *radio_srif_rst; 4014854bfdSRaja Mani struct reset_control *cpu_init_rst; 417f8e79cdSRaja Mani }; 427f8e79cdSRaja Mani 430b523cedSRaja Mani #ifdef CONFIG_ATH10K_AHB 440b523cedSRaja Mani 45704dc4e3SRaja Mani #define ATH10K_GCC_REG_BASE 0x1800000 46704dc4e3SRaja Mani #define ATH10K_GCC_REG_SIZE 0x60000 47704dc4e3SRaja Mani 48704dc4e3SRaja Mani #define ATH10K_TCSR_REG_BASE 0x1900000 49704dc4e3SRaja Mani #define ATH10K_TCSR_REG_SIZE 0x80000 50704dc4e3SRaja Mani 510d87c920SRaja Mani #define ATH10K_AHB_GCC_FEPLL_PLL_DIV 0x2f020 520d87c920SRaja Mani #define ATH10K_AHB_WIFI_SCRATCH_5_REG 0x4f014 530d87c920SRaja Mani 54133df0f8SRaja Mani #define ATH10K_AHB_WLAN_CORE_ID_REG 0x82030 55133df0f8SRaja Mani 56133df0f8SRaja Mani #define ATH10K_AHB_TCSR_WIFI0_GLB_CFG 0x49000 57133df0f8SRaja Mani #define ATH10K_AHB_TCSR_WIFI1_GLB_CFG 0x49004 58133df0f8SRaja Mani #define TCSR_WIFIX_GLB_CFG_DISABLE_CORE_CLK BIT(25) 59133df0f8SRaja Mani 60133df0f8SRaja Mani #define ATH10K_AHB_TCSR_WCSS0_HALTREQ 0x52000 61133df0f8SRaja Mani #define ATH10K_AHB_TCSR_WCSS1_HALTREQ 0x52010 62133df0f8SRaja Mani #define ATH10K_AHB_TCSR_WCSS0_HALTACK 0x52004 63133df0f8SRaja Mani #define ATH10K_AHB_TCSR_WCSS1_HALTACK 0x52014 64133df0f8SRaja Mani 65133df0f8SRaja Mani #define ATH10K_AHB_AXI_BUS_HALT_TIMEOUT 10 /* msec */ 66133df0f8SRaja Mani #define AHB_AXI_BUS_HALT_REQ 1 67133df0f8SRaja Mani #define AHB_AXI_BUS_HALT_ACK 1 68133df0f8SRaja Mani 690d87c920SRaja Mani #define ATH10K_AHB_CORE_CTRL_CPU_INTR_MASK 1 700d87c920SRaja Mani 710b523cedSRaja Mani int ath10k_ahb_init(void); 720b523cedSRaja Mani void ath10k_ahb_exit(void); 730b523cedSRaja Mani 740b523cedSRaja Mani #else /* CONFIG_ATH10K_AHB */ 750b523cedSRaja Mani 760b523cedSRaja Mani static inline int ath10k_ahb_init(void) 770b523cedSRaja Mani { 780b523cedSRaja Mani return 0; 790b523cedSRaja Mani } 800b523cedSRaja Mani 810b523cedSRaja Mani static inline void ath10k_ahb_exit(void) 820b523cedSRaja Mani { 830b523cedSRaja Mani } 840b523cedSRaja Mani 850b523cedSRaja Mani #endif /* CONFIG_ATH10K_AHB */ 860b523cedSRaja Mani 870b523cedSRaja Mani #endif /* _AHB_H_ */ 88