mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
[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: Ronen Shitrit <rshitrit@marvell.com>
This commit is contained in:
parent
061e41fdb5
commit
fb6f552930
@ -57,6 +57,7 @@ void __init kirkwood_map_io(void)
|
||||
****************************************************************************/
|
||||
static struct orion_ehci_data kirkwood_ehci_data = {
|
||||
.dram = &kirkwood_mbus_dram_info,
|
||||
.phy_version = EHCI_PHY_NA,
|
||||
};
|
||||
|
||||
static u64 ehci_dmamask = 0xffffffffUL;
|
||||
|
@ -167,6 +167,7 @@ void __init mv78xx0_map_io(void)
|
||||
****************************************************************************/
|
||||
static struct orion_ehci_data mv78xx0_ehci_data = {
|
||||
.dram = &mv78xx0_mbus_dram_info,
|
||||
.phy_version = EHCI_PHY_NA,
|
||||
};
|
||||
|
||||
static u64 ehci_dmamask = 0xffffffffUL;
|
||||
|
@ -72,6 +72,7 @@ void __init orion5x_map_io(void)
|
||||
****************************************************************************/
|
||||
static struct orion_ehci_data orion5x_ehci_data = {
|
||||
.dram = &orion5x_mbus_dram_info,
|
||||
.phy_version = EHCI_PHY_ORION,
|
||||
};
|
||||
|
||||
static u64 ehci_dmamask = 0xffffffffUL;
|
||||
|
@ -11,8 +11,16 @@
|
||||
|
||||
#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 mbus_dram_target_info *dram;
|
||||
enum orion_ehci_phy_ver phy_version;
|
||||
};
|
||||
|
||||
|
||||
|
@ -33,8 +33,9 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
@ -258,9 +259,19 @@ static int __init ehci_orion_drv_probe(struct platform_device *pdev)
|
||||
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);
|
||||
if (err)
|
||||
|
Loading…
Reference in New Issue
Block a user