linux/drivers/net/wireless/ath/ath10k/sdio.h

/* SPDX-License-Identifier: ISC */
/*
 * Copyright (c) 2004-2011 Atheros Communications Inc.
 * Copyright (c) 2011-2012 Qualcomm Atheros, Inc.
 * Copyright (c) 2016-2017 Erik Stromdahl <[email protected]>
 */

#ifndef _SDIO_H_
#define _SDIO_H_

#define ATH10K_HIF_MBOX_BLOCK_SIZE

#define ATH10K_SDIO_MAX_BUFFER_SIZE

/* Mailbox address in SDIO address space */
#define ATH10K_HIF_MBOX_BASE_ADDR
#define ATH10K_HIF_MBOX_WIDTH

#define ATH10K_HIF_MBOX_TOT_WIDTH

#define ATH10K_HIF_MBOX0_EXT_BASE_ADDR
#define ATH10K_HIF_MBOX0_EXT_WIDTH
#define ATH10K_HIF_MBOX0_EXT_WIDTH_ROME_2_0
#define ATH10K_HIF_MBOX1_EXT_WIDTH
#define ATH10K_HIF_MBOX_DUMMY_SPACE_SIZE

#define ATH10K_HTC_MBOX_MAX_PAYLOAD_LENGTH

#define ATH10K_HIF_MBOX_NUM_MAX
#define ATH10K_SDIO_BUS_REQUEST_MAX_NUM

#define ATH10K_SDIO_HIF_COMMUNICATION_TIMEOUT_HZ

/* HTC runs over mailbox 0 */
#define ATH10K_HTC_MAILBOX
#define ATH10K_HTC_MAILBOX_MASK

/* GMBOX addresses */
#define ATH10K_HIF_GMBOX_BASE_ADDR
#define ATH10K_HIF_GMBOX_WIDTH

/* Modified versions of the sdio.h macros.
 * The macros in sdio.h can't be used easily with the FIELD_{PREP|GET}
 * macros in bitfield.h, so we define our own macros here.
 */
#define ATH10K_SDIO_DRIVE_DTSX_MASK

#define ATH10K_SDIO_DRIVE_DTSX_TYPE_B
#define ATH10K_SDIO_DRIVE_DTSX_TYPE_A
#define ATH10K_SDIO_DRIVE_DTSX_TYPE_C
#define ATH10K_SDIO_DRIVE_DTSX_TYPE_D

/* SDIO CCCR register definitions */
#define CCCR_SDIO_IRQ_MODE_REG
#define CCCR_SDIO_IRQ_MODE_REG_SDIO3

#define CCCR_SDIO_DRIVER_STRENGTH_ENABLE_ADDR

#define CCCR_SDIO_DRIVER_STRENGTH_ENABLE_A
#define CCCR_SDIO_DRIVER_STRENGTH_ENABLE_C
#define CCCR_SDIO_DRIVER_STRENGTH_ENABLE_D

#define CCCR_SDIO_ASYNC_INT_DELAY_ADDRESS
#define CCCR_SDIO_ASYNC_INT_DELAY_MASK

/* mode to enable special 4-bit interrupt assertion without clock */
#define SDIO_IRQ_MODE_ASYNC_4BIT_IRQ
#define SDIO_IRQ_MODE_ASYNC_4BIT_IRQ_SDIO3

#define ATH10K_SDIO_TARGET_DEBUG_INTR_MASK

/* The theoretical maximum number of RX messages that can be fetched
 * from the mbox interrupt handler in one loop is derived in the following
 * way:
 *
 * Let's assume that each packet in a bundle of the maximum bundle size
 * (HTC_HOST_MAX_MSG_PER_RX_BUNDLE) has the HTC header bundle count set
 * to the maximum value (HTC_HOST_MAX_MSG_PER_RX_BUNDLE).
 *
 * in this case the driver must allocate
 * (HTC_HOST_MAX_MSG_PER_RX_BUNDLE * 2) skb's.
 */
#define ATH10K_SDIO_MAX_RX_MSGS

#define ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL
#define ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL_DISABLE_SLEEP_OFF
#define ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL_DISABLE_SLEEP_ON

enum sdio_mbox_state {};

#define ATH10K_CIS_READ_WAIT_4_RTC_CYCLE_IN_US
#define ATH10K_CIS_RTC_STATE_ADDR
#define ATH10K_CIS_RTC_STATE_ON
#define ATH10K_CIS_XTAL_SETTLE_DURATION_IN_US
#define ATH10K_CIS_READ_RETRY
#define ATH10K_MIN_SLEEP_INACTIVITY_TIME_MS

/* TODO: remove this and use skb->cb instead, much cleaner approach */
struct ath10k_sdio_bus_request {};

struct ath10k_sdio_rx_data {};

struct ath10k_sdio_irq_proc_regs {};

struct ath10k_sdio_irq_enable_regs {};

struct ath10k_sdio_irq_data {};

struct ath10k_mbox_ext_info {};

struct ath10k_mbox_info {};

struct ath10k_sdio {};

static inline struct ath10k_sdio *ath10k_sdio_priv(struct ath10k *ar)
{}

#endif