From patchwork Tue Sep 11 15:06:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 10595801 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 616AB13B8 for ; Tue, 11 Sep 2018 15:06:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 524A4296BA for ; Tue, 11 Sep 2018 15:06:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 45C1E296BF; Tue, 11 Sep 2018 15:06:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BFCE4296BF for ; Tue, 11 Sep 2018 15:06:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727413AbeIKUFt (ORCPT ); Tue, 11 Sep 2018 16:05:49 -0400 Received: from perceval.ideasonboard.com ([213.167.242.64]:39744 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726909AbeIKUFs (ORCPT ); Tue, 11 Sep 2018 16:05:48 -0400 Received: from avalon.bb.dnainternet.fi (dfj612ybrt5fhg77mgycy-3.rev.dnainternet.fi [IPv6:2001:14ba:21f5:5b00:2e86:4862:ef6a:2804]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8AD721A99; Tue, 11 Sep 2018 17:06:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1536678363; bh=Y/cnrJdQeA4qMNW53i4Mz7JBP2oarNjmx9FnB0kQ7yo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QLNa40P7wOiJgWzrI/TdqH00ER/FfVPIKU2ZRrW2hI6EQ5f9T9vpUrgHYTwuTysYN MikZfpi2nBT3s6IH6l7fc8HnRg0WiVy4Uh5a1ies6osJStF5YI5oTr/IpBPr0oNjyk 3Oyv0cao+CXZ/cju7F0zCf8ijZ80/Yy1giVULJvs= From: Laurent Pinchart To: linux-usb@vger.kernel.org, linux-omap@vger.kernel.org Cc: Tony Lindgren , Roger Quadros , Lee Jones , Tomi Valkeinen Subject: [PATCH 3/3] mfd: omap-usb-host: Drop support for non-DT probe Date: Tue, 11 Sep 2018 18:06:10 +0300 Message-Id: <20180911150610.27510-4-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20180911150610.27510-1-laurent.pinchart@ideasonboard.com> References: <20180911150610.27510-1-laurent.pinchart@ideasonboard.com> Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Now that all platforms using OMAP USB host devices have been converted to DT, drop support for legacy non-DT probe from the driver. Signed-off-by: Laurent Pinchart Acked-by: Roger Quadros --- drivers/mfd/omap-usb-host.c | 153 +++------------------------------ include/linux/platform_data/usb-omap.h | 4 - 2 files changed, 13 insertions(+), 144 deletions(-) diff --git a/drivers/mfd/omap-usb-host.c b/drivers/mfd/omap-usb-host.c index b731026541f5..ce28e0fda55e 100644 --- a/drivers/mfd/omap-usb-host.c +++ b/drivers/mfd/omap-usb-host.c @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -35,8 +34,6 @@ #include "omap-usb.h" #define USBHS_DRIVER_NAME "usbhs_omap" -#define OMAP_EHCI_DEVICE "ehci-omap" -#define OMAP_OHCI_DEVICE "ohci-omap3" /* OMAP USBHOST Register addresses */ @@ -115,7 +112,6 @@ struct usbhs_hcd_omap { /*-------------------------------------------------------------------------*/ static const char usbhs_driver_name[] = USBHS_DRIVER_NAME; -static u64 usbhs_dmamask = DMA_BIT_MASK(32); /*-------------------------------------------------------------------------*/ @@ -153,119 +149,6 @@ static const char * const port_modes[] = { [OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM] = "ohci-tll-2pin-dpdm", }; -static struct platform_device *omap_usbhs_alloc_child(const char *name, - struct resource *res, int num_resources, void *pdata, - size_t pdata_size, struct device *dev) -{ - struct platform_device *child; - int ret; - - child = platform_device_alloc(name, 0); - - if (!child) { - dev_err(dev, "platform_device_alloc %s failed\n", name); - goto err_end; - } - - ret = platform_device_add_resources(child, res, num_resources); - if (ret) { - dev_err(dev, "platform_device_add_resources failed\n"); - goto err_alloc; - } - - ret = platform_device_add_data(child, pdata, pdata_size); - if (ret) { - dev_err(dev, "platform_device_add_data failed\n"); - goto err_alloc; - } - - child->dev.dma_mask = &usbhs_dmamask; - dma_set_coherent_mask(&child->dev, DMA_BIT_MASK(32)); - child->dev.parent = dev; - - ret = platform_device_add(child); - if (ret) { - dev_err(dev, "platform_device_add failed\n"); - goto err_alloc; - } - - return child; - -err_alloc: - platform_device_put(child); - -err_end: - return NULL; -} - -static int omap_usbhs_alloc_children(struct platform_device *pdev) -{ - struct device *dev = &pdev->dev; - struct usbhs_omap_platform_data *pdata = dev_get_platdata(dev); - struct platform_device *ehci; - struct platform_device *ohci; - struct resource *res; - struct resource resources[2]; - int ret; - - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ehci"); - if (!res) { - dev_err(dev, "EHCI get resource IORESOURCE_MEM failed\n"); - ret = -ENODEV; - goto err_end; - } - resources[0] = *res; - - res = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "ehci-irq"); - if (!res) { - dev_err(dev, " EHCI get resource IORESOURCE_IRQ failed\n"); - ret = -ENODEV; - goto err_end; - } - resources[1] = *res; - - ehci = omap_usbhs_alloc_child(OMAP_EHCI_DEVICE, resources, 2, pdata, - sizeof(*pdata), dev); - - if (!ehci) { - dev_err(dev, "omap_usbhs_alloc_child failed\n"); - ret = -ENOMEM; - goto err_end; - } - - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ohci"); - if (!res) { - dev_err(dev, "OHCI get resource IORESOURCE_MEM failed\n"); - ret = -ENODEV; - goto err_ehci; - } - resources[0] = *res; - - res = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "ohci-irq"); - if (!res) { - dev_err(dev, "OHCI get resource IORESOURCE_IRQ failed\n"); - ret = -ENODEV; - goto err_ehci; - } - resources[1] = *res; - - ohci = omap_usbhs_alloc_child(OMAP_OHCI_DEVICE, resources, 2, pdata, - sizeof(*pdata), dev); - if (!ohci) { - dev_err(dev, "omap_usbhs_alloc_child failed\n"); - ret = -ENOMEM; - goto err_ehci; - } - - return 0; - -err_ehci: - platform_device_unregister(ehci); - -err_end: - return ret; -} - static bool is_ohci_port(enum usbhs_omap_port_mode pmode) { switch (pmode) { @@ -541,31 +424,28 @@ static const struct of_device_id usbhs_child_match_table[] = { static int usbhs_omap_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; - struct usbhs_omap_platform_data *pdata = dev_get_platdata(dev); + struct usbhs_omap_platform_data *pdata; struct usbhs_hcd_omap *omap; struct resource *res; int ret = 0; int i; bool need_logic_fck; - dev_info(&pdev->dev, "%s\n", __func__); - if (dev->of_node) { - /* For DT boot we populate platform data from OF node */ - pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); - if (!pdata) - return -ENOMEM; + /* Populate platform data from OF node */ + if (!dev->of_node) { + dev_err(dev, "Missing OF node\n"); + return -ENODEV; + } - ret = usbhs_omap_get_dt_pdata(dev, pdata); - if (ret) - return ret; + pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return -ENOMEM; - dev->platform_data = pdata; - } + ret = usbhs_omap_get_dt_pdata(dev, pdata); + if (ret) + return ret; - if (!pdata) { - dev_err(dev, "Missing platform data\n"); - return -ENODEV; - } + dev->platform_data = pdata; if (pdata->nports > OMAP3_HS_USB_PORTS) { dev_info(dev, "Too many num_ports <%d> in platform_data. Max %d\n", @@ -798,13 +678,6 @@ static int usbhs_omap_probe(struct platform_device *pdev) goto err_mem; } - } else { - ret = omap_usbhs_alloc_children(pdev); - if (ret) { - dev_err(dev, "omap_usbhs_alloc_children failed: %d\n", - ret); - goto err_mem; - } } return 0; diff --git a/include/linux/platform_data/usb-omap.h b/include/linux/platform_data/usb-omap.h index fa579b4c666b..c051da514dc5 100644 --- a/include/linux/platform_data/usb-omap.h +++ b/include/linux/platform_data/usb-omap.h @@ -38,10 +38,6 @@ enum usbhs_omap_port_mode { OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM }; -struct usbtll_omap_platform_data { - enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS]; -}; - struct ehci_hcd_omap_platform_data { enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS]; int reset_gpio_port[OMAP3_HS_USB_PORTS];