From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932191AbdJPSgd (ORCPT ); Mon, 16 Oct 2017 14:36:33 -0400 Received: from mail-sn1nam01on0041.outbound.protection.outlook.com ([104.47.32.41]:22704 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756508AbdJPSgY (ORCPT ); Mon, 16 Oct 2017 14:36:24 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) 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 v3 3/6] dpaa_eth: change device used Date: Mon, 16 Oct 2017 21:36:07 +0300 Message-ID: <1508178970-28945-4-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1508178970-28945-1-git-send-email-madalin.bucur@nxp.com> References: <1508178970-28945-1-git-send-email-madalin.bucur@nxp.com> Reply-To: X-EOPAttributedMessage: 0 X-Matching-Connectors: 131526525826902135;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.158.2;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7966004)(336005)(346002)(39380400002)(39860400002)(376002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(104016004)(106466001)(105606002)(498600001)(50986999)(8936002)(76176999)(50226002)(53936002)(4326008)(47776003)(189998001)(5003940100001)(39060400002)(2950100002)(68736007)(43066003)(77096006)(6666003)(85426001)(33646002)(5660300001)(86362001)(575784001)(97736004)(16586007)(50466002)(54906003)(110136005)(69596002)(8676002)(36756003)(2906002)(316002)(48376002)(3450700001)(81156014)(81166006)(356003)(305945005);DIR:OUT;SFP:1101;SCL:1;SRVR:SN2PR03MB2368;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD044;1:/sNAQMytGSAqpcMlJbCg2R85RYrElZJ+GR11rFWG+K7RCf91bkMnRGd43IK43BT1HSVfqi6HO2p7WTCGv19/Qz+gn7RSjRNDfNyFsrJT9hSIh9qtSP7mf/T1tN4/4HBK MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e7a18e10-2c0c-428d-1d6f-08d514c4ccd8 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017052603199)(201703131430075)(201703131517081);SRVR:SN2PR03MB2368; X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2368;3:PW/HcxeF8QwqspK4lYy83rVhVMdBosmUx/lDOpoaaSCQn2A9e+5uB/5nw2v5LQfLnkMAYKCG153bYm5eS3nYIcLy4rrZEB2wYqQa3Dvg6Ny7/SStPVQlOnBeCFR0KACUkNtevK3oG5owXh9EpMB3xK1SAqo2lmea7v5YxFR0UJnkQHGysBF3dtoBtYU6n09oGM0fLXz5yNnaprwrMPKF2XCI1XdyuX4s/Zk1XVViLLTJRJczI3ymQGAFzYDaWoo0EU++EXsUHxCRFshuICDEmK1qpdgKbix16LWh4dCdddvTEUtUdAzykeG/1s0LWDXYJdTIPNpZ0hlRECa11arh3nydA2HCgEuO6WFCcWNinwo=;25:iJtqtpBMKsC3uU81ID2zQ5nLgQCI1hn4TozCDuX23I0oXZAb4YN2efSvZ0ppxqDFkUJ6c4Dik5a0ZzYJE10BLhjwwoHxyVX+0PvUQzaz3E0o/jYm02+kOop902+oUm3X7hFKZsVt/qYsYq8oRMiZR3YLTRX405yE1CMDwgy9TA3vGSrdOweCw1IQ1L1aETsxN9csUFKxOL/DmnJyrO+sKE8CKn4SgV2kvrIhVb4otbdGh41lSzVwVPN24cMU/5HF7X54Lc6GwQoEPw3F+8fQR0K++ViWE+Rc4uLCNDtvFC3+WC8U6g4aRokO97QM480nc84w7bBOXOEebBeh3v9lvg== X-MS-TrafficTypeDiagnostic: SN2PR03MB2368: X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2368;31:auVQv6IPv+ocF9tCsQFYCf+yKEy2xG8nqZSiqS8vqBWfRiukBqHBS9VOr9ZvacXf8/DDUXBy1OIWWJhIdobiaOYrEIUT0W1JRfJTVjuId1w6yYqxoe7eqbJIevmhIOOaFqEoQhxuWwI8Bwi5ewRg3emM3AOCwEq5pj3mUMW5/6RBIb78FNYHFoaikgvFZMuoNuz7Z6vhmrqDfROfiaRzMrqdcaiCqf32+6hWBuuo/1o=;4:LJ+F709ykqcgfpASxbDBIRBsqrz7PQEW6O6Ohzny9a2WrbrWJa5GfW9zWAIYrKM878r+q6RD1T5jpgsmSQdDBZ9tnRz1p5U2IWR59m7f0Qy69ImYUam+0IqXl8d8C8Y/4o/SZ93UZZEO0QZEs087G3loWENx8oZB4UHpwvJApDfG4hBWOJcCjjc9wDsfQ0rtVdQW1hKid8mlu7+KojqIPZMOMbwh13PVoyiwtL+JvrAAwpunTOElEixSwF5/NdjHy45Luma32o2qgllfhqtwn0xHBj6UtdQHhA3a5JjkscA= 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)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6055026)(6096035)(20161123556025)(20161123559100)(20161123565025)(20161123563025)(20161123561025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN2PR03MB2368;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN2PR03MB2368; X-Forefront-PRVS: 0462918D61 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR03MB2368;23:CBb0w0ce5qgOG7fvzxMhqmUc55ndl1YtXjjtnUNSo?= =?us-ascii?Q?1miUa3ecOrMReebGLVVqIMiHTGFQD1Mj92w8+Ue4GZTATuN95IA1P+HEG6q6?= =?us-ascii?Q?2YIspuFbRuatWZ89ns+DAli8eayqvuxuvRYniVdMn8EAGKKVnyL6I+OfCdjj?= =?us-ascii?Q?fnfxR4Q+nLWAC1uQ070RooVAwOF3ZzwBUQkLeacjKLlsHwfr3kJMAMA7RJLC?= =?us-ascii?Q?EVSBTxoAo+5h67iT8pKNcbQai9dk10YuMACy6VlEDJaF7c+bqnMgtAtLcQBO?= =?us-ascii?Q?AVOV0edJ5qQ2uxDzic3idwF8VYIyWMfWL8ERXzE0rFRdgJEOnXe28D75csQ2?= =?us-ascii?Q?QFKnykt16UjMPgIkaouJYi7SKGLRzvKRlH+tNXTfUzEPbFbqeJtD2OylmZx7?= =?us-ascii?Q?KB/VG1y1JO3dJw7rWNfKn5ASAgPVYxcndzNIlm7ENcTu241U4fOnXCUM5zEA?= =?us-ascii?Q?f7a0PiRlSAfLuAoOm5YL1PBkwrWm6ghtaV3VS7TMURIHHvO+zIfZabYhA3cq?= =?us-ascii?Q?Q2jWPFlHuvzQHszANTr8WX/VjGCyAs5J1OnZbP5v3E0kEjf5qxs933hEfJOz?= =?us-ascii?Q?bkB3Okjs7GByTKz3af3T/o72iQdDaddV4UdSwFW1PxWcUg3Iec+FmA2kB44P?= =?us-ascii?Q?esii1evC2nFXH8sw52GwPjQ+tw/prwI69r0gQOoFFxpDq5AKtRxtsrIJtatF?= =?us-ascii?Q?72gC2cAgC4IW1gXMblj4N3KvOePbv57G54/JZEL0NUly8gbIWlu1MnU7EFCV?= =?us-ascii?Q?eYrmhTbh8uqp0KvpwS/4uUzso5FZLvT5EKtgdH/H0CnrVmRDK1lO13sGR5ce?= =?us-ascii?Q?avhJcjp+WTYsKbMzcHHzqz5+6BQCvpzHKMMtSo3j2+ZbQpnZS02rwkomQ6s5?= =?us-ascii?Q?2VrZTGNQT6JXry/WyImjA8bt4d1nWrizciDBI1cBHFbH/lxyFlT4/xVZnuvE?= =?us-ascii?Q?qVhroohTXrttSdvuB6AMb4K+FL3CiCbNkarjQIwmZZyBbUdl0cw+WhPe5ZH4?= =?us-ascii?Q?Gnzvstg2Bz4amFry2EVS2p8hAp4qF9o+uqP16uD5os5/UkO/oX05oLU1je1D?= =?us-ascii?Q?91fiTJ4PKfd22TS9M8unNpSxmrAH7F9ysQhYlPhuErNInjew3MyK07eL2jgu?= =?us-ascii?Q?2On1r3qiolDPfx9SHSVREFEri8E5tXicYB1ENkdcaAwCXsqYI8uKtxYetj06?= =?us-ascii?Q?dgj3SQK1uNiiAw4imD5wic8pElHJ1+6YhHd/s6hJz6n6oAXhDBkMT2371041?= =?us-ascii?Q?TfcpJeEHQ2RiplZcYJfdx7bulvejeTR5LB95flp?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2368;6:sNy7ET8+TLgL1lsO9BBwHRtIrJQZCAKwXDPCUcUxD1LOja66eZjH0BQDrWbkd7/njExTkG+KOT7X5u9ZY600Y1fOfwKq+VHmxXxGl2hw3S4o1yNZ2g9njpWCpJso+kDnYjt13SS1OB7YIER4VDHvl5RByXYXRm9xuHWwUT7OVC5qZz/AjDRLB8AS82MCz6wExK3IYvPnqpDKS5WEdH0Bc0njF+q38dj5Z8JtxcA02aZgQRPPFvj3Wvn1/9ndBr87GL4rnTttXeePNiHnRIfNDRYBNTnXB56x+VI8/CfRoLyR3amTD2NxN6hHtU6pbvdwK45rMjbZKtWXYvtBhIDVBA==;5:it4gjfbyXFSkFvfR2FIBmH07HyRzwlxM7IN9hz8iTFqOUwKhZ4rx5fo0lShfs5kS6tej2tLw0j7wDuCm25loicQzcN0yofiDPDGBvMIbX2l2JqNo+jaQNPLwmWY8UHEnoSMOBUwU7FieGQyb+Pa4bIqvQejkL0fJbJJkDzC3hc8=;24:muy4WNGu7n2KX3GQxbrWtEqmNKgzD5IkdAcgptEBc1C+VqvZPW55g3c5DpSbYBBfqk73eKpkTgzC80ACMflH/6Oj4UHIdhHX1cTE57kLB/Y=;7:E69aPZKAaU3FkART6CfAT+QmnbGWgwIuD/Fp3cgoSB1E3GOJdrh2T90jVwPk1vut/xkVFbhE9NbE7hhtz3q5gW9Fp4riciGT1mR+mZCV8Twe8FE7QnJqa/srZBS9funaYJEWTpxYxqBGjVR2uwidBbmfaYRFJcDDKQ7sPDTj/Fp/YRXiWXweaJSROR3W7/Oepc0/6jmaMS5TI47O1UhhbX7rrA2DVRBsh8KamcbyKAI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2017 18:36:19.9913 (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.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR03MB2368 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