Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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;
+8 −0
Original line number Diff line number Diff line
@@ -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;
};


+14 −3
Original line number Diff line number Diff line
@@ -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)