summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bdc0023)
raw | patch | inline | side by side (parent: bdc0023)
author | Ravi B <ravibabu@ti.com> | |
Tue, 14 Jun 2011 08:53:22 +0000 (14:23 +0530) | ||
committer | Vaibhav Hiremath <hvaibhav@ti.com> | |
Mon, 23 Jan 2012 19:14:04 +0000 (00:44 +0530) |
The patch uses the information about hw endpoint register address
mapping from hw glue driver to implement MUSB_OFFSET/musb_ep_select
for different cases.
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
mapping from hw glue driver to implement MUSB_OFFSET/musb_ep_select
for different cases.
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
index 244ca85524f2894b72d29c2a1b95938462f64c3c..624ff82cf259565a2acf31163777162297968e8e 100644 (file)
--- a/drivers/usb/musb/am35x.c
+++ b/drivers/usb/musb/am35x.c
static const struct musb_platform_ops am35x_ops = {
.fifo_mode = 4,
+ .flags = MUSB_GLUE_EP_ADDR_FLAT_MAPPING,
.init = am35x_musb_init,
.exit = am35x_musb_exit,
index fea4f08d1b588040f657bea538de63773c081aac..69cf0890cb0ada4b94bdf7bff8ca3adebdda2234 100644 (file)
static const struct musb_platform_ops bfin_ops = {
.fifo_mode = 2,
+ .flags = MUSB_GLUE_EP_ADDR_FLAT_MAPPING,
.init = bfin_musb_init,
.exit = bfin_musb_exit,
index 1284f8875d7acc405dbc0b5788c14251b0d6d73e..bbfcd3e10d0c59113cd878befa556bbaad8de6ad 100644 (file)
--- a/drivers/usb/musb/da8xx.c
+++ b/drivers/usb/musb/da8xx.c
static const struct musb_platform_ops da8xx_ops = {
.fifo_mode = 2,
+ .flags = MUSB_GLUE_EP_ADDR_FLAT_MAPPING,
.init = da8xx_musb_init,
.exit = da8xx_musb_exit,
index 4e0b21a4cbb9b8c1291f8db61ae5f7aa5be615c4..f8b92ad575f6e74adad648f2bd54d9a856f3eb31 100644 (file)
static const struct musb_platform_ops davinci_ops = {
.fifo_mode = 2,
+ .flags = MUSB_GLUE_EP_ADDR_FLAT_MAPPING,
.init = davinci_musb_init,
.exit = davinci_musb_exit,
index e070251deb2ae3efe3f7f8946f4de25e38a8dc0a..5f320018f8510854e10d59b88e1ff27d52b36880 100644 (file)
* directly with the "flat" model, or after setting up an index register.
*/
-#if defined(CONFIG_ARCH_DAVINCI) || defined(CONFIG_SOC_OMAP2430) \
- || defined(CONFIG_SOC_OMAP3430) || defined(CONFIG_BLACKFIN) \
- || defined(CONFIG_ARCH_OMAP4)
-/* REVISIT indexed access seemed to
- * misbehave (on DaVinci) for at least peripheral IN ...
- */
-#define MUSB_FLAT_REG
-#endif
-
-/* "flat" mapping: each endpoint has its own i/o address */
-#ifdef MUSB_FLAT_REG
-#define musb_ep_select(_musb, _mbase, _epnum) \
- (((void)(_mbase)), ((void)(_epnum)))
-#define MUSB_EP_OFFSET MUSB_FLAT_OFFSET
-
-/* "indexed" mapping: INDEX register controls register bank select */
-#else
-#define musb_ep_select(_musb, _mbase, _epnum) \
- musb_writeb((_mbase), MUSB_INDEX, (_epnum))
-#define MUSB_EP_OFFSET MUSB_INDEXED_OFFSET
-#endif
+#define musb_ep_select(_musb, _mbase, _epnum) do { \
+ if (_musb->ops->flags & MUSB_GLUE_EP_ADDR_INDEXED_MAPPING) \
+ musb_writeb((_mbase), MUSB_INDEX, (_epnum)); \
+ } while (0)
+#define MUSB_EP_OFFSET MUSB_OFFSET
/****************************** FUNCTIONS ********************************/
#define MUSB_HST_MODE(_musb)\
/******************************** TYPES *************************************/
#define MUSB_GLUE_TUSB_STYLE 0x0001
+#define MUSB_GLUE_EP_ADDR_FLAT_MAPPING 0x0002
+#define MUSB_GLUE_EP_ADDR_INDEXED_MAPPING 0x0004
/**
* struct musb_platform_ops - Operations passed to musb_core by HW glue layer
index 1af0ea9a4d063ac2b4146466ee3fde0cb70d1922..b222c08919d02859c8f2f073d17ec4f0911a3b60 100644 (file)
#define MUSB_FIFOSIZE 0x0F
#define MUSB_CONFIGDATA MUSB_FIFOSIZE /* Re-used for EP0 */
+#if 0
/* Offsets to endpoint registers in indexed model (using INDEX register) */
#define MUSB_INDEXED_OFFSET(_musb, _epnum, _offset) \
(0x10 + (_offset))
/* Offsets to endpoint registers in flat models */
#define MUSB_FLAT_OFFSET(_musb, _epnum, _offset) \
(0x100 + (0x10*(_epnum)) + (_offset))
+#endif
+
+#define MUSB_OFFSET(_musb, _epnum, _offset) \
+ ((_musb)->ops->flags & MUSB_GLUE_EP_ADDR_INDEXED_MAPPING ? \
+ (0x10 + (_offset)) : (0x100 + (0x10*(_epnum)) + (_offset)))
+
#include "tusb6010.h" /* Needed "only" for TUSB_EP0_CONF */
index c2813d71d911bc10abbfd259584cda0699b5973b..9c7ae912e7fdd2af7b3378e4a45cb81723da33ad 100644 (file)
static const struct musb_platform_ops omap2430_ops = {
.fifo_mode = 4,
+ .flags = MUSB_GLUE_EP_ADDR_FLAT_MAPPING,
.init = omap2430_musb_init,
.exit = omap2430_musb_exit,
index 88a35498260a4fa8688dfe1a60b958e04246bbbc..235c5b86f496504da45b65da1d328726ac996c40 100644 (file)
static const struct musb_platform_ops tusb_ops = {
.fifo_mode = 4,
- .flags = MUSB_GLUE_TUSB_STYLE,
+ .flags = MUSB_GLUE_TUSB_STYLE |
+ MUSB_GLUE_EP_ADDR_INDEXED_MAPPING,
.init = tusb_musb_init,
.exit = tusb_musb_exit,