mmc-omap: Add support for 16-bit and 32-bit registers
Subsystems (2)
PATCH v2 1/1 mmc-omap: Add support for 16-bit and 32-bit registers
The omap850 and omap730 use 16-bit registers instead of 32-bit, requiring a modification of the register addresses in the mmc-omap driver.
--- drivers/mmc/host/omap.c | 56 ++++++++++++++++++++++++---------------------- 1 files changed, 29 insertions(+), 27 deletions(-)
drivers/mmc/host/omap.c +29 -27
@@ -2,7 +2,7 @@* linux/drivers/mmc/host/omap.c * * Copyright (C) 2004 Nokia Corporation -* Written by Tuukka Tikkanen and Juha Yrjölä<[email protected]> +* Written by Tuukka Tikkanen and Juha Yrjᅵlᅵ<[email protected]> * Misc hacks here and there by Tony Lindgren <[email protected]> * Other hacks (DMA, SD, etc) by David Brownell *
@@ -37,31 +37,33 @@#include <plat/mux.h> #include <plat/fpga.h> -#define OMAP_MMC_REG_CMD 0x00 -#define OMAP_MMC_REG_ARGL 0x04 -#define OMAP_MMC_REG_ARGH 0x08 -#define OMAP_MMC_REG_CON 0x0c -#define OMAP_MMC_REG_STAT 0x10 -#define OMAP_MMC_REG_IE 0x14 -#define OMAP_MMC_REG_CTO 0x18 -#define OMAP_MMC_REG_DTO 0x1c -#define OMAP_MMC_REG_DATA 0x20 -#define OMAP_MMC_REG_BLEN 0x24 -#define OMAP_MMC_REG_NBLK 0x28 -#define OMAP_MMC_REG_BUF 0x2c -#define OMAP_MMC_REG_SDIO 0x34 -#define OMAP_MMC_REG_REV 0x3c -#define OMAP_MMC_REG_RSP0 0x40 -#define OMAP_MMC_REG_RSP1 0x44 -#define OMAP_MMC_REG_RSP2 0x48 -#define OMAP_MMC_REG_RSP3 0x4c -#define OMAP_MMC_REG_RSP4 0x50 -#define OMAP_MMC_REG_RSP5 0x54 -#define OMAP_MMC_REG_RSP6 0x58 -#define OMAP_MMC_REG_RSP7 0x5c -#define OMAP_MMC_REG_IOSR 0x60 -#define OMAP_MMC_REG_SYSC 0x64 -#define OMAP_MMC_REG_SYSS 0x68 +#define OMAP_MMC_REGISTER_SIZE (cpu_is_omap7xx() ? 2 : 4) + +#define OMAP_MMC_REG_CMD (0x00*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_ARGL (0x01*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_ARGH (0x02*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_CON (0x03*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_STAT (0x04*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_IE (0x05*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_CTO (0x06*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_DTO (0x07*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_DATA (0x08*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_BLEN (0x09*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_NBLK (0x0a*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_BUF (0x0b*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_SDIO (0x0d*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_REV (0x0f*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP0 (0x10*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP1 (0x11*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP2 (0x12*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP3 (0x13*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP4 (0x14*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP5 (0x15*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP6 (0x16*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP7 (0x17*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_IOSR (0x18*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_SYSC (0x19*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_SYSS (0x1a*OMAP_MMC_REGISTER_SIZE)#define OMAP_MMC_STAT_CARD_ERR (1 << 14)#define OMAP_MMC_STAT_CARD_IRQ (1 << 13)
@@ -1619,4 +1621,4 @@ module_exit(mmc_omap_exit);MODULE_DESCRIPTION ("OMAP Multimedia Card driver" );MODULE_LICENSE ("GPL" );MODULE_ALIAS ("platform:" DRIVER_NAME ); -MODULE_AUTHOR ("Juha Yrjölä" ); +MODULE_AUTHOR ("Juha Yrjᅵlᅵ" );
Signature · 1 line
1.6.3.3
Hi,
Quoted 43 lines · Cory Maccarrone
The omap850 and omap730 use 16-bit registers instead of 32-bit, requiring a modification of the register addresses in the mmc-omap driver.
Signed-off-by Marek Belisko <[email protected]>Signed-off-by Cory Maccarrone <[email protected]>--- drivers/mmc/host/omap.c | 56 ++++++++++++++++++++++++---------------------- 1 files changed, 29 insertions(+), 27 deletions(-)drivers/mmc/host/omap.c +1
-18@@ -2,7 +2,7 @@* linux/drivers/mmc/host/omap.c * * Copyright (C) 2004 Nokia Corporation -* Written by Tuukka Tikkanen and Juha Yrjölä<[email protected]> +* Written by Tuukka Tikkanen and Juha Yrjᅵlᅵ<[email protected]> * Misc hacks here and there by Tony Lindgren <[email protected]> * Other hacks (DMA, SD, etc) by David Brownell * @@ -37,31 +37,33 @@#include <plat/mux.h> #include <plat/fpga.h> -#define OMAP_MMC_REG_CMD 0x00 -#define OMAP_MMC_REG_ARGL 0x04 -#define OMAP_MMC_REG_ARGH 0x08 -#define OMAP_MMC_REG_CON 0x0c -#define OMAP_MMC_REG_STAT 0x10 -#define OMAP_MMC_REG_IE 0x14 -#define OMAP_MMC_REG_CTO 0x18 -#define OMAP_MMC_REG_DTO 0x1c -#define OMAP_MMC_REG_DATA 0x20 -#define OMAP_MMC_REG_BLEN 0x24 -#define OMAP_MMC_REG_NBLK 0x28 -#define OMAP_MMC_REG_BUF 0x2c -#define OMAP_MMC_REG_SDIO 0x34 -#define OMAP_MMC_REG_REV 0x3c -#define OMAP_MMC_REG_RSP0 0x40 -#define OMAP_MMC_REG_RSP1 0x44 -#define OMAP_MMC_REG_RSP2 0x48
drivers/mmc/host/omap.c line 41
Quoted 10 lines
drivers/mmc/host/omap.c +2
-8-#define OMAP_MMC_REG_RSP3 0x4c -#define OMAP_MMC_REG_RSP4 0x50 -#define OMAP_MMC_REG_RSP5 0x54 -#define OMAP_MMC_REG_RSP6 0x58 -#define OMAP_MMC_REG_RSP7 0x5c -#define OMAP_MMC_REG_IOSR 0x60 -#define OMAP_MMC_REG_SYSC 0x64 -#define OMAP_MMC_REG_SYSS 0x68 +#define OMAP_MMC_REGISTER_SIZE (cpu_is_omap7xx() ? 2 : 4) +
You need to set the register shift dynamically during init as cpu_is_omap7xx is not static if multiple omaps are compiled in.
Then maybe set functions for omap_mmc_read/write that shift the registers?
Quoted 29 lines
drivers/mmc/host/omap.c +25
-0+#define OMAP_MMC_REG_CMD (0x00*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_ARGL (0x01*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_ARGH (0x02*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_CON (0x03*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_STAT (0x04*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_IE (0x05*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_CTO (0x06*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_DTO (0x07*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_DATA (0x08*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_BLEN (0x09*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_NBLK (0x0a*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_BUF (0x0b*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_SDIO (0x0d*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_REV (0x0f*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP0 (0x10*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP1 (0x11*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP2 (0x12*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP3 (0x13*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP4 (0x14*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP5 (0x15*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP6 (0x16*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_RSP7 (0x17*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_IOSR (0x18*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_SYSC (0x19*OMAP_MMC_REGISTER_SIZE) +#define OMAP_MMC_REG_SYSS (0x1a*OMAP_MMC_REGISTER_SIZE)#define OMAP_MMC_STAT_CARD_ERR (1 << 14)#define OMAP_MMC_STAT_CARD_IRQ (1 << 13)
drivers/mmc/host/omap.c module_exit(mmc_omap_exit); · line 1624
Quoted 5 lines
drivers/mmc/host/omap.c +1
-1@@ -1619,4 +1621,4 @@ module_exit(mmc_omap_exit);MODULE_DESCRIPTION ("OMAP Multimedia Card driver" );MODULE_LICENSE ("GPL" );MODULE_ALIAS ("platform:" DRIVER_NAME ); -MODULE_AUTHOR ("Juha Yrjölä" ); +MODULE_AUTHOR ("Juha Yrjᅵlᅵ" );
This change should be left out.
Regards,
Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 7 lines · Tony Lindgren
Hi,
You need to set the register shift dynamically during init as
cpu_is_omap7xxis not static if multiple omaps are compiled in.Then maybe set functions for omap_mmc_read/write that shift the registers?
Ah, right, that got by me. I had something like that in the original patch -- I'll put it back in.
Quoted 3 lines
This change should be left out.
Alright.
I'll make those changes and resubmit.
- Cory