[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:
committed by
Nicolas Pitre
parent
061e41fdb5
commit
fb6f552930
@ -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)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
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)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
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 @@
|
|||||||
|
|
||||||
#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 @@
|
|||||||
/*
|
/*
|
||||||
* 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)
|
|||||||
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)
|
||||||
|
Reference in New Issue
Block a user