#include <linux/types.h>
#include <linux/io.h>
#include <linux/delay.h>
#include <linux/dma-mapping.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/mutex.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/string.h>
#include <linux/qed/qed_chain.h>
#include "qed.h"
#include "qed_hsi.h"
#include "qed_hw.h"
#include "qed_reg_addr.h"
#include "qed_sriov.h"
#define QED_BAR_ACQUIRE_TIMEOUT_USLEEP_CNT …
#define QED_BAR_ACQUIRE_TIMEOUT_USLEEP …
#define QED_BAR_ACQUIRE_TIMEOUT_UDELAY_CNT …
#define QED_BAR_ACQUIRE_TIMEOUT_UDELAY …
#define QED_BAR_INVALID_OFFSET …
struct qed_ptt { … };
struct qed_ptt_pool { … };
int qed_ptt_pool_alloc(struct qed_hwfn *p_hwfn)
{ … }
void qed_ptt_invalidate(struct qed_hwfn *p_hwfn)
{ … }
void qed_ptt_pool_free(struct qed_hwfn *p_hwfn)
{ … }
struct qed_ptt *qed_ptt_acquire(struct qed_hwfn *p_hwfn)
{ … }
struct qed_ptt *qed_ptt_acquire_context(struct qed_hwfn *p_hwfn, bool is_atomic)
{ … }
void qed_ptt_release(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
{ … }
u32 qed_ptt_get_hw_addr(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
{ … }
static u32 qed_ptt_config_addr(struct qed_ptt *p_ptt)
{ … }
u32 qed_ptt_get_bar_addr(struct qed_ptt *p_ptt)
{ … }
void qed_ptt_set_win(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt, u32 new_hw_addr)
{ … }
static u32 qed_set_ptt(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt, u32 hw_addr)
{ … }
struct qed_ptt *qed_get_reserved_ptt(struct qed_hwfn *p_hwfn,
enum reserved_ptts ptt_idx)
{ … }
void qed_wr(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
u32 hw_addr, u32 val)
{ … }
u32 qed_rd(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
u32 hw_addr)
{ … }
static void qed_memcpy_hw(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
void *addr, u32 hw_addr, size_t n, bool to_device)
{ … }
void qed_memcpy_from(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt, void *dest, u32 hw_addr, size_t n)
{ … }
void qed_memcpy_to(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt, u32 hw_addr, void *src, size_t n)
{ … }
void qed_fid_pretend(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, u16 fid)
{ … }
void qed_port_pretend(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt, u8 port_id)
{ … }
void qed_port_unpretend(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
{ … }
void qed_port_fid_pretend(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt, u8 port_id, u16 fid)
{ … }
u32 qed_vfid_to_concrete(struct qed_hwfn *p_hwfn, u8 vfid)
{ … }
#define QED_DMAE_FLAGS_IS_SET(params, flag) …
static void qed_dmae_opcode(struct qed_hwfn *p_hwfn,
const u8 is_src_type_grc,
const u8 is_dst_type_grc,
struct qed_dmae_params *p_params)
{ … }
u32 qed_dmae_idx_to_go_cmd(u8 idx)
{ … }
static int qed_dmae_post_command(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt)
{ … }
int qed_dmae_info_alloc(struct qed_hwfn *p_hwfn)
{ … }
void qed_dmae_info_free(struct qed_hwfn *p_hwfn)
{ … }
static int qed_dmae_operation_wait(struct qed_hwfn *p_hwfn)
{ … }
static int qed_dmae_execute_sub_operation(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
u64 src_addr,
u64 dst_addr,
u8 src_type,
u8 dst_type,
u32 length_dw)
{ … }
static int qed_dmae_execute_command(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
u64 src_addr, u64 dst_addr,
u8 src_type, u8 dst_type,
u32 size_in_dwords,
struct qed_dmae_params *p_params)
{ … }
int qed_dmae_host2grc(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
u64 source_addr, u32 grc_addr, u32 size_in_dwords,
struct qed_dmae_params *p_params)
{ … }
int qed_dmae_grc2host(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
u32 grc_addr,
dma_addr_t dest_addr, u32 size_in_dwords,
struct qed_dmae_params *p_params)
{ … }
int qed_dmae_host2host(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
dma_addr_t source_addr,
dma_addr_t dest_addr,
u32 size_in_dwords, struct qed_dmae_params *p_params)
{ … }
void qed_hw_err_notify(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
enum qed_hw_err_type err_type, const char *fmt, ...)
{ … }
int qed_dmae_sanity(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt, const char *phase)
{ … }