From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758355AbdJMOua (ORCPT ); Fri, 13 Oct 2017 10:50:30 -0400 Received: from mail-sn1nam02on0059.outbound.protection.outlook.com ([104.47.36.59]:45184 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1758237AbdJMOuY (ORCPT ); Fri, 13 Oct 2017 10:50:24 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=fail action=none header.from=nxp.com; From: Madalin Bucur To: , CC: , , , , Subject: [PATCH v2 3/5] dpaa_eth: change device used Date: Fri, 13 Oct 2017 17:50:10 +0300 Message-ID: <1507906212-10076-4-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1507906212-10076-1-git-send-email-madalin.bucur@nxp.com> References: <1507906212-10076-1-git-send-email-madalin.bucur@nxp.com> Reply-To: X-EOPAttributedMessage: 0 X-Matching-Connectors: 131523798217754453;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7966004)(336005)(346002)(376002)(39860400002)(39380400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(39060400002)(2906002)(50466002)(5660300001)(36756003)(50986999)(50226002)(5003940100001)(48376002)(76176999)(6666003)(16586007)(4326008)(85426001)(43066003)(2950100002)(498600001)(54906003)(110136005)(97736004)(77096006)(105606002)(106466001)(104016004)(33646002)(575784001)(53936002)(3450700001)(189998001)(81156014)(68736007)(47776003)(86362001)(8936002)(305945005)(316002)(8676002)(356003)(81166006);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR03MB2704;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD035;1:7RnV0cnezXSXnG1lpcQGNNXJh6hZol3S3XQ4gA0UdMOu9dRPf0ZG1NTrBJp3wedGNFJ29aPQjFaYaZSQM82TYMyx2RjqJYjS+huXrffBV9faIzkkVVyheNtvZxFJzsbH MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d02a3d66-c80a-4882-7c4d-08d51249baab X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017052603199)(201703131430075)(201703131517081);SRVR:MWHPR03MB2704; X-Microsoft-Exchange-Diagnostics: 1;MWHPR03MB2704;3:FT240IwCnigE6kqRSIHOxi/23XDl+wFUB+F31BqhMvzDxewy5uw7C43x8pfgcCErMKI+T5zijrV1VpP91uQ4LLTo07pN5kcQtKZ//dXSaoPlskWmYNpounIKiouwYY7o1mbFoTBkwhzZugDqXcMrHAXZWx6F4QCjVx/4WUXtG791Qvtb5149VQUtkBmCU5olR1ZoN4TOlW44QpKXAdBO9zvWqTvv9KT11aUG6Z8gA+p9FetA2seTzfHQZTp2bwNuK5GP74OlsPS+qVjFGAto5mfQQXikr4stJTuXIPY3hnKBnakUtdRaApvJLq5bkKO0w17w8bxx6LHhNAI7Szfviv/ktK72XoqXxTtt4EYplIw=;25:05Y8wSasm791RxrnfE9SJa0ayfcK8ojYcjwpqk7TJcnlaD2+KhKjKFVxkUaCqIK1CG2HtQzefB54cGzC339hP6I2fp0WD3/5AFYwEmMPuy9Hl/x/EYX2T3dJKYbiuRVeWncx0wh4kH3SHDImwsjZYKYbmmmfFRd/8GZN2149Xk/ywVUTHKBKIsCwd9/e+7FVLQpOtnvoe+W9v+/zwQ1zyYiJv3oi4HPx8v89jP3aEb0zGk5KbgSjSizr/wOPEDqAP7Uxzp3Lh0iEwMfScjv6ew1cEdzfZoo4xlporrQU83ueoX3U7FE9tCzyMeRII3D0Rq//AxUAUdI3GOAp73Ib6g== X-MS-TrafficTypeDiagnostic: MWHPR03MB2704: X-Microsoft-Exchange-Diagnostics: 1;MWHPR03MB2704;31:8SDgvA1XEL2tC9OQUOLT+WM/wRyVJy0/lU3x85l5ToF9y5+yzGk17uYh3plFjadUWv3d5QuMBG/W6SLdZpKi0b5mpstAemehpzbeIy6+Eyua5Ky1Ln/+L4T5nTX0ZzX/AqTwG6fur8RrrwZmsLIuBl+YpXSnOvw1Eb5dWyTU8udJisn3iG9pgWVzzNfi8Qqh/R8wgKHEjO8tmE75rvx9NwVgMW2IFM87QWUsGgCaMxg=;4:blHUysSVzL8JGnK4fe3AvUnkhIxLaMTN4JCKDCCovXwJCngpYyeX7gSZYuJ3C80msEK1FQv9BRTFNr36kawDTRTOSWQQekOpEbUWOyt0UbvFUPeRn248GBSYilbP7/YXGUf0azwX9nHcMG2tQ3uf54xJ9FxAOu63aM2HiUQ0w6uSj+6BBiqg216C3mIGDB3QUPNLMd7v+0l1HBxELjmsyO2z7JKlbrBFKrqWbJxNoURZGPmgV6H2pzDcHJhx3LKuya4JcfaAqYxATI/2M10K0KiFwaxlDiBiCmiWpFl9Wl8= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123563025)(20161123561025)(20161123565025)(20161123556025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123559100)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:MWHPR03MB2704;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:MWHPR03MB2704; X-Forefront-PRVS: 04599F3534 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;MWHPR03MB2704;23:4I4YlQtDli2FoOqvK1J/FLAmkfHIqPBycHbkgrmtZ?= =?us-ascii?Q?QL8nIhNw09VcMfFz2ror9ISx1Ia1PZ6AUaTwKx/RnEGx0112f60/5KWYJwWE?= =?us-ascii?Q?znFfipOpYIPPXFx4FthjVUTm6ulg685VlNJB0eJJ2a1e0pFFRfsc1CvAVYgd?= =?us-ascii?Q?1lIbNBnjMcFawvjJ1TqAFyBkmWz+jhYMice434o3mhF+i7IirQplxHRYWP1M?= =?us-ascii?Q?1mgZXsGG+NkibmrxyRM9mScqH5/qkhferDR6ljDYQbEh6FbFWBAeOdpbD6j6?= =?us-ascii?Q?xlUJdgl6Sjn6u0F+Ei+zmHiw+f4ZryxheItZ7uObMz0/PjBFR8yneMaIwHRx?= =?us-ascii?Q?mq7Qz2L7ynQB6X/f2uFelhDuycvWvVsd6s7l8YoY7plB7lkxM+vBz/355xIc?= =?us-ascii?Q?cEf9idGXyHtFYQnIfcpfqJfOymbf+s5+VgNBjwf4qMyp3LPIpithcprSzeQK?= =?us-ascii?Q?M+3y7aMp/JRUU5eTshTEFBJmsTUbUHSBT4OTBk9s8qZkIJG7rBP95aVq0AP0?= =?us-ascii?Q?4KWgRWM1ctCEU4k0u3WrhqrGSEkv/wt4eZCo/IahXm1TgXxlCUb8HxSaI6eF?= =?us-ascii?Q?+SkGNDFeJ9jL6+J4cZl5glBrW0eYsrXJlGgRI1FLQ67m6nCoK7WnLJOc4k2S?= =?us-ascii?Q?dhlieTmtp7rzre670cCzELnq2iRfpBYc5bHCfWSPqm/JKc1vjrjksmjDql1M?= =?us-ascii?Q?mu74JAObeXZdlnFAH5DsKm804o35edGeokunAIBC3AgZOyt37vBlo9hrqxIr?= =?us-ascii?Q?VOKYIKOcPXmu03bOaA0HPDg3tnHphC1VPmT7qZ/DmQO+ARXxdUoTDRTpORG8?= =?us-ascii?Q?B5GpIFmR8vsK0Rlk2DprYKtQ3u+A4Zsr+Yt3CfQikL1IjBY0ISac4YatDcmJ?= =?us-ascii?Q?xmaBa8OkVYGsf7Dx7YTPCQG6iEbWAMmcVI75n4xCdEz1dN8boDkw1MjDxxlI?= =?us-ascii?Q?WlSP5W7TVxlNChRpSU56T3to9LoPuH4tZYdmxmVEq2fCkMoG2ZTHvxwmIzPi?= =?us-ascii?Q?fZFgNjBDEhfzoFu0fDsmnqn2Ds43HQVqvOGiO/64vxOjhh1/z6SAzme82Zx0?= =?us-ascii?Q?Qic6TnXe3QA12td8KuH8lBn++xqgpQ0dIDh244iIpeaIpyKaCE333iUsiJU6?= =?us-ascii?Q?iL7mUhmmNEZTL8kJQHBGhIb45PqSV3u2htY/PmNaszqQPjA6qOAHW1Wn2EaP?= =?us-ascii?Q?1Ci3CyqDLbUtqFBqv7G+l65X/0j9MDjUWHM8cpjyJemy11atKxNexshvPDmN?= =?us-ascii?Q?hRQO4l8US63NSvctbg=3D?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR03MB2704;6:gbTmHP1FT+p+/dqIPs+8QiQS2lu09vUTWWhXevHctTJ5qaWKntNE6cHdfhBLCJNyK+kd7aNJ6N0M0ZrexTm80EGyOe9sPJNfDD2glYSOazssDBdc6T9K+XiejCJ7KbRNxOQzwT23PFQ2YYp/iwouNmcNLf2/Ch/JLpcKeRv88wgShGvnUonpkjSrat+N4r220SuDNxaOnDJeGzXKKmFcIdoI+fVomod66ZFTKCK5vCgokkDkxMiD64cgzCGE8MUUcF1M1VljtBoDEaYkFSXO61TtyEo0zIJp/tcf1mjUtDA9Fg28YEM+i4xj9ZvSJm1Qk1tzLgWmHTtzT6riHweSNA==;5:ZEsXprp5DxMgo4km3AeYpUy64rpjDb+OUShuIJponq1dj5pwYzICMA4cuAznMnrgGsEEy5HEGA/xbdfNXxoKejaRxP2H5TNF4rLakAeJ4+xUOaJJJ7NAYQDPcS8/2fZpVoVgMyoj+zIYBJMqBmC1iQ==;24:9kErQDIVZKfBeo0vjHv3wFtRy+90UQyEBtHPIwCIy+CegL0PSaxQ6jlsoyQ2NHF3Z9vcMQa/XMEMK5cmklo3M8woeJXQz8zdeVW/fb202WY=;7:v8tAjMwbRuhf1CJdhTYXxWSqEl1hDaYqrGxnrhrPULP0VgGIcYj0bpEqTbu/ZvWCteg0I4UtWo8M0PQEG77y22YmMmi1p5ykynong7UQ4gez4gGmr9FEHG/JqLHLvus3YW3khIM8S9YjZXLJJREV3ENbExtwtYVf5tYl2rO++34fujTied6boihYND8XsMQsy0sq4AEQUT94Jwi+Mr3ujpNyPTsOknHDtgU3pgiJnLg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2017 14:50:21.4478 (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: MWHPR03MB2704 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Change device used for DMA mapping to the MAC device that is an of_device, with proper DMA ops. Using this device for the netdevice should also address the issue with DSA scenarios that need the netdevice to be backed by an of_device. Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 42 ++++++++------------------ drivers/net/ethernet/freescale/fman/mac.c | 37 +++++++++-------------- drivers/net/ethernet/freescale/fman/mac.h | 1 - 3 files changed, 27 insertions(+), 53 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index 7cf61d6..823aa65 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -385,34 +385,19 @@ static int dpaa_setup_tc(struct net_device *net_dev, enum tc_setup_type type, static struct mac_device *dpaa_mac_dev_get(struct platform_device *pdev) { - struct platform_device *of_dev; struct dpaa_eth_data *eth_data; - struct device *dpaa_dev, *dev; - struct device_node *mac_node; + struct device *dpaa_dev; struct mac_device *mac_dev; dpaa_dev = &pdev->dev; eth_data = dpaa_dev->platform_data; - if (!eth_data) + if (!eth_data) { + dev_err(dpaa_dev, "eth_data missing\n"); return ERR_PTR(-ENODEV); - - mac_node = eth_data->mac_node; - - of_dev = of_find_device_by_node(mac_node); - if (!of_dev) { - dev_err(dpaa_dev, "of_find_device_by_node(%pOF) failed\n", - mac_node); - of_node_put(mac_node); - return ERR_PTR(-EINVAL); } - of_node_put(mac_node); - - dev = &of_dev->dev; - - mac_dev = dev_get_drvdata(dev); + mac_dev = eth_data->mac_dev; if (!mac_dev) { - dev_err(dpaa_dev, "dev_get_drvdata(%s) failed\n", - dev_name(dev)); + dev_err(dpaa_dev, "mac_dev missing\n"); return ERR_PTR(-EINVAL); } @@ -2696,7 +2681,13 @@ static int dpaa_eth_probe(struct platform_device *pdev) int err = 0, i, channel; struct device *dev; - dev = &pdev->dev; + /* device used for DMA mapping */ + dev = pdev->dev.parent; + err = dma_coerce_mask_and_coherent(dev, DMA_BIT_MASK(40)); + if (err) { + dev_err(dev, "dma_coerce_mask_and_coherent() failed\n"); + return err; + } /* Allocate this early, so we can store relevant information in * the private area @@ -2738,14 +2729,6 @@ static int dpaa_eth_probe(struct platform_device *pdev) priv->buf_layout[RX].priv_data_size = DPAA_RX_PRIV_DATA_SIZE; /* Rx */ priv->buf_layout[TX].priv_data_size = DPAA_TX_PRIV_DATA_SIZE; /* Tx */ - /* device used for DMA mapping */ - set_dma_ops(dev, get_dma_ops(&pdev->dev)); - err = dma_coerce_mask_and_coherent(dev, DMA_BIT_MASK(40)); - if (err) { - dev_err(dev, "dma_coerce_mask_and_coherent() failed\n"); - goto dev_mask_failed; - } - /* bp init */ for (i = 0; i < DPAA_BPS_NUM; i++) { int err; @@ -2879,7 +2862,6 @@ static int dpaa_eth_probe(struct platform_device *pdev) dpaa_bps_free(priv); bp_create_failed: fq_probe_failed: -dev_mask_failed: mac_probe_failed: dev_set_drvdata(dev, NULL); free_netdev(net_dev); diff --git a/drivers/net/ethernet/freescale/fman/mac.c b/drivers/net/ethernet/freescale/fman/mac.c index a0a3107..1d6da1e 100644 --- a/drivers/net/ethernet/freescale/fman/mac.c +++ b/drivers/net/ethernet/freescale/fman/mac.c @@ -542,8 +542,7 @@ static const u16 phy2speed[] = { }; static struct platform_device *dpaa_eth_add_device(int fman_id, - struct mac_device *mac_dev, - struct device_node *node) + struct mac_device *mac_dev) { struct platform_device *pdev; struct dpaa_eth_data data; @@ -556,10 +555,8 @@ static struct platform_device *dpaa_eth_add_device(int fman_id, data.mac_dev = mac_dev; data.mac_hw_id = priv->cell_index; data.fman_hw_id = fman_id; - data.mac_node = node; mutex_lock(ð_lock); - pdev = platform_device_alloc("dpaa-ethernet", dpaa_eth_dev_cnt); if (!pdev) { ret = -ENOMEM; @@ -648,9 +645,6 @@ static int mac_probe(struct platform_device *_of_dev) goto _return; } - /* Register mac_dev */ - dev_set_drvdata(dev, mac_dev); - INIT_LIST_HEAD(&priv->mc_addr_list); /* Get the FM node */ @@ -659,7 +653,7 @@ static int mac_probe(struct platform_device *_of_dev) dev_err(dev, "of_get_parent(%pOF) failed\n", mac_node); err = -EINVAL; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } of_dev = of_find_device_by_node(dev_node); @@ -693,7 +687,7 @@ static int mac_probe(struct platform_device *_of_dev) if (err < 0) { dev_err(dev, "of_address_to_resource(%pOF) = %d\n", mac_node, err); - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } mac_dev->res = __devm_request_region(dev, @@ -703,7 +697,7 @@ static int mac_probe(struct platform_device *_of_dev) if (!mac_dev->res) { dev_err(dev, "__devm_request_mem_region(mac) failed\n"); err = -EBUSY; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } priv->vaddr = devm_ioremap(dev, mac_dev->res->start, @@ -711,7 +705,7 @@ static int mac_probe(struct platform_device *_of_dev) if (!priv->vaddr) { dev_err(dev, "devm_ioremap() failed\n"); err = -EIO; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } if (!of_device_is_available(mac_node)) { @@ -728,7 +722,7 @@ static int mac_probe(struct platform_device *_of_dev) if (err) { dev_err(dev, "failed to read cell-index for %pOF\n", mac_node); err = -EINVAL; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } priv->cell_index = (u8)val; @@ -737,7 +731,7 @@ static int mac_probe(struct platform_device *_of_dev) if (!mac_addr) { dev_err(dev, "of_get_mac_address(%pOF) failed\n", mac_node); err = -EINVAL; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } memcpy(mac_dev->addr, mac_addr, sizeof(mac_dev->addr)); @@ -747,14 +741,14 @@ static int mac_probe(struct platform_device *_of_dev) dev_err(dev, "of_count_phandle_with_args(%pOF, fsl,fman-ports) failed\n", mac_node); err = nph; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } if (nph != ARRAY_SIZE(mac_dev->port)) { dev_err(dev, "Not supported number of fman-ports handles of mac node %pOF from device tree\n", mac_node); err = -EINVAL; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } for (i = 0; i < ARRAY_SIZE(mac_dev->port); i++) { @@ -818,20 +812,20 @@ static int mac_probe(struct platform_device *_of_dev) err = of_phy_register_fixed_link(mac_node); if (err) - goto _return_dev_set_drvdata; + goto _return_of_get_parent; priv->fixed_link = kzalloc(sizeof(*priv->fixed_link), GFP_KERNEL); if (!priv->fixed_link) { err = -ENOMEM; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } mac_dev->phy_node = of_node_get(mac_node); phy = of_phy_find_device(mac_dev->phy_node); if (!phy) { err = -EINVAL; - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } priv->fixed_link->link = phy->link; @@ -847,7 +841,7 @@ static int mac_probe(struct platform_device *_of_dev) if (err < 0) { dev_err(dev, "mac_dev->init() = %d\n", err); of_node_put(mac_dev->phy_node); - goto _return_dev_set_drvdata; + goto _return_of_get_parent; } /* pause frame autonegotiation enabled */ @@ -868,7 +862,7 @@ static int mac_probe(struct platform_device *_of_dev) mac_dev->addr[0], mac_dev->addr[1], mac_dev->addr[2], mac_dev->addr[3], mac_dev->addr[4], mac_dev->addr[5]); - priv->eth_dev = dpaa_eth_add_device(fman_id, mac_dev, mac_node); + priv->eth_dev = dpaa_eth_add_device(fman_id, mac_dev); if (IS_ERR(priv->eth_dev)) { dev_err(dev, "failed to add Ethernet platform device for MAC %d\n", priv->cell_index); @@ -879,9 +873,8 @@ static int mac_probe(struct platform_device *_of_dev) _return_of_node_put: of_node_put(dev_node); -_return_dev_set_drvdata: +_return_of_get_parent: kfree(priv->fixed_link); - dev_set_drvdata(dev, NULL); _return: return err; } diff --git a/drivers/net/ethernet/freescale/fman/mac.h b/drivers/net/ethernet/freescale/fman/mac.h index 1ca85a1..eefb335 100644 --- a/drivers/net/ethernet/freescale/fman/mac.h +++ b/drivers/net/ethernet/freescale/fman/mac.h @@ -83,7 +83,6 @@ struct mac_device { }; struct dpaa_eth_data { - struct device_node *mac_node; struct mac_device *mac_dev; int mac_hw_id; int fman_hw_id; -- 2.1.0