Commit c4223c2c authored by Manuel Lauss's avatar Manuel Lauss Committed by Pierre Ossman

au1xmmc: remove db1200 board code, rewrite probe.

Remove the DB1200 board-specific functions (card present, read-only,
activity LED methods) and instead add platform data which is passed
to the driver.  This also allows for platforms to implement other
carddetect schemes (e.g. dedicated irq) without having to pollute the
driver code.  The poll timer (used for pb1200) is kept for compatibility.

With the board-specific stuff gone, the driver's ->probe() code can be
cleaned up considerably.
Signed-off-by: default avatarManuel Lauss <mano@roarinelk.homelinux.net>
Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent 12bd2575
This diff is collapsed.
...@@ -49,8 +49,6 @@ struct au1xmmc_host { ...@@ -49,8 +49,6 @@ struct au1xmmc_host {
struct mmc_host *mmc; struct mmc_host *mmc;
struct mmc_request *mrq; struct mmc_request *mrq;
u32 id;
u32 flags; u32 flags;
u32 iobase; u32 iobase;
u32 clock; u32 clock;
...@@ -73,11 +71,14 @@ struct au1xmmc_host { ...@@ -73,11 +71,14 @@ struct au1xmmc_host {
u32 tx_chan; u32 tx_chan;
u32 rx_chan; u32 rx_chan;
int irq;
struct timer_list timer; struct timer_list timer;
struct tasklet_struct finish_task; struct tasklet_struct finish_task;
struct tasklet_struct data_task; struct tasklet_struct data_task;
struct au1xmmc_platform_data *platdata;
spinlock_t lock; struct platform_device *pdev;
struct resource *ioarea;
}; };
/* Status flags used by the host structure */ /* Status flags used by the host structure */
......
...@@ -38,15 +38,15 @@ ...@@ -38,15 +38,15 @@
#ifndef __ASM_AU1100_MMC_H #ifndef __ASM_AU1100_MMC_H
#define __ASM_AU1100_MMC_H #define __ASM_AU1100_MMC_H
#include <linux/leds.h>
#define NUM_AU1100_MMC_CONTROLLERS 2
struct au1xmmc_platform_data {
#if defined(CONFIG_SOC_AU1100) int(*cd_setup)(void *mmc_host, int on);
#define AU1100_SD_IRQ AU1100_SD_INT int(*card_inserted)(void *mmc_host);
#elif defined(CONFIG_SOC_AU1200) int(*card_readonly)(void *mmc_host);
#define AU1100_SD_IRQ AU1200_SD_INT void(*set_power)(void *mmc_host, int state);
#endif struct led_classdev *led;
};
#define SD0_BASE 0xB0600000 #define SD0_BASE 0xB0600000
#define SD1_BASE 0xB0680000 #define SD1_BASE 0xB0680000
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment