#include "ssb_private.h"
#include <linux/ssb/ssb.h>
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/etherdevice.h>
#include <linux/mmc/sdio_func.h>
#define SSB_VERBOSE_SDIOCORESWITCH_DEBUG …
#define SSB_SDIO_CIS …
#define SSB_SDIO_CIS_SROMREV …
#define SSB_SDIO_CIS_ID …
#define SSB_SDIO_CIS_BOARDREV …
#define SSB_SDIO_CIS_PA …
#define SSB_SDIO_CIS_PA_PA0B0_LO …
#define SSB_SDIO_CIS_PA_PA0B0_HI …
#define SSB_SDIO_CIS_PA_PA0B1_LO …
#define SSB_SDIO_CIS_PA_PA0B1_HI …
#define SSB_SDIO_CIS_PA_PA0B2_LO …
#define SSB_SDIO_CIS_PA_PA0B2_HI …
#define SSB_SDIO_CIS_PA_ITSSI …
#define SSB_SDIO_CIS_PA_MAXPOW …
#define SSB_SDIO_CIS_OEMNAME …
#define SSB_SDIO_CIS_CCODE …
#define SSB_SDIO_CIS_ANTENNA …
#define SSB_SDIO_CIS_ANTGAIN …
#define SSB_SDIO_CIS_BFLAGS …
#define SSB_SDIO_CIS_LEDS …
#define CISTPL_FUNCE_LAN_NODE_ID …
#define SBSDIO_FUNC1_SBADDRLOW …
#define SBSDIO_FUNC1_SBADDRMID …
#define SBSDIO_FUNC1_SBADDRHIGH …
#define SBSDIO_SBADDRLOW_MASK …
#define SBSDIO_SBADDRMID_MASK …
#define SBSDIO_SBADDRHIGH_MASK …
#define SBSDIO_SB_OFT_ADDR_MASK …
#define SBSDIO_SB_ACCESS_2_4B_FLAG …
static inline struct device *ssb_sdio_dev(struct ssb_bus *bus)
{ … }
static int ssb_sdio_writeb(struct ssb_bus *bus, unsigned int addr, u8 val)
{ … }
#if 0
static u8 ssb_sdio_readb(struct ssb_bus *bus, unsigned int addr)
{
u8 val;
int error = 0;
val = sdio_readb(bus->host_sdio, addr, &error);
if (unlikely(error)) {
dev_dbg(ssb_sdio_dev(bus), "%08X -> %02x, error %d\n",
addr, val, error);
}
return val;
}
#endif
static int ssb_sdio_set_sbaddr_window(struct ssb_bus *bus, u32 address)
{ … }
u32 ssb_sdio_scan_read32(struct ssb_bus *bus, u16 offset)
{ … }
int ssb_sdio_scan_switch_coreidx(struct ssb_bus *bus, u8 coreidx)
{ … }
static int ssb_sdio_switch_core(struct ssb_bus *bus, struct ssb_device *dev)
{ … }
static u8 ssb_sdio_read8(struct ssb_device *dev, u16 offset)
{ … }
static u16 ssb_sdio_read16(struct ssb_device *dev, u16 offset)
{ … }
static u32 ssb_sdio_read32(struct ssb_device *dev, u16 offset)
{ … }
#ifdef CONFIG_SSB_BLOCKIO
static void ssb_sdio_block_read(struct ssb_device *dev, void *buffer,
size_t count, u16 offset, u8 reg_width)
{ … }
#endif
static void ssb_sdio_write8(struct ssb_device *dev, u16 offset, u8 val)
{ … }
static void ssb_sdio_write16(struct ssb_device *dev, u16 offset, u16 val)
{ … }
static void ssb_sdio_write32(struct ssb_device *dev, u16 offset, u32 val)
{ … }
#ifdef CONFIG_SSB_BLOCKIO
static void ssb_sdio_block_write(struct ssb_device *dev, const void *buffer,
size_t count, u16 offset, u8 reg_width)
{ … }
#endif
const struct ssb_bus_ops ssb_sdio_ops = …;
#define GOTO_ERROR_ON(condition, description) …
int ssb_sdio_get_invariants(struct ssb_bus *bus,
struct ssb_init_invariants *iv)
{ … }
void ssb_sdio_exit(struct ssb_bus *bus)
{ … }
int ssb_sdio_init(struct ssb_bus *bus)
{ … }