Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp3471798ybv; Mon, 10 Feb 2020 00:13:37 -0800 (PST) X-Google-Smtp-Source: APXvYqyhk7n6GKfUleDAFvCYyXVkHEKOMhjHCzSEo/XA+OyEd4NDhS4763HV72xOrzcGZ2eppLja X-Received: by 2002:aca:af49:: with SMTP id y70mr135445oie.162.1581322416942; Mon, 10 Feb 2020 00:13:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581322416; cv=none; d=google.com; s=arc-20160816; b=s5EpZaZLpxb9tQst8LT0/iWY7uYvWNY3m3uwyjjNi7ABW03VrkJn0oJOLit6TQwrrD chJyIr6U6gfn1UE5uiHoU8paw7W4M02WB3j3PfzwLig1uJD8iK62IBLrFqMpt2CFoATP T/HVZZDfe3yeZyeEyObIYfHA8aWTgPc4v+4KZRQCIu5wJUrCrJe3ecEospGRDhmWoOsS IugPKvcI1vb7uXtp7B0l2fNPXTpRPfgrkLnonZ92Zse4sk+gpiDOalh8WkNj9GAx3wsE ROgHQ3MaA6VofEo9Bed0Mo2CKPOzvjF+YN1xOYP+ElEQBj931ifcfXU0YsLmvYm/gcGD FFJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from; bh=F9vQgzsrM3kGG03RRSDPm8098j3JFB30K8kaLkDTeHc=; b=latM77cZuaI4QUMhTWt0nWcEe/3OtcChFXA+Ovu9g7IkJnewuRB1POsQQRtODA7IST Cdc1MJpBGTQVgseGVBS6M0yhfsHuI9hRyrsFM8vEsxGCKQUL5yhOryCbEY2u10wR37ge 5n6tpirtxghuvOkA3+7HItn5TPxJl5WeWI+LDrF/Hc/D8txnKQ96G41OANbnwFMuVyAA r0yUIAY17gdKah4k4gHtdw1atNZ0hhd4DlYXuKu0RVDvzN3SUq6q1AK4608tfrdtGBN7 i60BO836FvdpZU5o9MxyLDXdYywjrsSa0z1WtFA95s512XlgovkKuDoxGcE6KHH5X6k9 RyPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=YZiedpkZ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z199si7694922oia.192.2020.02.10.00.13.25; Mon, 10 Feb 2020 00:13:36 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=YZiedpkZ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727781AbgBJIM6 (ORCPT + 99 others); Mon, 10 Feb 2020 03:12:58 -0500 Received: from hqnvemgate26.nvidia.com ([216.228.121.65]:18242 "EHLO hqnvemgate26.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727764AbgBJIM4 (ORCPT ); Mon, 10 Feb 2020 03:12:56 -0500 Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate26.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 10 Feb 2020 00:12:41 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 10 Feb 2020 00:12:56 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 10 Feb 2020 00:12:56 -0800 Received: from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 10 Feb 2020 08:12:55 +0000 Received: from hqnvemgw03.nvidia.com (10.124.88.68) by HQMAIL101.nvidia.com (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 10 Feb 2020 08:12:55 +0000 Received: from nkristam-ubuntu.nvidia.com (Not Verified[10.19.67.128]) by hqnvemgw03.nvidia.com with Trustwave SEG (v7,5,8,10121) id ; Mon, 10 Feb 2020 00:12:54 -0800 From: Nagarjuna Kristam To: , , , , , , CC: , , , , Nagarjuna Kristam Subject: [Patch V5 09/21] usb: gadget: tegra-xudc: Remove usb-role-switch support Date: Mon, 10 Feb 2020 13:41:35 +0530 Message-ID: <1581322307-11140-10-git-send-email-nkristam@nvidia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1581322307-11140-1-git-send-email-nkristam@nvidia.com> References: <1581322307-11140-1-git-send-email-nkristam@nvidia.com> X-NVConfidentiality: public MIME-Version: 1.0 Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1581322362; bh=F9vQgzsrM3kGG03RRSDPm8098j3JFB30K8kaLkDTeHc=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:X-NVConfidentiality:MIME-Version: Content-Type; b=YZiedpkZcKA69wJDQVtNn2rXNEmYFzH9sD92Gc6RoIxUTHIXcnafXG11TkuwchMTq rwPE0yPvyNnpW1YqtF3YQqwWdOpcwD61Jd9d5eVIGJ3lwD0aWwVnGk9Yr00Yj/4ZdD AGkyh7q/RxXSXn2/Sjgf7/bVWHRoIpAYVu+Exi6OI27uGsiD8uiR/sQvJPAuHl5XsM D+crI/qFhCO4vgx4GyoU93MbHmh37EDH9GmWshJ+khmC5mnwIfMwd3PhVRoOsWAYuD 30RYxdhSju1A/LipVBeCdy4MRTlregg9wvMtdsAstwbyauOIIkD70lArSLSHBByTWw kgrm4aAA3Hlzw== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Padctl driver will act as a central driver to receive USB role changes via usb-role-switch. This is updated to corresponding host, device drivers. Hence remove usb-role-switch from XUDC driver. Signed-off-by: Nagarjuna Kristam --- V5: - Removed select USB_ROLE_SWITCH from Kconfig. --- V4 - Updated device_mode variable with usb_role and remove role variable. - Removed debug log related to always on. --- V2-V3: - No changes in this version --- drivers/usb/gadget/udc/tegra-xudc.c | 58 +++++-------------------------------- 2 files changed, 7 insertions(+), 52 deletions(-) diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig index 797d6ac..ae70ce2 100644 --- a/drivers/usb/gadget/udc/Kconfig +++ b/drivers/usb/gadget/udc/Kconfig @@ -445,7 +445,6 @@ config USB_TEGRA_XUDC tristate "NVIDIA Tegra Superspeed USB 3.0 Device Controller" depends on ARCH_TEGRA || COMPILE_TEST depends on PHY_TEGRA_XUSB - select USB_ROLE_SWITCH help Enables NVIDIA Tegra USB 3.0 device mode controller driver. diff --git a/drivers/usb/gadget/udc/tegra-xudc.c b/drivers/usb/gadget/udc/tegra-xudc.c index 634c2c1..acecdcf 100644 --- a/drivers/usb/gadget/udc/tegra-xudc.c +++ b/drivers/usb/gadget/udc/tegra-xudc.c @@ -477,8 +477,7 @@ struct tegra_xudc { struct clk_bulk_data *clks; - enum usb_role device_mode; - struct usb_role_switch *usb_role_sw; + bool device_mode; struct work_struct usb_role_sw_work; struct phy *usb3_phy; @@ -609,8 +608,6 @@ static void tegra_xudc_device_mode_on(struct tegra_xudc *xudc) dev_dbg(xudc->dev, "device mode on\n"); tegra_xusb_padctl_set_vbus_override(xudc->padctl, true); - - xudc->device_mode = USB_ROLE_DEVICE; } static void tegra_xudc_device_mode_off(struct tegra_xudc *xudc) @@ -643,8 +640,6 @@ static void tegra_xudc_device_mode_off(struct tegra_xudc *xudc) xudc_writel(xudc, val, PORTSC); } - xudc->device_mode = USB_ROLE_NONE; - /* Wait for disconnect event. */ if (connected) wait_for_completion(&xudc->disconnect_complete); @@ -668,29 +663,10 @@ static void tegra_xudc_usb_role_sw_work(struct work_struct *work) struct tegra_xudc *xudc = container_of(work, struct tegra_xudc, usb_role_sw_work); - if (!xudc->usb_role_sw || - usb_role_switch_get_role(xudc->usb_role_sw) == USB_ROLE_DEVICE) + if (xudc->device_mode) tegra_xudc_device_mode_on(xudc); else tegra_xudc_device_mode_off(xudc); - -} - -static int tegra_xudc_usb_role_sw_set(struct device *dev, enum usb_role role) -{ - struct tegra_xudc *xudc = dev_get_drvdata(dev); - unsigned long flags; - - dev_dbg(dev, "%s role is %d\n", __func__, role); - - spin_lock_irqsave(&xudc->lock, flags); - - if (!xudc->suspended) - schedule_work(&xudc->usb_role_sw_work); - - spin_unlock_irqrestore(&xudc->lock, flags); - - return 0; } static void tegra_xudc_plc_reset_work(struct work_struct *work) @@ -729,8 +705,7 @@ static void tegra_xudc_port_reset_war_work(struct work_struct *work) spin_lock_irqsave(&xudc->lock, flags); - if ((xudc->device_mode == USB_ROLE_DEVICE) - && xudc->wait_for_sec_prc) { + if (xudc->device_mode && xudc->wait_for_sec_prc) { pls = (xudc_readl(xudc, PORTSC) & PORTSC_PLS_MASK) >> PORTSC_PLS_SHIFT; dev_dbg(xudc->dev, "pls = %x\n", pls); @@ -3457,7 +3432,6 @@ static int tegra_xudc_probe(struct platform_device *pdev) { struct tegra_xudc *xudc; struct resource *res; - struct usb_role_switch_desc role_sx_desc = { 0 }; unsigned int i; int err; @@ -3587,23 +3561,9 @@ static int tegra_xudc_probe(struct platform_device *pdev) INIT_DELAYED_WORK(&xudc->port_reset_war_work, tegra_xudc_port_reset_war_work); - if (of_property_read_bool(xudc->dev->of_node, "usb-role-switch")) { - role_sx_desc.set = tegra_xudc_usb_role_sw_set; - role_sx_desc.fwnode = dev_fwnode(xudc->dev); - - xudc->usb_role_sw = usb_role_switch_register(xudc->dev, - &role_sx_desc); - if (IS_ERR(xudc->usb_role_sw)) { - err = PTR_ERR(xudc->usb_role_sw); - dev_err(xudc->dev, "Failed to register USB role SW: %d", - err); - goto free_eps; - } - } else { - /* Set the mode as device mode and this keeps phy always ON */ - dev_info(xudc->dev, "Set usb role to device mode always"); - schedule_work(&xudc->usb_role_sw_work); - } + /* Set the mode as device mode and this keeps phy always ON */ + xudc->device_mode = true; + schedule_work(&xudc->usb_role_sw_work); pm_runtime_enable(&pdev->dev); @@ -3643,11 +3603,7 @@ static int tegra_xudc_remove(struct platform_device *pdev) pm_runtime_get_sync(xudc->dev); cancel_delayed_work(&xudc->plc_reset_work); - - if (xudc->usb_role_sw) { - usb_role_switch_unregister(xudc->usb_role_sw); - cancel_work_sync(&xudc->usb_role_sw_work); - } + cancel_work_sync(&xudc->usb_role_sw_work); usb_del_gadget_udc(&xudc->gadget); -- 2.7.4