#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/gpio/consumer.h>
#include <linux/delay.h>
#include <linux/mmc/host.h>
#include <linux/mmc/sdio_func.h>
#include <linux/mmc/card.h>
#include <linux/mmc/sdio.h>
#include <linux/mmc/sdio_ids.h>
#include <net/mac80211.h>
#include "cw1200.h"
#include "hwbus.h"
#include <linux/platform_data/net-cw1200.h>
#include "hwio.h"
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define SDIO_BLOCK_SIZE …
static struct cw1200_platform_data_sdio sagrad_109x_evk_platform_data = …;
static struct cw1200_platform_data_sdio *global_plat_data = …;
void __init cw1200_sdio_set_platform_data(struct cw1200_platform_data_sdio *pdata)
{ … }
struct hwbus_priv { … };
static const struct sdio_device_id cw1200_sdio_ids[] = …;
MODULE_DEVICE_TABLE(sdio, cw1200_sdio_ids);
static int cw1200_sdio_memcpy_fromio(struct hwbus_priv *self,
unsigned int addr,
void *dst, int count)
{ … }
static int cw1200_sdio_memcpy_toio(struct hwbus_priv *self,
unsigned int addr,
const void *src, int count)
{ … }
static void cw1200_sdio_lock(struct hwbus_priv *self)
{ … }
static void cw1200_sdio_unlock(struct hwbus_priv *self)
{ … }
static void cw1200_sdio_irq_handler(struct sdio_func *func)
{ … }
static irqreturn_t cw1200_gpio_hardirq(int irq, void *dev_id)
{ … }
static irqreturn_t cw1200_gpio_irq(int irq, void *dev_id)
{ … }
static int cw1200_request_irq(struct hwbus_priv *self)
{ … }
static int cw1200_sdio_irq_subscribe(struct hwbus_priv *self)
{ … }
static int cw1200_sdio_irq_unsubscribe(struct hwbus_priv *self)
{ … }
static struct gpio_desc *cw1200_reset;
static struct gpio_desc *cw1200_powerup;
static int cw1200_sdio_off(const struct cw1200_platform_data_sdio *pdata)
{ … }
static int cw1200_sdio_on(const struct cw1200_platform_data_sdio *pdata)
{ … }
static size_t cw1200_sdio_align_size(struct hwbus_priv *self, size_t size)
{ … }
static int cw1200_sdio_pm(struct hwbus_priv *self, bool suspend)
{ … }
static const struct hwbus_ops cw1200_sdio_hwbus_ops = …;
static int cw1200_sdio_probe(struct sdio_func *func,
const struct sdio_device_id *id)
{ … }
static void cw1200_sdio_disconnect(struct sdio_func *func)
{ … }
#ifdef CONFIG_PM
static int cw1200_sdio_suspend(struct device *dev)
{ … }
static int cw1200_sdio_resume(struct device *dev)
{ … }
static const struct dev_pm_ops cw1200_pm_ops = …;
#endif
static struct sdio_driver sdio_driver = …;
static int __init cw1200_sdio_init(void)
{ … }
static void __exit cw1200_sdio_exit(void)
{ … }
module_init(…) …;
module_exit(cw1200_sdio_exit);