Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1422795AbcKPGJ7 (ORCPT ); Wed, 16 Nov 2016 01:09:59 -0500 Received: from mail-sn1nam01on0057.outbound.protection.outlook.com ([104.47.32.57]:6321 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S936439AbcKPGJq (ORCPT ); Wed, 16 Nov 2016 01:09:46 -0500 Authentication-Results: spf=none (sender IP is 192.88.168.50) smtp.mailfrom=lvd5587.freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=fail action=none header.from=nxp.com; X-IncomingTopHeaderMarker: OriginalChecksum:;UpperCasedChecksum:;SizeAsReceived:1052;Count:11 From: Sriram Dash To: , CC: , , , , , , Arnd Bergmann , Sriram Dash , Felipe Balbi Subject: [PATCH v4 5/6] usb: dwc3: use bus->sysdev for DMA configuration Date: Wed, 16 Nov 2016 11:39:09 +0530 Message-ID: <1479276550-5868-6-git-send-email-sriram.dash@nxp.com> X-Mailer: git-send-email 1.7.7.4 In-Reply-To: <1479276550-5868-1-git-send-email-sriram.dash@nxp.com> References: <1479276550-5868-1-git-send-email-sriram.dash@nxp.com> X-IncomingHeaderCount: 11 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131237501847038286;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6039001)(6009001)(7916002)(2980300002)(428002)(336004)(199003)(189002)(7846002)(47776003)(50226002)(8666005)(305945005)(101416001)(50986999)(90966002)(105586002)(103686003)(42186005)(76176999)(5003940100001)(50466002)(8936002)(81166006)(33646002)(36756003)(48376002)(5660300001)(106466001)(46386002)(81156014)(4720700003)(356003)(42882006)(8676002)(45336002)(92566002)(4326007)(960300001)(6666003)(2950100002)(68736007)(86372001)(87936001)(626004)(189998001)(52956003)(5001770100001)(575784001)(97736004)(2906002)(7416002)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR03MB2468;H:tx30smr01.am.freescale.net;FPR:;SPF:None;PTR:InfoDomainNonexistent;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD014;1:dIuR1Fr2qJI8wXQuYi61C1RkxNJS/tZMEqFsmo2+k1LnQF7T9a2FeARru1cFMTY0s2TWDWqp2MIU6ShUGyJyjEtiSK2ABJ1qTl6bdyF0EmlIiZJeR5lIUtfsYKL86M/IjlsHA+qAmvWBznpENMNDNCoeW/wnN2cLXw4grP0NcEvAF9966+RC7MZb7mhhLVP9skKGGYyYyxvybnLbgqsWXfFqC0z5e9GKeIEda4KGUL2UB36AY609UmMdiSkR/OkYXDsNWxXRdu3c53Z+8ilClDTeMA+Y8DY6ftdBcOiyEHcbqiJvSRow0Xc/dAf9sgVaatL/RQgHW1iCum0V9W2l4uSv00JqSgTD6ycAOspu/Ql6lC25e8NSvsgLpzM49nLNMXJG54tuXelbQDWRw9OE8twjNdGCXK5jnajT7m89UlZ4eQc98rzGDPjaXIBXuXOT1UJ79sozLBDkRQdKtaS0DyUEF02xu51nhtyGQAxe+FNasr1S7SBGriVtsotS4TtR34vI9zV63ckLPWv+eE5uSfGkhVYoQXeUvejrlzmMh8lPPA42eqAlLiZUCfGi1mQt99k9eQ+8YjmVD9lsYqeL7rV6vf7hRKRhxJ3qn4LfkiG6taN1b8VEVza1et52PBHdKqYJkQ350EJC24Qf0Eb3DA== MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BN6PR03MB2468;2:0hUj7OIUE5W3DJ3ZskAkNMB95ZBtGkfNBA1DxNIOLEem5WqWCUnYtR45Ap0ZfHxyY92ngPT54wV0es+WPHrVM8RjvXyubaBbW+oqC/0MZlTS6kDJ69Kl/6KW5YaYim09Ue80GcAdmf7pd5MFp6mfI8xlGQLPMKe55JXS86TYaIs=;3:eoA8eHtr28L/H6x4/WqrWDpe07+3aj7sIwDRR11c4vDbioNSQG24SPBoeKvkzQXb6LpU6oPOpZpOu9pW9AjAm3mEalUdOJRrY6h7rqNV74sAeM6e+Nmsz2FFelWBoJ2LHzezn4XJFbFMK3lCd5R26nEhRHybaVcJlrmRdKXV+ojlUNq4gmwk10Nz3WzhYjVKaUQdtrxW6f1pwy8yXoAOieBQ8Tq7Xqud8MzQq1rSC1GUo+Gak22vck5I+xs/3LFejJFzjyFbLs602cv1MO3EYg== X-MS-Office365-Filtering-Correlation-Id: 8a02b35b-6fcf-4a75-5e4e-08d40de72931 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BN6PR03MB2468; X-Microsoft-Exchange-Diagnostics: 1;BN6PR03MB2468;25:1j4UZZEMdPIWDS93NizNxxAdoCU7SbFjx7IeZZsF+BL54l2txD2vhv7NGJlEAGOYaDs+vr/LGWmoF1RXQeT6u7bL0ZaJPopbocpOppVTc/1fpn+TA2AfsUuE5zZBNK+k7lqT3q+5pLtkXApJzG5vjXigNd3wRoWZjclF8loCaZWyuRQBxvBOjVXDOIGwiEOW7tpsS3GdB2tn32xxjXohr4h3keu/XxURq8jF2IjKNiMpKFnW1DMq8Rwq3xjOQoq50xfxnqF3E7WwXu6gZnCI0S/7cvuX2CIASbjQ0Qlt88AhGIRhsBR6ap/7QhzyzITBj7mxkiFIZEht5m5xgJPNqnUye18N6TIlgs/0YxOjHNnYAIIxN/O+E3w9wGrF3Lyo1sSlp6hn2eTurezJIduLv3/40dgxMrsx7tvblZMjY+UcNIaMShgTb9AVfpbMT4C3D4zy4vXA/B602gwWOCrkDME4W+NmBk7wrmv+Wd/bSCtvBG4GkilHe1zaCt0gE3L6oeq8j3oZcB9WybK6A+GvpYXPHJ/s20R2JOfsijPtAD0gPEdoNLzWDFJcAQZeaSXCm4gs7S5wTYPhSNKJQSieqf85Pofn/5XucJ2y1qD3flIUvC6/U46mEr4mzbCYsXKWFCaDDqi83ohKolMH8uL8M87WTFSdZdcPWAHpClKsTjC8zP6DvdZcxnBBNLN62UgYsrUfIBjIvAguLJ3HIC+se5NG0FFff4isxn1XZbBFg/GaeLFsbp+Vveqb6TnqdduZotJbEn9jh/vzamMd4rRaTiqKwlZ7Jpz5ERiMu582NRboHP6P9NylHT6tIqOsodoT1ALiNlYIWqgAbQnWxA9Acg== X-Microsoft-Exchange-Diagnostics: 1;BN6PR03MB2468;31:vl00h1MhdjbNeIuGrHA3yh9spaoOx6HZSOG0EvFPOLhoBWmIv1lcyCqvgstVmt5kocaihD39fYEfdMAc6W/cj3+TNOvyJ7E1JDrZK+/7dAIvazDFCV5lSwZ4m6RL/iwzsUCJpmQrriL2zOomX0m+ldeHncdo4nWXlCw3dlXw8+pGgZxczQ1L3hQxjD8JXadt2Yu3ZKIUdqh1pETkZiqxrO4ccQg6sZC812324EW1gjaf4RNHVAkAwKHPHZY8MQI3tMByS/CMRiVaP467pixHHA==;4:3xJ/KTmnvgPfnltwRnSDGPZc+zMZmrtweA4U8FreDnUSQDGSXAmlIhIs3oyKXEP11cT1ZPnZuGQD/LKJOxhY6LU86K4rQO0Fojnd2/D3oKC5C74dPbHGC0PPmCFG9qVNCk5Yqp345X6hlPTXNzoIEoUO/EtSN99gETKw8AtecHjB0nHF4eYL2pwn5E3SsirxXQNtXfttONPhGnY1fjRrxEjHcUTDYEr7SKrAxIRjYY0KwEsLs6yX7B7jt7WZy9ZoI3sar+QhuY1H1MHxq0WItjcckTialwsNraeDRDJnjSRnoPc8AApExXmKGRjei5tMCldpIqCjWc9HGcyJcK5qwPlVL67JlJCeg2/UvGDdcchGVH/SCtN2SGcC2+Ve9ELTP+XPhDnfpJ6NSnCHmsu0BhsySHj7HnczxOqR2AS5Ogx79/1ToVn6O0DhPDdXH6hVoeFpv6xBNHp7DnVbVFuwHxqOpZU0ywktijrD1aM40wVdXU6Y3IfnCZ7ly9TAF8oI6P+4Mx15YO3HVUQah/kDQZTn60I+bo6kYD+/hChZqEtW4qyqyRPWZjuQNB7O7PhNrL6rSbLnW/L0OXqL/myT3Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095035)(601004)(2401047)(5005006)(13024025)(13017025)(13015025)(8121501046)(13023025)(13018025)(10201501046)(3002001)(6055026)(6096035);SRVR:BN6PR03MB2468;BCL:0;PCL:0;RULEID:(400006);SRVR:BN6PR03MB2468; X-Forefront-PRVS: 01283822F8 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR03MB2468;23:IkR9DSwFxUja0mNyPujBLYd8FqvU/U4DuPRs/S37+?= =?us-ascii?Q?tJAkdVzk34bCV+/dXS658TGqCl9apfL/V7ErasnaEZZtdTJdP5a7mf0qZUuu?= =?us-ascii?Q?5jwfAAqT/yJw6+hJiPrDf4TNRG7YMH0JhkCJoSUIVDLFVfMesdZX9OG61FDN?= =?us-ascii?Q?oIwUqpySMAr3QLgwFJWynJrGbXTf04qYPMPK+q2lskg8IHSrFDTBefSOr0zK?= =?us-ascii?Q?LJaSz1QRfuHbp2zMP6RsHHwX9ftSDoP7YYT9dp/jcT5wRrorjGbGjFvggXdr?= =?us-ascii?Q?9+WXt1HStvNS306mbpRUI7Jai4v3SeX0hLdZGdhqPzbCynfQG2Qw1DUUzI4q?= =?us-ascii?Q?SgPTxQpecjay5ctmW90U/WWHVX0cxWTY8z2MtG4BLkXfQs/ckriInhcXVXz/?= =?us-ascii?Q?JlzyPjlz1fy6BONjSHjNKtQOa/wRf18il4VeGnAMwIxjW99/UDpCJ412M8LT?= =?us-ascii?Q?T4Yc2c1vCCmRfU8qn1ksb5oWIU4uhC7aYWhNBWx/Fp1K6twPgnDAx/bxPodY?= =?us-ascii?Q?fA5E01G7H3wTneI3iSUBwP3r4H0OPVMj0reiwVjlFe/gesmzyiUuuHIvyPKE?= =?us-ascii?Q?Ax/EFQmxR6R6leqlc76aecvyRzmMDTy09wyF+O3p4tLeWSdSfoH6a3+/I2v1?= =?us-ascii?Q?w8sRm2qeHKKS22gfeAYWpN4OvwJiCcYMKk9MR2mPRyEFdzS1JQ6BKh9cYbFc?= =?us-ascii?Q?Y8nli0KHnobUvK9sYMiinHwoWv7JXPvrqgBnpNcTjKM5PvKqA33POpsQZled?= =?us-ascii?Q?IAd4GeXeX9EXKDAtBsryopu6wJ02nPykb6B53Y24JZzoMJthhaLlUre3VAKF?= =?us-ascii?Q?TWQr7lncbsyk1J8TOi1S9B7lwHjFAmw44a5h5ZJkJzb7zxjR18pCMaK6CbRM?= =?us-ascii?Q?SHwxzAZ8t7pdvu1FWQplrcnalluiy1c+Usz/GvKl0fG2qH9mFONIr23fluNp?= =?us-ascii?Q?MtguvujZdcA0aEKlBSQUORFLEaQKD0fasvG4BOIxS/SsD45YezvIjpUmJBMF?= =?us-ascii?Q?UXGEZ2Re2I5Ew7tiMP4c2C0kn+gTElmmDGqNdItI48wNc2N4l57+No4q7nAw?= =?us-ascii?Q?I6YcOnTVRkcSyhFD75iMBteh8ACP+g3hfif9KMibwvqjAM6DcClxS5KCD+cI?= =?us-ascii?Q?enbwhkEPEMkQK4UmJiyefk7dDEnfo/sC/3KxkVKKp93Am9b09VxoUC9kRg3C?= =?us-ascii?Q?n1xylANsfZuGqSbp91610urDv/i7Stts2NqyC8voNDEICovP05YEuqLRjtIy?= =?us-ascii?Q?KvXDnPYIWi/YYEA2fg=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR03MB2468;6:nJStN0k1rNOPF+H6uFNb939GeDQekt+Vygzqt/TVoxxFCrilMid12i5iJ7LzaA+K4zXg92SqfXy4Wn/WcRsA11Cu3SvgtFT3c04pZU4QMvvUD2t9Zf6jny/38ynVlb5mikB4q3X/R2fRqnV1X46pq6BrEXWs9upnxXDJlx1HFjsubg90ZJPfqbvVkCCOLP4xrREko+5gx1N+1dNfoTAGXdmErElsrcVP0HR6UlLoD+u2IltHERp/ijo0fW+6t/70rlq9QhE56iNyf+nK8AdMXKc4r9Pc7Rjt9wZqn69+1+aiPvPZSX5KLXcC+p79kyK7JDo3aZHgiw8mRK5/wMqpoA==;5:rd/8cF/tX5e6VhLyv/cuAEhmR91HXz2AGFC+RSYM8yIajSuEtNE3DSaUJ2auVa/wc3np3kFLiH+agNipKNScrG9WgrxqZSxE3GHYAzlWPoOAR2SjreZ73E3Pj0BwxMHDA0ORsmP0voDeL4NWtizZnw7QbXd4mTgrWWVqq4DFkwF+kGIjlY0jZPfvAwJrdpvy;24:2auV/giMexkOmccrWf2AJVw8EfahmoZ9OOMkd2bsojTjlglXNaKCLiDVMj+2AgfKO3j1Jcfd+9jSBtoVQoudCS7jaH4hmrMR0HVrKyG6OW0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR03MB2468;7:QsIIoM/tUcxjcyUsqvFPFYurZOoyyOhpnHjBFLo2uEu5r215y1Ux3EHp29xDn8IvyMpfmw5Q0T+Kf0NUfTw2h+s1kXL2xDm6TPaSHihuv16gInnS5NbL8fqlR7Oo7du+oNd5rBbm11FwwSRljPKU11ba4xFjC7Wwy/KMSNj/YtnjQPeNnvVAHmMb9wjpnCDAjI5wCpn0iUjvTTntsqRs0bDLxkkjwANp2qpb6dvKMtGWcCAg9Su5e5zDmt5v0eqXIMQ9hDTkSLLYIAOY57w4ml5E5bB+guyBw/PooP65Os3i66blOClx816ybtvpb0QpYPUcLAafUWSIMN4jRywkDxgFcVrlGNhaBeooEowMfDc= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2016 06:09:44.1734 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2468 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 12326 Lines: 368 From: Arnd Bergmann The dma ops for dwc3 devices are not set properly. So, use a physical device sysdev, which will be inherited from parent, to set the hardware / firmware parameters like dma. Signed-off-by: Arnd Bergmann Signed-off-by: Sriram Dash Signed-off-by: Felipe Balbi Tested-by: Baolin Wang --- Changes in v4: - removed the ifdefs for pci - made the sysdev as a device property - phy create lookup take up the correct device. Changes in v3: - No update Changes in v2: - integrate dwc3 driver changes together drivers/usb/dwc3/core.c | 27 ++++++++++++++------------- drivers/usb/dwc3/core.h | 3 +++ drivers/usb/dwc3/dwc3-pci.c | 11 +++++++++++ drivers/usb/dwc3/ep0.c | 8 ++++---- drivers/usb/dwc3/gadget.c | 37 +++++++++++++++++++------------------ drivers/usb/dwc3/host.c | 16 ++++++---------- 6 files changed, 57 insertions(+), 45 deletions(-) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index fea4469..cf37d3e 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -229,7 +229,7 @@ static void dwc3_frame_length_adjustment(struct dwc3 *dwc) static void dwc3_free_one_event_buffer(struct dwc3 *dwc, struct dwc3_event_buffer *evt) { - dma_free_coherent(dwc->dev, evt->length, evt->buf, evt->dma); + dma_free_coherent(dwc->sysdev, evt->length, evt->buf, evt->dma); } /** @@ -251,7 +251,7 @@ static struct dwc3_event_buffer *dwc3_alloc_one_event_buffer(struct dwc3 *dwc, evt->dwc = dwc; evt->length = length; - evt->buf = dma_alloc_coherent(dwc->dev, length, + evt->buf = dma_alloc_coherent(dwc->sysdev, length, &evt->dma, GFP_KERNEL); if (!evt->buf) return ERR_PTR(-ENOMEM); @@ -370,11 +370,11 @@ static int dwc3_setup_scratch_buffers(struct dwc3 *dwc) if (!WARN_ON(dwc->scratchbuf)) return 0; - scratch_addr = dma_map_single(dwc->dev, dwc->scratchbuf, + scratch_addr = dma_map_single(dwc->sysdev, dwc->scratchbuf, dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL); - if (dma_mapping_error(dwc->dev, scratch_addr)) { - dev_err(dwc->dev, "failed to map scratch buffer\n"); + if (dma_mapping_error(dwc->sysdev, scratch_addr)) { + dev_err(dwc->sysdev, "failed to map scratch buffer\n"); ret = -EFAULT; goto err0; } @@ -398,7 +398,7 @@ static int dwc3_setup_scratch_buffers(struct dwc3 *dwc) return 0; err1: - dma_unmap_single(dwc->dev, dwc->scratch_addr, dwc->nr_scratch * + dma_unmap_single(dwc->sysdev, dwc->scratch_addr, dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL); err0: @@ -417,7 +417,7 @@ static void dwc3_free_scratch_buffers(struct dwc3 *dwc) if (!WARN_ON(dwc->scratchbuf)) return; - dma_unmap_single(dwc->dev, dwc->scratch_addr, dwc->nr_scratch * + dma_unmap_single(dwc->sysdev, dwc->scratch_addr, dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL); kfree(dwc->scratchbuf); } @@ -986,6 +986,13 @@ static int dwc3_probe(struct platform_device *pdev) dwc->dr_mode = usb_get_dr_mode(dev); dwc->hsphy_mode = of_usb_get_phy_mode(dev->of_node); + dwc->sysdev_is_parent = device_property_read_bool(dev, + "linux,sysdev_is_parent"); + if (dwc->sysdev_is_parent) + dwc->sysdev = dwc->dev->parent; + else + dwc->sysdev = dwc->dev; + dwc->has_lpm_erratum = device_property_read_bool(dev, "snps,has-lpm-erratum"); device_property_read_u8(dev, "snps,lpm-nyet-threshold", @@ -1050,12 +1057,6 @@ static int dwc3_probe(struct platform_device *pdev) spin_lock_init(&dwc->lock); - if (!dev->dma_mask) { - dev->dma_mask = dev->parent->dma_mask; - dev->dma_parms = dev->parent->dma_parms; - dma_set_coherent_mask(dev, dev->parent->coherent_dma_mask); - } - pm_runtime_set_active(dev); pm_runtime_use_autosuspend(dev); pm_runtime_set_autosuspend_delay(dev, DWC3_DEFAULT_AUTOSUSPEND_DELAY); diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 6b60e42..6999e28 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -798,6 +798,7 @@ struct dwc3_scratchpad_array { * @ep0_bounced: true when we used bounce buffer * @ep0_expect_in: true when we expect a DATA IN transfer * @has_hibernation: true when dwc3 was configured with Hibernation + * @sysdev_is_parent: true when dwc3 device has a parent driver * @has_lpm_erratum: true when core was configured with LPM Erratum. Note that * there's now way for software to detect this in runtime. * @is_utmi_l1_suspend: the core asserts output signal @@ -851,6 +852,7 @@ struct dwc3 { spinlock_t lock; struct device *dev; + struct device *sysdev; struct platform_device *xhci; struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM]; @@ -952,6 +954,7 @@ struct dwc3 { unsigned ep0_bounced:1; unsigned ep0_expect_in:1; unsigned has_hibernation:1; + unsigned sysdev_is_parent:1; unsigned has_lpm_erratum:1; unsigned is_utmi_l1_suspend:1; unsigned is_fpga:1; diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c index 6df0f5d..48bc526 100644 --- a/drivers/usb/dwc3/dwc3-pci.c +++ b/drivers/usb/dwc3/dwc3-pci.c @@ -50,6 +50,17 @@ static const struct acpi_gpio_mapping acpi_dwc3_byt_gpios[] = { static int dwc3_pci_quirks(struct pci_dev *pdev, struct platform_device *dwc3) { + int ret; + + struct property_entry sysdev_property[] = { + PROPERTY_ENTRY_BOOL("linux,sysdev_is_parent"), + { }, + }; + + ret = platform_device_add_properties(dwc3, sysdev_property); + if (ret) + return ret; + if (pdev->vendor == PCI_VENDOR_ID_AMD && pdev->device == PCI_DEVICE_ID_AMD_NL_USB) { struct property_entry properties[] = { diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index fe79d77..4d13723 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c @@ -974,8 +974,8 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc, u32 transfer_size = 0; u32 maxpacket; - ret = usb_gadget_map_request(&dwc->gadget, &req->request, - dep->number); + ret = usb_gadget_map_request_by_dev(dwc->sysdev, + &req->request, dep->number); if (ret) { dwc3_trace(trace_dwc3_ep0, "failed to map request"); return; @@ -1002,8 +1002,8 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc, dwc->ep0_bounce_addr, transfer_size, DWC3_TRBCTL_CONTROL_DATA, false); } else { - ret = usb_gadget_map_request(&dwc->gadget, &req->request, - dep->number); + ret = usb_gadget_map_request_by_dev(dwc->sysdev, + &req->request, dep->number); if (ret) { dwc3_trace(trace_dwc3_ep0, "failed to map request"); return; diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 1dfa56a5f..84fff5e 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -185,8 +185,8 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, if (dwc->ep0_bounced && dep->number == 0) dwc->ep0_bounced = false; else - usb_gadget_unmap_request(&dwc->gadget, &req->request, - req->direction); + usb_gadget_unmap_request_by_dev(dwc->sysdev, + &req->request, req->direction); trace_dwc3_gadget_giveback(req); @@ -365,7 +365,7 @@ static int dwc3_alloc_trb_pool(struct dwc3_ep *dep) if (dep->trb_pool) return 0; - dep->trb_pool = dma_alloc_coherent(dwc->dev, + dep->trb_pool = dma_alloc_coherent(dwc->sysdev, sizeof(struct dwc3_trb) * DWC3_TRB_NUM, &dep->trb_pool_dma, GFP_KERNEL); if (!dep->trb_pool) { @@ -381,7 +381,7 @@ static void dwc3_free_trb_pool(struct dwc3_ep *dep) { struct dwc3 *dwc = dep->dwc; - dma_free_coherent(dwc->dev, sizeof(struct dwc3_trb) * DWC3_TRB_NUM, + dma_free_coherent(dwc->sysdev, sizeof(struct dwc3_trb) * DWC3_TRB_NUM, dep->trb_pool, dep->trb_pool_dma); dep->trb_pool = NULL; @@ -989,8 +989,8 @@ static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep, u16 cmd_param) * here and stop, unmap, free and del each of the linked * requests instead of what we do now. */ - usb_gadget_unmap_request(&dwc->gadget, &req->request, - req->direction); + usb_gadget_unmap_request_by_dev(dwc->sysdev, + &req->request, req->direction); list_del(&req->list); return ret; } @@ -1063,8 +1063,8 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) trace_dwc3_ep_queue(req); - ret = usb_gadget_map_request(&dwc->gadget, &req->request, - dep->direction); + ret = usb_gadget_map_request_by_dev(dwc->sysdev, &req->request, + dep->direction); if (ret) return ret; @@ -2889,7 +2889,7 @@ int dwc3_gadget_init(struct dwc3 *dwc) dwc->irq_gadget = irq; - dwc->ctrl_req = dma_alloc_coherent(dwc->dev, sizeof(*dwc->ctrl_req), + dwc->ctrl_req = dma_alloc_coherent(dwc->sysdev, sizeof(*dwc->ctrl_req), &dwc->ctrl_req_addr, GFP_KERNEL); if (!dwc->ctrl_req) { dev_err(dwc->dev, "failed to allocate ctrl request\n"); @@ -2897,8 +2897,9 @@ int dwc3_gadget_init(struct dwc3 *dwc) goto err0; } - dwc->ep0_trb = dma_alloc_coherent(dwc->dev, sizeof(*dwc->ep0_trb) * 2, - &dwc->ep0_trb_addr, GFP_KERNEL); + dwc->ep0_trb = dma_alloc_coherent(dwc->sysdev, + sizeof(*dwc->ep0_trb) * 2, + &dwc->ep0_trb_addr, GFP_KERNEL); if (!dwc->ep0_trb) { dev_err(dwc->dev, "failed to allocate ep0 trb\n"); ret = -ENOMEM; @@ -2911,7 +2912,7 @@ int dwc3_gadget_init(struct dwc3 *dwc) goto err2; } - dwc->ep0_bounce = dma_alloc_coherent(dwc->dev, + dwc->ep0_bounce = dma_alloc_coherent(dwc->sysdev, DWC3_EP0_BOUNCE_SIZE, &dwc->ep0_bounce_addr, GFP_KERNEL); if (!dwc->ep0_bounce) { @@ -2983,18 +2984,18 @@ int dwc3_gadget_init(struct dwc3 *dwc) err4: dwc3_gadget_free_endpoints(dwc); - dma_free_coherent(dwc->dev, DWC3_EP0_BOUNCE_SIZE, + dma_free_coherent(dwc->sysdev, DWC3_EP0_BOUNCE_SIZE, dwc->ep0_bounce, dwc->ep0_bounce_addr); err3: kfree(dwc->setup_buf); err2: - dma_free_coherent(dwc->dev, sizeof(*dwc->ep0_trb) * 2, + dma_free_coherent(dwc->sysdev, sizeof(*dwc->ep0_trb) * 2, dwc->ep0_trb, dwc->ep0_trb_addr); err1: - dma_free_coherent(dwc->dev, sizeof(*dwc->ctrl_req), + dma_free_coherent(dwc->sysdev, sizeof(*dwc->ctrl_req), dwc->ctrl_req, dwc->ctrl_req_addr); err0: @@ -3009,16 +3010,16 @@ void dwc3_gadget_exit(struct dwc3 *dwc) dwc3_gadget_free_endpoints(dwc); - dma_free_coherent(dwc->dev, DWC3_EP0_BOUNCE_SIZE, + dma_free_coherent(dwc->sysdev, DWC3_EP0_BOUNCE_SIZE, dwc->ep0_bounce, dwc->ep0_bounce_addr); kfree(dwc->setup_buf); kfree(dwc->zlp_buf); - dma_free_coherent(dwc->dev, sizeof(*dwc->ep0_trb) * 2, + dma_free_coherent(dwc->sysdev, sizeof(*dwc->ep0_trb) * 2, dwc->ep0_trb, dwc->ep0_trb_addr); - dma_free_coherent(dwc->dev, sizeof(*dwc->ctrl_req), + dma_free_coherent(dwc->sysdev, sizeof(*dwc->ctrl_req), dwc->ctrl_req, dwc->ctrl_req_addr); } diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c index f6533c6..135da44 100644 --- a/drivers/usb/dwc3/host.c +++ b/drivers/usb/dwc3/host.c @@ -72,11 +72,7 @@ int dwc3_host_init(struct dwc3 *dwc) return -ENOMEM; } - dma_set_coherent_mask(&xhci->dev, dwc->dev->coherent_dma_mask); - xhci->dev.parent = dwc->dev; - xhci->dev.dma_mask = dwc->dev->dma_mask; - xhci->dev.dma_parms = dwc->dev->dma_parms; dwc->xhci = xhci; @@ -99,9 +95,9 @@ int dwc3_host_init(struct dwc3 *dwc) } phy_create_lookup(dwc->usb2_generic_phy, "usb2-phy", - dev_name(&xhci->dev)); + dev_name(dwc->dev)); phy_create_lookup(dwc->usb3_generic_phy, "usb3-phy", - dev_name(&xhci->dev)); + dev_name(dwc->dev)); ret = platform_device_add(xhci); if (ret) { @@ -112,9 +108,9 @@ int dwc3_host_init(struct dwc3 *dwc) return 0; err2: phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy", - dev_name(&xhci->dev)); + dev_name(dwc->dev)); phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy", - dev_name(&xhci->dev)); + dev_name(dwc->dev)); err1: platform_device_put(xhci); return ret; @@ -123,8 +119,8 @@ int dwc3_host_init(struct dwc3 *dwc) void dwc3_host_exit(struct dwc3 *dwc) { phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy", - dev_name(&dwc->xhci->dev)); + dev_name(dwc->dev)); phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy", - dev_name(&dwc->xhci->dev)); + dev_name(dwc->dev)); platform_device_unregister(dwc->xhci); } -- 2.1.0