182#define MMHAL_WLAN_FW_BCF_MIN_READ_LENGTH (4)
423 uint32_t space_at_start, uint32_t space_at_end,
424 uint32_t metadata_length);
442 uint32_t capacity, uint32_t metadata_length);
450#define MMHAL_WLAN_MMPKT_TX_MAX_SIZE (1664)
456#define MMHAL_WLAN_MMPKT_RX_MAX_SIZE (1668)
461#ifndef MMPKTMEM_TX_POOL_N_BLOCKS
462#define MMPKTMEM_TX_POOL_N_BLOCKS (20)
470#ifndef MMPKTMEM_RX_POOL_N_BLOCKS
471#define MMPKTMEM_RX_POOL_N_BLOCKS (23)
614 MMHAL_SDIO_FUNCTION_0 = 0,
622 MMHAL_SDIO_MODE_BYTE = 0,
636#define MMHAL_SDIO_ADDRESS_OFFSET (9)
638#define MMHAL_SDIO_ADDRESS_MAX ((1ul << 18) - 1)
641#define MMHAL_SDIO_COUNT_OFFSET (0)
643#define MMHAL_SDIO_COUNT_MAX ((1ul << 10) - 1)
646#define MMHAL_SDIO_CMD52_DATA_OFFSET (0)
660 uint32_t address, uint8_t write_data)
void(* mmhal_wlan_pktmem_tx_flow_control_cb_t)(void)
Flow control callback that can be invoked by the transmit packet memory manager to pause and resume t...
enum mmwlan_tx_flow_control_state mmhal_wlan_pktmem_tx_flow_control_state(void)
Gets the current TX flow control state.
struct mmpkt * mmhal_wlan_alloc_mmpkt_for_tx(uint8_t pkt_class, uint32_t space_at_start, uint32_t space_at_end, uint32_t metadata_length)
Allocates an mmpkt for transmission.
void mmhal_wlan_pktmem_init(struct mmhal_wlan_pktmem_init_args *args)
Invoked by the driver to initialize the packet memory in the HAL.
mmhal_wlan_pkt_class
Enumeration of packet classes used by mmhal_wlan_alloc_mmpkt_for_tx().
void mmhal_wlan_pktmem_deinit(void)
Invoked by the driver to deinitialize the packet memory in the HAL.
struct mmpkt * mmhal_wlan_alloc_mmpkt_for_rx(uint8_t pkt_class, uint32_t capacity, uint32_t metadata_length)
Allocates an mmpkt for reception.
@ MMHAL_WLAN_PKT_DATA_TID4
Data TID4.
@ MMHAL_WLAN_PKT_DATA_TID7
Data TID7.
@ MMHAL_WLAN_PKT_DATA_TID6
Data TID6.
@ MMHAL_WLAN_PKT_MANAGEMENT
802.11 Management and other important frames
@ MMHAL_WLAN_PKT_COMMAND
Commands from driver to chip.
@ MMHAL_WLAN_PKT_DATA_TID5
Data TID5.
@ MMHAL_WLAN_PKT_DATA_TID2
Data TID2.
@ MMHAL_WLAN_PKT_DATA_TID3
Data TID3.
@ MMHAL_WLAN_PKT_DATA_TID0
Data TID0.
@ MMHAL_WLAN_PKT_DATA_TID1
Data TID1.
mmhal_sdio_opcode
SDIO CMD53 OP code.
static uint32_t mmhal_make_cmd53_arg(enum mmhal_sdio_rw rw, enum mmhal_sdio_function fn, enum mmhal_sdio_mode mode, uint32_t address, uint16_t count)
Construct an SDIO CMD53 argument based on the given arguments.
static uint32_t mmhal_make_cmd52_arg(enum mmhal_sdio_rw rw, enum mmhal_sdio_function fn, uint32_t address, uint8_t write_data)
Construct an SDIO CMD52 argument based on the given arguments.
mmhal_sdio_mode
SDIO CMD53 block mode.
mmhal_sdio_rw
SDIO CMD52/CMD53 R/W flag.
#define MMHAL_SDIO_CMD52_DATA_OFFSET
CMD52 Data (8 bit) offset.
mmhal_sdio_function
SDIO CMD52/CMD53 function number.
#define MMHAL_SDIO_COUNT_OFFSET
CMD53 Byte/block count offset (9 bit).
#define MMHAL_SDIO_ADDRESS_OFFSET
CMD52/53 Register Address (17 bit) offset.
@ MMHAL_SDIO_OPCODE_INC_ADDR
Increment address by 1 after each byte.
@ MMHAL_SDIO_OPCODE_FIXED_ADDR
Operate on a single, fixed address.
@ MMHAL_SDIO_MODE_BLOCK
Byte mode.
@ MMHAL_SDIO_READ
Read operation.
@ MMHAL_SDIO_WRITE
Write operation.
@ MMHAL_SDIO_FUNCTION_1
Function 0.
@ MMHAL_SDIO_FUNCTION_2
Function 1.
int mmhal_wlan_sdio_cmd53_read(const struct mmhal_wlan_sdio_cmd53_read_args *args)
Execute an SDIO CMD53 read.
mmhal_sdio_error_codes
Enumeration of error codes that may be returned from mmhal_wlan_sdio_XXX() functions.
int mmhal_wlan_sdio_cmd53_write(const struct mmhal_wlan_sdio_cmd53_write_args *args)
Execute an SDIO CMD53 write.
int mmhal_wlan_sdio_cmd(uint8_t cmd_idx, uint32_t arg, uint32_t *rsp)
Execute an SDIO command without data.
int mmhal_wlan_sdio_startup(void)
Perform transport specific startup.
@ MMHAL_SDIO_INVALID_ARGUMENT
Invalid argument given (e.g., incorrect buffer alignment).
@ MMHAL_SDIO_HW_ERROR
Local hardware error (e.g., issue with SDIO controller).
@ MMHAL_SDIO_CMD_CRC_ERROR
CRC error executing SDIO command.
@ MMHAL_SDIO_DATA_OVERRUN
Overflow reading from SDIO controller FIFO.
@ MMHAL_SDIO_DATA_UNDERFLOW
Underflow filling SDIO controller FIFO.
@ MMHAL_SDIO_OTHER_ERROR
Another error not covered by the above error codes.
@ MMHAL_SDIO_DATA_TIMEOUT
Timeout transferring data.
@ MMHAL_SDIO_DATA_CRC_ERROR
CRC error transferring data.
@ MMHAL_SDIO_CMD_TIMEOUT
Timeout executing SDIO command.
void mmhal_wlan_register_spi_irq_handler(mmhal_irq_handler_t handler)
Register a handler for SPI interrupts.
bool mmhal_wlan_ext_xtal_init_is_required(void)
Invoked by the driver to check whether the external crystal initialization sequence is required.
void mmhal_wlan_set_spi_irq_enabled(bool enabled)
Sets whether the SPI interrupt is enabled.
uint8_t mmhal_wlan_spi_rw(uint8_t data)
Simultaneously read and write on the SPI bus.
void mmhal_wlan_clear_spi_irq(void)
Clear the SPI IRQ.
void mmhal_wlan_spi_cs_assert(void)
Assert the WLAN SPI chip select pin.
void mmhal_wlan_send_training_seq(void)
Issue the training sequence.
void mmhal_wlan_spi_read_buf(uint8_t *buf, unsigned len)
Receive multiple octets of data from SPI bus.
bool mmhal_wlan_spi_irq_is_asserted(void)
Tests whether the SPI interrupt pin is currently asserted.
void mmhal_wlan_spi_cs_deassert(void)
Deassert the WLAN SPI chip select pin.
void mmhal_wlan_spi_write_buf(const uint8_t *buf, unsigned len)
Transmit multiple octets of data to SPI bus.
void mmhal_wlan_hard_reset(void)
Hard reset the chip by asserting and then releasing the reset pin.
void mmhal_wlan_wake_deassert(void)
Deassert the WLAN wake pin.
void mmhal_wlan_wake_assert(void)
Assert the WLAN wake pin.
void mmhal_wlan_read_bcf_file(uint32_t offset, uint32_t requested_len, struct mmhal_robuf *robuf)
Retrieves the content of the Morse Micro Board Configuration File and places it into the given buffer...
void mmhal_wlan_register_busy_irq_handler(mmhal_irq_handler_t handler)
Register a handler for busy interrupts.
void mmhal_wlan_deinit(void)
Deinitialize the WLAN HAL.
void mmhal_read_mac_addr(uint8_t *mac_addr)
Get MAC address override.
void mmhal_wlan_set_busy_irq_enabled(bool enabled)
Sets whether the busy interrupt is enabled.
bool mmhal_wlan_busy_is_asserted(void)
Tests whether the busy pin is currently asserted.
void(* mmhal_irq_handler_t)(void)
Function prototype for interrupt handler callbacks.
void mmhal_wlan_init(void)
Initialize the WLAN HAL.
void mmhal_wlan_read_fw_file(uint32_t offset, uint32_t requested_len, struct mmhal_robuf *robuf)
Retrieves the content of the Morse Micro Chip Firmware and places it into the given buffer.
mmwlan_tx_flow_control_state
Enumeration of states that can be returned by the transmit flow control callback (as registered by mm...
char buf[1408]
Statically allocated buffer for HTTP GET request, just under 1 packet size.
Read-only buffer data structure.
const uint8_t * buf
Pointer to the start of the read-only buffer.
uint32_t len
Length of the buffer contents.
void * free_arg
Optional argument to free_cb.
void(* free_cb)(void *arg)
Optional callback to be invoked by the consumer to release the buffer when it is no longer required.
Initialization arguments passed to mmhal_wlan_pktmem_init().
mmhal_wlan_pktmem_tx_flow_control_cb_t tx_flow_control_cb
Flow control callback that can be used by the transmit packet memory manager.
Arguments structure for mmhal_wlan_sdio_cmd53_read().
uint16_t block_size
If non-zero this indicates that the data should be transferred in block mode with the given block siz...
uint32_t sdio_arg
The SDIO argument.
uint16_t transfer_length
Transfer length measured in blocks if block_size is non-zero otherwise in bytes.
uint8_t * data
Pointer to the data buffer to receive the data.
Arguments structure for mmhal_wlan_sdio_cmd53_write().
const uint8_t * data
Pointer to the data buffer.
uint16_t block_size
If non-zero this indicates that the data should be transferred in block mode with the given block siz...
uint16_t transfer_length
Transfer length measured in blocks if block_size is non-zero otherwise in bytes.
uint32_t sdio_arg
The SDIO argument.
Core mmpkt data structure.