* [PATCH v2] mmc-omap: Add support for 16-bit and 32-bit registers
@ 2009-11-22 19:34 Cory Maccarrone
2009-11-22 20:20 ` Tony Lindgren
0 siblings, 1 reply; 3+ messages in thread
From: Cory Maccarrone @ 2009-11-22 19:34 UTC (permalink / raw)
To: linux-mmc, linux-omap
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 <marek.belisko@open-nandra.com>
Signed-off-by: Cory Maccarrone <darkstar6262@gmail.com>
---
drivers/mmc/host/omap.c | 56 ++++++++++++++++++++++++----------------------
1 files changed, 29 insertions(+), 27 deletions(-)
diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
index 5f970e2..892400b 100644
--- a/drivers/mmc/host/omap.c
+++ b/drivers/mmc/host/omap.c
@@ -2,7 +2,7 @@
* linux/drivers/mmc/host/omap.c
*
* Copyright (C) 2004 Nokia Corporation
- * Written by Tuukka Tikkanen and Juha Yrjölä<juha.yrjola@nokia.com>
+ * Written by Tuukka Tikkanen and Juha Yrjᅵlᅵ<juha.yrjola@nokia.com>
* Misc hacks here and there by Tony Lindgren <tony@atomide.com>
* 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ᅵ");
--
1.6.3.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] mmc-omap: Add support for 16-bit and 32-bit registers
2009-11-22 19:34 [PATCH v2] mmc-omap: Add support for 16-bit and 32-bit registers Cory Maccarrone
@ 2009-11-22 20:20 ` Tony Lindgren
2009-11-22 20:29 ` Cory Maccarrone
0 siblings, 1 reply; 3+ messages in thread
From: Tony Lindgren @ 2009-11-22 20:20 UTC (permalink / raw)
To: Cory Maccarrone; +Cc: linux-mmc, linux-omap
Hi,
* Cory Maccarrone <darkstar6262@gmail.com> [091122 11:34]:
> 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 <marek.belisko@open-nandra.com>
> Signed-off-by: Cory Maccarrone <darkstar6262@gmail.com>
> ---
> drivers/mmc/host/omap.c | 56 ++++++++++++++++++++++++----------------------
> 1 files changed, 29 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
> index 5f970e2..892400b 100644
> --- a/drivers/mmc/host/omap.c
> +++ b/drivers/mmc/host/omap.c
> @@ -2,7 +2,7 @@
> * linux/drivers/mmc/host/omap.c
> *
> * Copyright (C) 2004 Nokia Corporation
> - * Written by Tuukka Tikkanen and Juha Yrjölä<juha.yrjola@nokia.com>
> + * Written by Tuukka Tikkanen and Juha Yrjᅵlᅵ<juha.yrjola@nokia.com>
> * Misc hacks here and there by Tony Lindgren <tony@atomide.com>
> * 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)
> +
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?
> +#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ᅵ");
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 majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] mmc-omap: Add support for 16-bit and 32-bit registers
2009-11-22 20:20 ` Tony Lindgren
@ 2009-11-22 20:29 ` Cory Maccarrone
0 siblings, 0 replies; 3+ messages in thread
From: Cory Maccarrone @ 2009-11-22 20:29 UTC (permalink / raw)
To: Tony Lindgren; +Cc: linux-mmc, linux-omap
On Sun, Nov 22, 2009 at 12:20 PM, Tony Lindgren <tony@atomide.com> wrote:
> Hi,
>
> 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?
>
Ah, right, that got by me. I had something like that in the original
patch -- I'll put it back in.
>
> This change should be left out.
>
Alright.
I'll make those changes and resubmit.
- Cory
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-11-22 20:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-22 19:34 [PATCH v2] mmc-omap: Add support for 16-bit and 32-bit registers Cory Maccarrone
2009-11-22 20:20 ` Tony Lindgren
2009-11-22 20:29 ` Cory Maccarrone
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox