/******************************************************************************
|
*
|
* Copyright(c) 2019 Realtek Corporation.
|
*
|
* This program is free software; you can redistribute it and/or modify it
|
* under the terms of version 2 of the GNU General Public License as
|
* published by the Free Software Foundation.
|
*
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
* more details.
|
*
|
*****************************************************************************/
|
#ifndef _HAL_IO_H_
|
#define _HAL_IO_H_
|
|
/*
|
Below is the data structure used by _io_handler
|
*/
|
|
extern u8 _hal_read8(struct rtw_hal_com_t *hal, u32 addr);
|
extern u16 _hal_read16(struct rtw_hal_com_t *hal, u32 addr);
|
extern u32 _hal_read32(struct rtw_hal_com_t *hal, u32 addr);
|
extern void _hal_read_mem(struct rtw_hal_com_t *hal, u32 addr, u32 cnt, u8 *pmem);
|
|
extern int _hal_write8(struct rtw_hal_com_t *hal, u32 addr, u8 val);
|
extern int _hal_write16(struct rtw_hal_com_t *hal, u32 addr, u16 val);
|
extern int _hal_write32(struct rtw_hal_com_t *hal, u32 addr, u32 val);
|
|
|
#ifdef CONFIG_SDIO_HCI
|
u8 _hal_sd_f0_read8(struct rtw_hal_com_t *hal, u32 addr);
|
#ifdef CONFIG_SDIO_INDIRECT_ACCESS
|
u8 _hal_sd_iread8(struct rtw_hal_com_t *hal, u32 addr);
|
u16 _hal_sd_iread16(struct rtw_hal_com_t *hal, u32 addr);
|
u32 _hal_sd_iread32(struct rtw_hal_com_t *hal, u32 addr);
|
int _hal_sd_iwrite8(struct rtw_hal_com_t *hal, u32 addr, u8 val);
|
int _hal_sd_iwrite16(struct rtw_hal_com_t *hal, u32 addr, u16 val);
|
int _hal_sd_iwrite32(struct rtw_hal_com_t *hal, u32 addr, u32 val);
|
#endif /* CONFIG_SDIO_INDIRECT_ACCESS */
|
#endif /* CONFIG_SDIO_HCI */
|
|
|
#ifdef DBG_IO
|
u32 match_read_sniff(struct rtw_hal_com_t *hal, u32 addr, u16 len, u32 val);
|
u32 match_write_sniff(struct rtw_hal_com_t *hal, u32 addr, u16 len, u32 val);
|
bool match_rf_read_sniff_ranges(struct rtw_hal_com_t *hal, u8 path, u32 addr, u32 mask);
|
bool match_rf_write_sniff_ranges(struct rtw_hal_com_t *hal, u8 path, u32 addr, u32 mask);
|
|
extern u8 dbg_hal_read8(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
|
extern u16 dbg_hal_read16(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
|
extern u32 dbg_hal_read32(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
|
|
extern int dbg_hal_write8(struct rtw_hal_com_t *hal, u32 addr, u8 val, const char *caller, const int line);
|
extern int dbg_hal_write16(struct rtw_hal_com_t *hal, u32 addr, u16 val, const char *caller, const int line);
|
extern int dbg_hal_write32(struct rtw_hal_com_t *hal, u32 addr, u32 val, const char *caller, const int line);
|
extern int dbg_hal_writeN(struct rtw_hal_com_t *hal, u32 addr , u32 length , u8 *data, const char *caller, const int line);
|
|
#ifdef CONFIG_SDIO_HCI
|
u8 dbg_hal_sd_f0_read8(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
|
#ifdef CONFIG_SDIO_INDIRECT_ACCESS
|
u8 dbg_hal_sd_iread8(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
|
u16 dbg_hal_sd_iread16(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
|
u32 dbg_hal_sd_iread32(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
|
int dbg_hal_sd_iwrite8(struct rtw_hal_com_t *hal, u32 addr, u8 val, const char *caller, const int line);
|
int dbg_hal_sd_iwrite16(struct rtw_hal_com_t *hal, u32 addr, u16 val, const char *caller, const int line);
|
int dbg_hal_sd_iwrite32(struct rtw_hal_com_t *hal, u32 addr, u32 val, const char *caller, const int line);
|
#endif /* CONFIG_SDIO_INDIRECT_ACCESS */
|
#endif /* CONFIG_SDIO_HCI */
|
|
#define hal_read8(hal, addr) dbg_hal_read8((hal), (addr), __FUNCTION__, __LINE__)
|
#define hal_read16(hal, addr) dbg_hal_read16((hal), (addr), __FUNCTION__, __LINE__)
|
#define hal_read32(hal, addr) dbg_hal_read32((hal), (addr), __FUNCTION__, __LINE__)
|
|
#define hal_write8(hal, addr, val) dbg_hal_write8((hal), (addr), (val), __FUNCTION__, __LINE__)
|
#define hal_write16(hal, addr, val) dbg_hal_write16((hal), (addr), (val), __FUNCTION__, __LINE__)
|
#define hal_write32(hal, addr, val) dbg_hal_write32((hal), (addr), (val), __FUNCTION__, __LINE__)
|
|
|
#ifdef CONFIG_SDIO_HCI
|
#define hal_sd_f0_read8(hal, addr) dbg_hal_sd_f0_read8((hal), (addr), __func__, __LINE__)
|
#ifdef CONFIG_SDIO_INDIRECT_ACCESS
|
#define hal_sd_iread8(hal, addr) dbg_hal_sd_iread8((hal), (addr), __func__, __LINE__)
|
#define hal_sd_iread16(hal, addr) dbg_hal_sd_iread16((hal), (addr), __func__, __LINE__)
|
#define hal_sd_iread32(hal, addr) dbg_hal_sd_iread32((hal), (addr), __func__, __LINE__)
|
#define hal_sd_iwrite8(hal, addr, val) dbg_hal_sd_iwrite8((hal), (addr), (val), __func__, __LINE__)
|
#define hal_sd_iwrite16(hal, addr, val) dbg_hal_sd_iwrite16((hal), (addr), (val), __func__, __LINE__)
|
#define hal_sd_iwrite32(hal, addr, val) dbg_hal_sd_iwrite32((hal), (addr), (val), __func__, __LINE__)
|
#endif /* CONFIG_SDIO_INDIRECT_ACCESS */
|
#endif /* CONFIG_SDIO_HCI */
|
|
#else /* DBG_IO */
|
#define hal_read8(hal, addr) _hal_read8((hal), (addr))
|
#define hal_read16(hal, addr) _hal_read16((hal), (addr))
|
#define hal_read32(hal, addr) _hal_read32((hal), (addr))
|
|
#define hal_write8(hal, addr, val) _hal_write8((hal), (addr), (val))
|
#define hal_write16(hal, addr, val) _hal_write16((hal), (addr), (val))
|
#define hal_write32(hal, addr, val) _hal_write32((hal), (addr), (val))
|
|
|
#ifdef CONFIG_SDIO_HCI
|
#define hal_sd_f0_read8(hal, addr) _hal_sd_f0_read8((hal), (addr))
|
#ifdef CONFIG_SDIO_INDIRECT_ACCESS
|
#define hal_sd_iread8(hal, addr) _hal_sd_iread8((hal), (addr))
|
#define hal_sd_iread16(hal, addr) _hal_sd_iread16((hal), (addr))
|
#define hal_sd_iread32(hal, addr) _hal_sd_iread32((hal), (addr))
|
#define hal_sd_iwrite8(hal, addr, val) _hal_sd_iwrite8((hal), (addr), (val))
|
#define hal_sd_iwrite16(hal, addr, val) _hal_sd_iwrite16((hal), (addr), (val))
|
#define hal_sd_iwrite32(hal, addr, val) _hal_sd_iwrite32((hal), (addr), (val))
|
#endif /* CONFIG_SDIO_INDIRECT_ACCESS */
|
#endif /* CONFIG_SDIO_HCI */
|
|
#endif /* DBG_IO */
|
|
void hal_write32_mask(struct rtw_hal_com_t *hal, u16 addr, u32 mask, u32 val);
|
|
u32 hal_init_io_priv(struct rtw_hal_com_t *hal,
|
void (*set_intf_ops)(struct rtw_hal_com_t *hal, struct hal_io_ops *ops));
|
u32 hal_deinit_io_priv(struct rtw_hal_com_t *hal);
|
|
#endif /* _RTW_IO_H_ */
|