|
@@ -35,6 +35,7 @@
|
|
|
#include <linux/mtd/physmap.h>
|
|
|
#include <linux/spi/spi.h>
|
|
|
#include <linux/spi/flash.h>
|
|
|
+#include <linux/spi/mmc_spi.h>
|
|
|
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
|
|
|
#include <linux/usb/isp1362.h>
|
|
|
#endif
|
|
@@ -223,6 +224,34 @@ static struct bfin5xx_spi_chip spidev_chip_info = {
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
+#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
|
|
|
+#define MMC_SPI_CARD_DETECT_INT IRQ_PF5
|
|
|
+static int bfin_mmc_spi_init(struct device *dev,
|
|
|
+ irqreturn_t (*detect_int)(int, void *), void *data)
|
|
|
+{
|
|
|
+ return request_irq(MMC_SPI_CARD_DETECT_INT, detect_int,
|
|
|
+ IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
|
|
|
+ "mmc-spi-detect", data);
|
|
|
+}
|
|
|
+
|
|
|
+static void bfin_mmc_spi_exit(struct device *dev, void *data)
|
|
|
+{
|
|
|
+ free_irq(MMC_SPI_CARD_DETECT_INT, data);
|
|
|
+}
|
|
|
+
|
|
|
+static struct mmc_spi_platform_data bfin_mmc_spi_pdata = {
|
|
|
+ .init = bfin_mmc_spi_init,
|
|
|
+ .exit = bfin_mmc_spi_exit,
|
|
|
+ .detect_delay = 100, /* msecs */
|
|
|
+};
|
|
|
+
|
|
|
+static struct bfin5xx_spi_chip mmc_spi_chip_info = {
|
|
|
+ .enable_dma = 0,
|
|
|
+ .bits_per_word = 8,
|
|
|
+ .pio_interrupt = 0,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
|
|
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
|
|
|
{
|
|
@@ -286,6 +315,17 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
|
|
.controller_data = &spidev_chip_info,
|
|
|
},
|
|
|
#endif
|
|
|
+#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
|
|
|
+ {
|
|
|
+ .modalias = "mmc_spi",
|
|
|
+ .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
|
|
|
+ .bus_num = 0,
|
|
|
+ .chip_select = 4,
|
|
|
+ .platform_data = &bfin_mmc_spi_pdata,
|
|
|
+ .controller_data = &mmc_spi_chip_info,
|
|
|
+ .mode = SPI_MODE_3,
|
|
|
+ },
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
|