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

Commit c2e935a7 authored by Richard Zhao's avatar Richard Zhao Committed by Greg Kroah-Hartman
Browse files

USB: move transceiver from ehci_hcd and ohci_hcd to hcd and rename it as phy



 - to decrease redundant since both ehci_hcd and ohci_hcd have the same variable
 - it helps access phy in usb core code
 - phy is more meaningful than transceiver

Signed-off-by: default avatarRichard Zhao <richard.zhao@freescale.com>
Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 45277159
Loading
Loading
Loading
Loading
+10 −11
Original line number Original line Diff line number Diff line
@@ -142,19 +142,19 @@ static int usb_hcd_fsl_probe(const struct hc_driver *driver,
	if (pdata->operating_mode == FSL_USB2_DR_OTG) {
	if (pdata->operating_mode == FSL_USB2_DR_OTG) {
		struct ehci_hcd *ehci = hcd_to_ehci(hcd);
		struct ehci_hcd *ehci = hcd_to_ehci(hcd);


		ehci->transceiver = usb_get_transceiver();
		hcd->phy = usb_get_transceiver();
		dev_dbg(&pdev->dev, "hcd=0x%p  ehci=0x%p, transceiver=0x%p\n",
		dev_dbg(&pdev->dev, "hcd=0x%p  ehci=0x%p, phy=0x%p\n",
			hcd, ehci, ehci->transceiver);
			hcd, ehci, hcd->phy);


		if (ehci->transceiver) {
		if (hcd->phy) {
			retval = otg_set_host(ehci->transceiver->otg,
			retval = otg_set_host(hcd->phy->otg,
					      &ehci_to_hcd(ehci)->self);
					      &ehci_to_hcd(ehci)->self);
			if (retval) {
			if (retval) {
				usb_put_transceiver(ehci->transceiver);
				usb_put_transceiver(hcd->phy);
				goto err4;
				goto err4;
			}
			}
		} else {
		} else {
			dev_err(&pdev->dev, "can't find transceiver\n");
			dev_err(&pdev->dev, "can't find phy\n");
			retval = -ENODEV;
			retval = -ENODEV;
			goto err4;
			goto err4;
		}
		}
@@ -190,11 +190,10 @@ static void usb_hcd_fsl_remove(struct usb_hcd *hcd,
			       struct platform_device *pdev)
			       struct platform_device *pdev)
{
{
	struct fsl_usb2_platform_data *pdata = pdev->dev.platform_data;
	struct fsl_usb2_platform_data *pdata = pdev->dev.platform_data;
	struct ehci_hcd *ehci = hcd_to_ehci(hcd);


	if (ehci->transceiver) {
	if (hcd->phy) {
		otg_set_host(ehci->transceiver->otg, NULL);
		otg_set_host(hcd->phy->otg, NULL);
		usb_put_transceiver(ehci->transceiver);
		usb_put_transceiver(hcd->phy);
	}
	}


	usb_remove_hcd(hcd);
	usb_remove_hcd(hcd);
+1 −1
Original line number Original line Diff line number Diff line
@@ -724,7 +724,7 @@ static int ehci_hub_control (
#ifdef CONFIG_USB_OTG
#ifdef CONFIG_USB_OTG
			if ((hcd->self.otg_port == (wIndex + 1))
			if ((hcd->self.otg_port == (wIndex + 1))
			    && hcd->self.b_hnp_enable) {
			    && hcd->self.b_hnp_enable) {
				otg_start_hnp(ehci->transceiver->otg);
				otg_start_hnp(hcd->phy->otg);
				break;
				break;
			}
			}
#endif
#endif
+0 −4
Original line number Original line Diff line number Diff line
@@ -175,10 +175,6 @@ struct ehci_hcd { /* one per controller */
#ifdef DEBUG
#ifdef DEBUG
	struct dentry		*debug_dir;
	struct dentry		*debug_dir;
#endif
#endif
	/*
	 * OTG controllers and transceivers need software interaction
	 */
	struct usb_phy	*transceiver;
};
};


/* convert between an HCD pointer and the corresponding EHCI_HCD */
/* convert between an HCD pointer and the corresponding EHCI_HCD */
+14 −13
Original line number Original line Diff line number Diff line
@@ -167,14 +167,15 @@ static int omap_1510_local_bus_init(void)


static void start_hnp(struct ohci_hcd *ohci)
static void start_hnp(struct ohci_hcd *ohci)
{
{
	const unsigned	port = ohci_to_hcd(ohci)->self.otg_port - 1;
	struct usb_hcd *hcd = ohci_to_hcd(ohci);
	const unsigned	port = hcd->self.otg_port - 1;
	unsigned long	flags;
	unsigned long	flags;
	u32 l;
	u32 l;


	otg_start_hnp(ohci->transceiver->otg);
	otg_start_hnp(hcd->phy->otg);


	local_irq_save(flags);
	local_irq_save(flags);
	ohci->transceiver->state = OTG_STATE_A_SUSPEND;
	hcd->phy->state = OTG_STATE_A_SUSPEND;
	writel (RH_PS_PSS, &ohci->regs->roothub.portstatus [port]);
	writel (RH_PS_PSS, &ohci->regs->roothub.portstatus [port]);
	l = omap_readl(OTG_CTRL);
	l = omap_readl(OTG_CTRL);
	l &= ~OTG_A_BUSREQ;
	l &= ~OTG_A_BUSREQ;
@@ -211,18 +212,18 @@ static int ohci_omap_init(struct usb_hcd *hcd)


#ifdef	CONFIG_USB_OTG
#ifdef	CONFIG_USB_OTG
	if (need_transceiver) {
	if (need_transceiver) {
		ohci->transceiver = usb_get_transceiver();
		hcd->phy = usb_get_transceiver();
		if (ohci->transceiver) {
		if (hcd->phy) {
			int	status = otg_set_host(ohci->transceiver->otg,
			int	status = otg_set_host(hcd->phy->otg,
						&ohci_to_hcd(ohci)->self);
						&ohci_to_hcd(ohci)->self);
			dev_dbg(hcd->self.controller, "init %s transceiver, status %d\n",
			dev_dbg(hcd->self.controller, "init %s phy, status %d\n",
					ohci->transceiver->label, status);
					hcd->phy->label, status);
			if (status) {
			if (status) {
				usb_put_transceiver(ohci->transceiver);
				usb_put_transceiver(hcd->phy);
				return status;
				return status;
			}
			}
		} else {
		} else {
			dev_err(hcd->self.controller, "can't find transceiver\n");
			dev_err(hcd->self.controller, "can't find phy\n");
			return -ENODEV;
			return -ENODEV;
		}
		}
		ohci->start_hnp = start_hnp;
		ohci->start_hnp = start_hnp;
@@ -403,9 +404,9 @@ usb_hcd_omap_remove (struct usb_hcd *hcd, struct platform_device *pdev)
	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);
	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);


	usb_remove_hcd(hcd);
	usb_remove_hcd(hcd);
	if (ohci->transceiver) {
	if (hcd->phy) {
		(void) otg_set_host(ohci->transceiver->otg, 0);
		(void) otg_set_host(hcd->phy->otg, 0);
		usb_put_transceiver(ohci->transceiver);
		usb_put_transceiver(hcd->phy);
	}
	}
	if (machine_is_omap_osk())
	if (machine_is_omap_osk())
		gpio_free(9);
		gpio_free(9);
+0 −5
Original line number Original line Diff line number Diff line
@@ -372,11 +372,6 @@ struct ohci_hcd {
	struct ed		*ed_controltail;	/* last in ctrl list */
	struct ed		*ed_controltail;	/* last in ctrl list */
	struct ed		*periodic [NUM_INTS];	/* shadow int_table */
	struct ed		*periodic [NUM_INTS];	/* shadow int_table */


	/*
	 * OTG controllers and transceivers need software interaction;
	 * other external transceivers should be software-transparent
	 */
	struct usb_phy	*transceiver;
	void (*start_hnp)(struct ohci_hcd *ohci);
	void (*start_hnp)(struct ohci_hcd *ohci);


	/*
	/*
Loading