Path: blob/main/sys/contrib/dev/athk/ath12k/ahb.h
178703 views
/* SPDX-License-Identifier: BSD-3-Clause-Clear */1/*2* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.3* Copyright (c) 2022-2025, Qualcomm Innovation Center, Inc. All rights reserved.4*/5#ifndef ATH12K_AHB_H6#define ATH12K_AHB_H78#include <linux/clk.h>9#include <linux/remoteproc/qcom_rproc.h>10#include "core.h"1112#define ATH12K_AHB_RECOVERY_TIMEOUT (3 * HZ)1314#define ATH12K_AHB_SMP2P_SMEM_MSG GENMASK(15, 0)15#define ATH12K_AHB_SMP2P_SMEM_SEQ_NO GENMASK(31, 16)16#define ATH12K_AHB_SMP2P_SMEM_VALUE_MASK 0xFFFFFFFF17#define ATH12K_PCI_CE_WAKE_IRQ 218#define ATH12K_PCI_IRQ_CE0_OFFSET 319#define ATH12K_ROOTPD_READY_TIMEOUT (5 * HZ)20#define ATH12K_RPROC_AFTER_POWERUP QCOM_SSR_AFTER_POWERUP21#define ATH12K_AHB_FW_PREFIX "q6_fw"22#define ATH12K_AHB_FW_SUFFIX ".mdt"23#define ATH12K_AHB_FW2 "iu_fw.mdt"24#define ATH12K_AHB_UPD_SWID 0x1225#define ATH12K_USERPD_SPAWN_TIMEOUT (5 * HZ)26#define ATH12K_USERPD_READY_TIMEOUT (10 * HZ)27#define ATH12K_USERPD_STOP_TIMEOUT (5 * HZ)28#define ATH12K_USERPD_ID_MASK GENMASK(9, 8)29#define ATH12K_USERPD_FW_NAME_LEN 353031enum ath12k_ahb_smp2p_msg_id {32ATH12K_AHB_POWER_SAVE_ENTER = 1,33ATH12K_AHB_POWER_SAVE_EXIT,34};3536enum ath12k_ahb_userpd_irq {37ATH12K_USERPD_SPAWN_IRQ,38ATH12K_USERPD_READY_IRQ,39ATH12K_USERPD_STOP_ACK_IRQ,40ATH12K_USERPD_MAX_IRQ,41};4243struct ath12k_base;4445struct ath12k_ahb {46struct ath12k_base *ab;47struct rproc *tgt_rproc;48struct clk *xo_clk;49struct completion rootpd_ready;50struct notifier_block root_pd_nb;51void *root_pd_notifier;52struct qcom_smem_state *spawn_state;53struct qcom_smem_state *stop_state;54struct completion userpd_spawned;55struct completion userpd_ready;56struct completion userpd_stopped;57u32 userpd_id;58u32 spawn_bit;59u32 stop_bit;60int userpd_irq_num[ATH12K_USERPD_MAX_IRQ];61};6263static inline struct ath12k_ahb *ath12k_ab_to_ahb(struct ath12k_base *ab)64{65return (struct ath12k_ahb *)ab->drv_priv;66}6768#ifdef CONFIG_ATH12K_AHB69int ath12k_ahb_init(void);70void ath12k_ahb_exit(void);71#else72static inline int ath12k_ahb_init(void)73{74return 0;75}7677static inline void ath12k_ahb_exit(void) {};78#endif79#endif808182