Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: ISC */
0002 /*
0003  * Copyright (c) 2018 The Linux Foundation. All rights reserved.
0004  */
0005 
0006 #ifndef _SNOC_H_
0007 #define _SNOC_H_
0008 
0009 #include <linux/notifier.h>
0010 
0011 #include "hw.h"
0012 #include "ce.h"
0013 #include "qmi.h"
0014 
0015 struct ath10k_snoc_drv_priv {
0016     enum ath10k_hw_rev hw_rev;
0017     u64 dma_mask;
0018     u32 msa_size;
0019 };
0020 
0021 struct snoc_state {
0022     u32 pipe_cfg_addr;
0023     u32 svc_to_pipe_map;
0024 };
0025 
0026 struct ath10k_snoc_pipe {
0027     struct ath10k_ce_pipe *ce_hdl;
0028     u8 pipe_num;
0029     struct ath10k *hif_ce_state;
0030     size_t buf_sz;
0031     /* protect ce info */
0032     spinlock_t pipe_lock;
0033     struct ath10k_snoc *ar_snoc;
0034 };
0035 
0036 struct ath10k_snoc_target_info {
0037     u32 target_version;
0038     u32 target_type;
0039     u32 target_revision;
0040     u32 soc_version;
0041 };
0042 
0043 struct ath10k_snoc_ce_irq {
0044     u32 irq_line;
0045 };
0046 
0047 enum ath10k_snoc_flags {
0048     ATH10K_SNOC_FLAG_REGISTERED,
0049     ATH10K_SNOC_FLAG_UNREGISTERING,
0050     ATH10K_SNOC_FLAG_MODEM_STOPPED,
0051     ATH10K_SNOC_FLAG_RECOVERY,
0052     ATH10K_SNOC_FLAG_8BIT_HOST_CAP_QUIRK,
0053 };
0054 
0055 struct clk_bulk_data;
0056 struct regulator_bulk_data;
0057 
0058 struct ath10k_snoc {
0059     struct platform_device *dev;
0060     struct ath10k *ar;
0061     unsigned int use_tz;
0062     struct ath10k_firmware {
0063         struct device *dev;
0064         dma_addr_t fw_start_addr;
0065         struct iommu_domain *iommu_domain;
0066         size_t mapped_mem_size;
0067     } fw;
0068     void __iomem *mem;
0069     dma_addr_t mem_pa;
0070     struct ath10k_snoc_target_info target_info;
0071     size_t mem_len;
0072     struct ath10k_snoc_pipe pipe_info[CE_COUNT_MAX];
0073     struct ath10k_snoc_ce_irq ce_irqs[CE_COUNT_MAX];
0074     struct ath10k_ce ce;
0075     struct timer_list rx_post_retry;
0076     struct regulator_bulk_data *vregs;
0077     size_t num_vregs;
0078     struct clk_bulk_data *clks;
0079     size_t num_clks;
0080     struct ath10k_qmi *qmi;
0081     struct notifier_block nb;
0082     void *notifier;
0083     unsigned long flags;
0084     bool xo_cal_supported;
0085     u32 xo_cal_data;
0086     DECLARE_BITMAP(pending_ce_irqs, CE_COUNT_MAX);
0087 };
0088 
0089 static inline struct ath10k_snoc *ath10k_snoc_priv(struct ath10k *ar)
0090 {
0091     return (struct ath10k_snoc *)ar->drv_priv;
0092 }
0093 
0094 int ath10k_snoc_fw_indication(struct ath10k *ar, u64 type);
0095 void ath10k_snoc_fw_crashed_dump(struct ath10k *ar);
0096 
0097 #endif /* _SNOC_H_ */