From patchwork Tue Sep 24 13:11:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 1166586 X-Patchwork-Delegate: matthias.bgg@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="QYrjr5ps"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46d1q905c0z9sPD for ; Tue, 24 Sep 2019 23:13:56 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id AADCBC21DFB; Tue, 24 Sep 2019 13:12:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id CAF20C21E53; Tue, 24 Sep 2019 13:11:27 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 73BFFC21D56; Tue, 24 Sep 2019 13:11:24 +0000 (UTC) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by lists.denx.de (Postfix) with ESMTPS id 43972C21DB6 for ; Tue, 24 Sep 2019 13:11:23 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20190924131122euoutp029bb7cbd47f36c937fea7cfe7f413c7e0~HYfEBt7EI0931009310euoutp020 for ; Tue, 24 Sep 2019 13:11:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20190924131122euoutp029bb7cbd47f36c937fea7cfe7f413c7e0~HYfEBt7EI0931009310euoutp020 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1569330682; bh=CwwafpuhTZS6ffS0Qs2YmyoWKnhPg+/Y3yZNpaGiDxA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QYrjr5psvsue7hLZCuArEiqPgHPLBll4YGtovu1SREofqE2lGDgZolYGPvrlyJskj vRCnj84R74Yt567jC3usc1Y7yboKp5NjToTGjzgzycZ+MVI283gESWmNB8mwkKCptR zSxqjtdFTQuzubzyORdDPViKX6bGqudGJiCBMFSQ= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20190924131122eucas1p1c5070671c63da8c93aabee5cefc93993~HYfDvkTz00941409414eucas1p19; Tue, 24 Sep 2019 13:11:22 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 90.3B.04309.AF51A8D5; Tue, 24 Sep 2019 14:11:22 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20190924131122eucas1p2eb06104a38f74d7603ba48a5e5b81069~HYfDU2a962234522345eucas1p2x; Tue, 24 Sep 2019 13:11:22 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20190924131122eusmtrp2271f67076cc86a2e957501b0ce65b0be~HYfDUOGur1458114581eusmtrp2N; Tue, 24 Sep 2019 13:11:22 +0000 (GMT) X-AuditID: cbfec7f4-afbff700000010d5-b5-5d8a15fa6e8d Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 03.5D.04166.AF51A8D5; Tue, 24 Sep 2019 14:11:22 +0100 (BST) Received: from AMDC2765.digital.local (unknown [106.120.51.73]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190924131121eusmtip224767a3fa859051b333083143c38d111~HYfC5ZJBt0368303683eusmtip2Y; Tue, 24 Sep 2019 13:11:21 +0000 (GMT) From: Marek Szyprowski To: u-boot@lists.denx.de Date: Tue, 24 Sep 2019 15:11:10 +0200 Message-Id: <20190924131111.1691-6-m.szyprowski@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190924131111.1691-1-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpkleLIzCtJLcpLzFFi42LZduznOd1fol2xBhcXKVlsnLGe1eLGrzZW i+fvLjNZrD1yl91iweQnrBYb5r9lsZgx+SWbxdu9newOHB7zZp1g8Th7ZwejR9+WVYwe67dc ZfHY9MojgDWKyyYlNSezLLVI3y6BK2Pv9wb2glkKFSs7FjA1ML6V7mLk4JAQMJF4cFeoi5GL Q0hgBaPE/6cT2CCcL4wSq8/egnI+M0o8e3wCyOEE6zjdPZ0FIrGcUWLV528scC3Lp4E4nBxs AoYSXW+7wDpEBCQkfvVfZQQpYhbYziTR3nodrEhYIESiZV4TmM0ioCox9+pHVpCjeAVsJFpf O0Fsk5dYveEAM4jNKWArcfzyIVaQORICv9kkzj+/zQpR5CIx50QP1HnCEq+Ob2GHsGUk/u+c zwTR0Mwo8fDcWnYIp4dR4nLTDEaIKmuJw8cvgm1mFtCUWL9LHyLsKPGxbRobJJT4JG68FQQJ MwOZk7ZNZ4YI80p0tAlBVKtJzDq+Dm7twQuXmCFsD4m1M3dCg3ECo8T0UxfYJzDKz0JYtoCR cRWjeGppcW56arFRXmq5XnFibnFpXrpecn7uJkZgwjj97/iXHYy7/iQdYhTgYFTi4XVg7YoV Yk0sK67MPcQowcGsJMK7SastVog3JbGyKrUoP76oNCe1+BCjNAeLkjhvNcODaCGB9MSS1OzU 1ILUIpgsEwenVANjpJ16v7OQZmjq9+p+ue1N635eX5f4b8635gpH1ilMAbZBlV6vr3XeP9V8 Rum6tp/EV80Xb6au3bVDsMtBfM9BN5/F3fxt1tlsosb2fDPKmKef+7XlTPbfs7sKvr7Q3u4f p+G6+dLssohgxjW/hEQ/fJRYOn3vdK9tp9J2LlUrjUhT3sku9j9LiaU4I9FQi7moOBEAUGqA 0BQDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrELMWRmVeSWpSXmKPExsVy+t/xe7q/RLtiDe59YLfYOGM9q8WNX22s Fs/fXWayWHvkLrvFgslPWC02zH/LYjFj8ks2i7d7O9kdODzmzTrB4nH2zg5Gj74tqxg91m+5 yuKx6ZVHAGuUnk1RfmlJqkJGfnGJrVK0oYWRnqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqR vl2CXsbe7w3sBbMUKlZ2LGBqYHwr3cXIySEhYCJxuns6SxcjF4eQwFJGiekzf7JBJGQkTk5r YIWwhSX+XOtigyj6xChx9s4URpAEm4ChRNfbLrAGEQEJiV/9VxlBipgFdjNJXF91DKxIWCBI 4lLPBmYQm0VAVWLu1Y9AUzk4eAVsJFpfO0EskJdYveEAWAmngK3E8cuHwBYLAZXMPvKabQIj 3wJGhlWMIqmlxbnpucWGesWJucWleel6yfm5mxiB4bvt2M/NOxgvbQw+xCjAwajEw+vA2hUr xJpYVlyZe4hRgoNZSYR3k1ZbrBBvSmJlVWpRfnxRaU5q8SFGU6CbJjJLiSbnA2MrryTe0NTQ 3MLS0NzY3NjMQkmct0PgYIyQQHpiSWp2ampBahFMHxMHp1QDozfL7V62/z2L//qdc+JL7liy Y9niP+qmyzW3FO+U9Z9sbXuTf3nPjTP1U0T/9itId/8U8zy1YKXr4711MZ9NT91YeOajnef7 bYlNHMGu/S9eTtN+P+0OZ+8133laR653dXCXKtyZxbVs4pPslZtfLNtw1+Ia90+RnW+WHzwy 4cLBNwVbbFRdWM8rsRRnJBpqMRcVJwIARtzhYXUCAAA= X-CMS-MailID: 20190924131122eucas1p2eb06104a38f74d7603ba48a5e5b81069 X-Msg-Generator: CA X-RootMTR: 20190924131122eucas1p2eb06104a38f74d7603ba48a5e5b81069 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20190924131122eucas1p2eb06104a38f74d7603ba48a5e5b81069 References: <20190924131111.1691-1-m.szyprowski@samsung.com> Cc: Matthias Brugger , Bartlomiej Zolnierkiewicz , Marek Szyprowski Subject: [U-Boot] [PATCH v2 5/6] usb: dwc2_udc_otg: add bcm2835 SoC (Raspberry Pi4) support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Broadcom 2835 SoC requires special conversion of physical memory addresses for DMA purpose, so add needed wrappers to dwc2_udc_otg driver. Also extend the list of compatible devices with 'brcm,bcm2835-usb' entry. This allows to use USB gadget drivers (i.e. DFU) on Raspberry Pi4 boards. Signed-off-by: Marek Szyprowski Reviewed-by: Lukasz Majewski --- drivers/usb/gadget/dwc2_udc_otg.c | 2 ++ drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c index 35f4147840..49f342eb21 100644 --- a/drivers/usb/gadget/dwc2_udc_otg.c +++ b/drivers/usb/gadget/dwc2_udc_otg.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -1213,6 +1214,7 @@ static int dwc2_udc_otg_remove(struct udevice *dev) static const struct udevice_id dwc2_udc_otg_ids[] = { { .compatible = "snps,dwc2" }, + { .compatible = "brcm,bcm2835-usb" }, { .compatible = "st,stm32mp1-hsotg", .data = (ulong)dwc2_set_stm32mp1_hsotg_params }, {}, diff --git a/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c index 7eb632d3b1..5e695b4ff2 100644 --- a/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c +++ b/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c @@ -28,7 +28,7 @@ static inline void dwc2_udc_ep0_zlp(struct dwc2_udc *dev) { u32 ep_ctrl; - writel(usb_ctrl_dma_addr, ®->in_endp[EP0_CON].diepdma); + writel(phys_to_bus((unsigned long)usb_ctrl_dma_addr), ®->in_endp[EP0_CON].diepdma); writel(DIEPT_SIZ_PKT_CNT(1), ®->in_endp[EP0_CON].dieptsiz); ep_ctrl = readl(®->in_endp[EP0_CON].diepctl); @@ -49,7 +49,7 @@ static void dwc2_udc_pre_setup(void) writel(DOEPT_SIZ_PKT_CNT(1) | sizeof(struct usb_ctrlrequest), ®->out_endp[EP0_CON].doeptsiz); - writel(usb_ctrl_dma_addr, ®->out_endp[EP0_CON].doepdma); + writel(phys_to_bus((unsigned long)usb_ctrl_dma_addr), ®->out_endp[EP0_CON].doepdma); ep_ctrl = readl(®->out_endp[EP0_CON].doepctl); writel(ep_ctrl|DEPCTL_EPENA, ®->out_endp[EP0_CON].doepctl); @@ -75,7 +75,7 @@ static inline void dwc2_ep0_complete_out(void) writel(DOEPT_SIZ_PKT_CNT(1) | sizeof(struct usb_ctrlrequest), ®->out_endp[EP0_CON].doeptsiz); - writel(usb_ctrl_dma_addr, ®->out_endp[EP0_CON].doepdma); + writel(phys_to_bus((unsigned long)usb_ctrl_dma_addr), ®->out_endp[EP0_CON].doepdma); ep_ctrl = readl(®->out_endp[EP0_CON].doepctl); writel(ep_ctrl|DEPCTL_EPENA|DEPCTL_CNAK, @@ -113,7 +113,7 @@ static int setdma_rx(struct dwc2_ep *ep, struct dwc2_request *req) (unsigned long) ep->dma_buf + ROUND(ep->len, CONFIG_SYS_CACHELINE_SIZE)); - writel((unsigned long) ep->dma_buf, ®->out_endp[ep_num].doepdma); + writel(phys_to_bus((unsigned long)ep->dma_buf), ®->out_endp[ep_num].doepdma); writel(DOEPT_SIZ_PKT_CNT(pktcnt) | DOEPT_SIZ_XFER_SIZE(length), ®->out_endp[ep_num].doeptsiz); writel(DEPCTL_EPENA|DEPCTL_CNAK|ctrl, ®->out_endp[ep_num].doepctl); @@ -161,7 +161,7 @@ static int setdma_tx(struct dwc2_ep *ep, struct dwc2_request *req) while (readl(®->grstctl) & TX_FIFO_FLUSH) ; - writel((unsigned long) ep->dma_buf, ®->in_endp[ep_num].diepdma); + writel(phys_to_bus((unsigned long)ep->dma_buf), ®->in_endp[ep_num].diepdma); writel(DIEPT_SIZ_PKT_CNT(pktcnt) | DIEPT_SIZ_XFER_SIZE(length), ®->in_endp[ep_num].dieptsiz); @@ -921,7 +921,7 @@ static int dwc2_udc_get_status(struct dwc2_udc *dev, (unsigned long) usb_ctrl + ROUND(sizeof(g_status), CONFIG_SYS_CACHELINE_SIZE)); - writel(usb_ctrl_dma_addr, ®->in_endp[EP0_CON].diepdma); + writel(phys_to_bus(usb_ctrl_dma_addr), ®->in_endp[EP0_CON].diepdma); writel(DIEPT_SIZ_PKT_CNT(1) | DIEPT_SIZ_XFER_SIZE(2), ®->in_endp[EP0_CON].dieptsiz);