arm: mvebu: add multiple usb-hostcontroller support for AXP
Subsystems (2)
PATCH v2 1/1 arm: mvebu: add multiple usb-hostcontroller support for AXP
This patch adds support for multiple hostcontrollers to the ehci-marvell driver and enables all 3 usb-hcs on the db-mv784mp-gp board.
It depends on the initial Armada XP usb support patch from Stefan.
---
Changes in v2:
- don't use the wrl accessor function
- use the correct hccr pointer
drivers/usb/host/ehci-marvell.c | 17 +++++++++-------- include/configs/db-mv784mp-gp.h | 1 + 2 files changed, 10 insertions(+), 8 deletions(-)
drivers/usb/host/ehci-marvell.c +9 -8
@@ -38,13 +38,14 @@ DECLARE_GLOBAL_DATA_PTR;#define MVUSB0_BASE \ (mvebu_soc_family() == MVEBU_SOC_A38X ? \ MVEBU_USB20_BASE : MVEBU_AXP_USB_BASE) +#define MVUSB_BASE (port) MVUSB0_BASE + ((port) << 12)/* * Once all the older Marvell SoC's (Orion, Kirkwood) are converted * to the common mvebu archticture including the mbus setup, this * will be the only function needed to configure the access windows */ -static void usb_brg_adrdec_setup (void ) +static void usb_brg_adrdec_setup (int index) {const struct mbus_dram_target_info *dram;int i;
@@ -52,8 +53,8 @@ static void usb_brg_adrdec_setup(void) dram =mvebu_mbus_dram_info ();for (i =0 ; i <4 ; i++) { -writel (0 ,MVUSB0_BASE +USB_WINDOW_CTRL (i)); -writel (0 ,MVUSB0_BASE +USB_WINDOW_BASE (i)); +writel (0 ,MVUSB_BASE (index) +USB_WINDOW_CTRL (i)); +writel (0 ,MVUSB_BASE (index) +USB_WINDOW_BASE (i)); }for (i =0 ; i < dram->num_cs; i++) {
@@ -62,14 +63,14 @@ static void usb_brg_adrdec_setup(void)/* Write size, attributes and target id to control register */ writel (((cs->size -1 ) &0xffff0000 ) | (cs->mbus_attr <<8 ) | (dram->mbus_dram_target_id <<4 ) |1 , -MVUSB0_BASE +USB_WINDOW_CTRL (i)); +MVUSB_BASE (index) +USB_WINDOW_CTRL (i));/* Write base address to base register */ - writel(cs->base, MVUSB0_BASE + USB_WINDOW_BASE(i)); + writel(cs->base, MVUSB_BASE(index) + USB_WINDOW_BASE(i)); } }#else -static void usb_brg_adrdec_setup (void ) +static void usb_brg_adrdec_setup (int index) {int i;u32 size, base, attrib;
@@ -118,9 +119,9 @@ static void usb_brg_adrdec_setup(void)int ehci_hcd_init (int index,enum usb_init_type init,struct ehci_hccr **hccr,struct ehci_hcor **hcor) { -usb_brg_adrdec_setup (); +usb_brg_adrdec_setup (index); - *hccr = (struct ehci_hccr *)(MVUSB0_BASE +0x100 ); + *hccr = (struct ehci_hccr *)(MVUSB_BASE (index) +0x100 ); *hcor = (struct ehci_hcor *)((uint32_t ) *hccr +HC_LENGTH (ehci_readl (&(*hccr)->cr_capbase)));
include/configs/db-mv784mp-gp.h +1 -0
@@ -47,6 +47,7 @@#define CONFIG_USB_STORAGE #define CONFIG_USB_EHCI_MARVELL #define CONFIG_EHCI_IS_TDI +#define CONFIG_USB_MAX_CONTROLLER_COUNT 3/* SPI NOR flash default params, used by sf commands */ #define CONFIG_SF_DEFAULT_SPEED 1000000
--
2.3.6
PATCH v2 1/1 arm: mvebu: add multiple usb-hostcontroller support for AXP
Sry, forgot the cc again.
Anton
PATCH v2 1/1 arm: mvebu: add multiple usb-hostcontroller support for AXP
Quoted 3 lines · Anton Schubert
Sry, forgot the cc again.
Anton
The patch looks OK, but it doesn't apply on top of u-boot-usb/master . Can you please fix it up ?
Best regards,
Marek Vasut
PATCH v2 1/1 arm: mvebu: add multiple usb-hostcontroller support for AXP
Quoted 7 lines · Marek Vasut
Quoted 3 lines · Anton Schubert
Sry, forgot the cc again.
Anton
The patch looks OK, but it doesn't apply on top of u-boot-usb/master . Can you please fix it up ?
Perhaps its easiest if we wait for all the queued MVEBU patches to be applied first. Then this should go in easy enough.
Thanks,
Stefan
PATCH v2 1/1 arm: mvebu: add multiple usb-hostcontroller support for AXP
Quoted 11 lines · Stefan Roese
Quoted 7 lines · Marek Vasut
Quoted 3 lines · Anton Schubert
Sry, forgot the cc again.
Anton
The patch looks OK, but it doesn't apply on top of u-boot-usb/master . Can you please fix it up ?
Perhaps its easiest if we wait for all the queued MVEBU patches to be applied first. Then this should go in easy enough.
Fine :)
Best regards,
Marek Vasut