Commit fb6f5529 authored by Ronen Shitrit's avatar Ronen Shitrit Committed by Nicolas Pitre

[ARM] Orion: add the option to support different ehci phy initialization

The Orion ehci driver serves the Orion, kirkwood and DD Soc families.
Since each of those integrate a different USB phy we should have the
ability to use few initialization sequences or to leave the boot loader
phy settings as is.
Signed-off-by: default avatarRonen Shitrit <rshitrit@marvell.com>
parent 061e41fd
...@@ -57,6 +57,7 @@ void __init kirkwood_map_io(void) ...@@ -57,6 +57,7 @@ void __init kirkwood_map_io(void)
****************************************************************************/ ****************************************************************************/
static struct orion_ehci_data kirkwood_ehci_data = { static struct orion_ehci_data kirkwood_ehci_data = {
.dram = &kirkwood_mbus_dram_info, .dram = &kirkwood_mbus_dram_info,
.phy_version = EHCI_PHY_NA,
}; };
static u64 ehci_dmamask = 0xffffffffUL; static u64 ehci_dmamask = 0xffffffffUL;
......
...@@ -167,6 +167,7 @@ void __init mv78xx0_map_io(void) ...@@ -167,6 +167,7 @@ void __init mv78xx0_map_io(void)
****************************************************************************/ ****************************************************************************/
static struct orion_ehci_data mv78xx0_ehci_data = { static struct orion_ehci_data mv78xx0_ehci_data = {
.dram = &mv78xx0_mbus_dram_info, .dram = &mv78xx0_mbus_dram_info,
.phy_version = EHCI_PHY_NA,
}; };
static u64 ehci_dmamask = 0xffffffffUL; static u64 ehci_dmamask = 0xffffffffUL;
......
...@@ -72,6 +72,7 @@ void __init orion5x_map_io(void) ...@@ -72,6 +72,7 @@ void __init orion5x_map_io(void)
****************************************************************************/ ****************************************************************************/
static struct orion_ehci_data orion5x_ehci_data = { static struct orion_ehci_data orion5x_ehci_data = {
.dram = &orion5x_mbus_dram_info, .dram = &orion5x_mbus_dram_info,
.phy_version = EHCI_PHY_ORION,
}; };
static u64 ehci_dmamask = 0xffffffffUL; static u64 ehci_dmamask = 0xffffffffUL;
......
...@@ -11,8 +11,16 @@ ...@@ -11,8 +11,16 @@
#include <linux/mbus.h> #include <linux/mbus.h>
enum orion_ehci_phy_ver {
EHCI_PHY_ORION,
EHCI_PHY_DD,
EHCI_PHY_KW,
EHCI_PHY_NA,
};
struct orion_ehci_data { struct orion_ehci_data {
struct mbus_dram_target_info *dram; struct mbus_dram_target_info *dram;
enum orion_ehci_phy_ver phy_version;
}; };
......
...@@ -33,8 +33,9 @@ ...@@ -33,8 +33,9 @@
/* /*
* Implement Orion USB controller specification guidelines * Implement Orion USB controller specification guidelines
*/ */
static void orion_usb_setup(struct usb_hcd *hcd) static void orion_usb_phy_v1_setup(struct usb_hcd *hcd)
{ {
/* The below GLs are according to the Orion Errata document */
/* /*
* Clear interrupt cause and mask * Clear interrupt cause and mask
*/ */
...@@ -258,9 +259,19 @@ static int __init ehci_orion_drv_probe(struct platform_device *pdev) ...@@ -258,9 +259,19 @@ static int __init ehci_orion_drv_probe(struct platform_device *pdev)
ehci_orion_conf_mbus_windows(hcd, pd->dram); ehci_orion_conf_mbus_windows(hcd, pd->dram);
/* /*
* setup Orion USB controller * setup Orion USB controller.
*/ */
orion_usb_setup(hcd); switch (pd->phy_version) {
case EHCI_PHY_NA: /* dont change USB phy settings */
break;
case EHCI_PHY_ORION:
orion_usb_phy_v1_setup(hcd);
break;
case EHCI_PHY_DD:
case EHCI_PHY_KW:
default:
printk(KERN_WARNING "Orion ehci -USB phy version isn't supported.\n");
}
err = usb_add_hcd(hcd, irq, IRQF_SHARED | IRQF_DISABLED); err = usb_add_hcd(hcd, irq, IRQF_SHARED | IRQF_DISABLED);
if (err) if (err)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment