From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932356AbdJJOLf (ORCPT ); Tue, 10 Oct 2017 10:11:35 -0400 Received: from mail-by2nam03on0057.outbound.protection.outlook.com ([104.47.42.57]:29968 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932286AbdJJOKc (ORCPT ); Tue, 10 Oct 2017 10:10:32 -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 3/4] dpaa_eth: change device used Date: Tue, 10 Oct 2017 17:10:17 +0300 Message-ID: <1507644618-32006-4-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1507644618-32006-1-git-send-email-madalin.bucur@nxp.com> References: <1507644618-32006-1-git-send-email-madalin.bucur@nxp.com> Reply-To: X-EOPAttributedMessage: 0 X-Matching-Connectors: 131521182310582211;(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)(336005)(376002)(39860400002)(346002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(498600001)(4326008)(16586007)(76176999)(50986999)(39060400002)(189998001)(5660300001)(110136005)(43066003)(54906003)(50226002)(33646002)(106466001)(105606002)(97736004)(68736007)(48376002)(50466002)(8936002)(5003940100001)(104016004)(305945005)(8676002)(36756003)(3450700001)(81156014)(81166006)(69596002)(356003)(77096006)(2950100002)(85426001)(316002)(6666003)(2906002)(53936002)(575784001)(47776003)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR03MB2359;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11OLC010;1:34N5VSyuE4Dks1AhUs58VT2OP6KLhb1ooYeQ6LrazFgVVgmLolgA/K6fTKRdbtJbNzQWMG/Y30PMPwBowH3Xsr2/TeLSGU1RF+BA75EZjIQYjjiJjNgntAcFClxHGaI0 MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 116c46b7-bc03-4950-c7c3-08d50fe8aa86 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017052603199)(201703131430075)(201703131517081);SRVR:CO2PR03MB2359; X-Microsoft-Exchange-Diagnostics: 1;CO2PR03MB2359;3:2hOZqUlylL0Z8xBcD4IhRFLxzid3l6GSTGDaP2HNJXZN+LZeZM06jH62k7xNiz2nZ0q803fXye/hT3mD7MjF+PjuiCqdcyuesfgOQ5BJjIpMZI4HKNZ8oE+3LEfBbRrOA7Jdi3Q63zJPxhq6ZkNcGQkXBdMZpr1BvaYVv4sPWc8hO9gUPVQ4E1mUpk8j8jIR/JYPOf5BBrJI9ZIwLuY9iO0O0eqP08ejKrWQvRNgInRr3hJ0yxR+S8keARXdwogq8TOVRr9Kt0R6BdZLGJx0A+Uy3td5cFngC6aYgtdESIvTYt8Cgk5YUCE+BtlKgqG7qrlg+3HI7JDljsMtAhi872/TvTzGIZHbwObvWVyl104=;25:E3Vg8YXH/fpFAaw/OUgQULUzYY6UgD75JVk8PUMLSjKATOjMPhQKIAmF6114wZew0KxPeDnN+Q0Jp/j6AfkHadDPfNlamrtKzJM5uzVoS5uwbF2KnRVpLnQGs9vBUzmEriAlCZa8oqV7/pnaztghvejYP+FM1beTurjlPUAxSs0pOuHYpwRaCNUoVzyjMYk4XCrTIWFYXyK3uElp6/kUl87mGg/lOruH7f14YhduOjLujKulMqcVKhlGwJDn5n9MZpysAIbLVHlD+N2ITIsGi/flZKBYXKhJJHS5H7ARbt8xnhEjmamEXq8zRqwG1FIO7wfWWgytDFhJ4eN6v5qFqw== X-MS-TrafficTypeDiagnostic: CO2PR03MB2359: X-Microsoft-Exchange-Diagnostics: 1;CO2PR03MB2359;31:TjfEt8F1Mkv2HKzqGNR4jQLDFEfkJqDczHDrt2AoJS8I9oQpNtKdrag9MRFdf0/vfTznyp9pRpCygA8NHgOtc3q4myel5HDXl9gwsWcWBVYwmpWBU8/PCzX8jt0dHl30FB9j+k949ZDOynXftVOrLQRrbG1J1voOU78IkRNEzB7eQe5iyuR+mZUNwZPStMdvSOeRvJixpLZZuIU1eiglH8ZY71SvGpdP7IEHo0kz+Co=;4:3YUNpRc9ZeKn889SXcLmO/n5qriqImQvSSoU0WGTeeX5Abb9eoRypVJglkUwwVlUTn1BtpS7qgdpY8AWTnaA5rBWyvlYkfHC2R953vlC8AKnbk6NUnD8EJHa6/tZpTCYYxrPXSLA974PViNYLFSUELk1FxgeUcHbSuaSVlEaPU1EIEGdkR0ZG3doi/bMNZXeONt/9z4lTmhO3e2kmBQYQo1YLjGQR9QzHgTM3dcRA9Q760GNbgnpFBh5a2us0oDT70vHw4ugdvvop/+AlVX124u5zB+ECTJGpop2efg+fEk= 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)(5005006)(8121501046)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(3002001)(6055026)(6096035)(20161123556025)(20161123565025)(20161123559100)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123563025)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CO2PR03MB2359;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CO2PR03MB2359; X-Forefront-PRVS: 04569283F9 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO2PR03MB2359;23:tIey8JyCw6LQOdTLM0Sz3Qfi6nGMFCkzZV3o2JiFj?= =?us-ascii?Q?mH9CMsgaZ2itjORL3ePnbcUBTjlrIvOUhsL9nv43/pnduwq8GrVoUzYQw4XE?= =?us-ascii?Q?GgCDzskgFKv9NN6pReiowVYZvylZT9NmlrpY6h+beUp3MVyuSa+qFmpfa6lg?= =?us-ascii?Q?sP+zeN6SzCQMutL+vmbN9halZyx84s35W/rAlLfa9AOnOVrGMfX67Ts0FAu5?= =?us-ascii?Q?PMWRXq4minpav/7K4/0idi3QsUNToKOoMH/AhA/xuHkUERQpn47nHMUNzakw?= =?us-ascii?Q?5ytk/APeAGRMkjuMo2K3TBYsbxx5E9zUb56QU8+TIvMx11KWrSUYAP4jF/Ko?= =?us-ascii?Q?uRC9gUaU/1pbAJj/sRMP+W3xl6iR9fgHcenvCObLMQF2YZ+78WzkykZqZpPP?= =?us-ascii?Q?P9tXLDNY/okkdU807NMk0NOEMCyRE7Slkm+37WLy7Ox33u0JR1fJni76aGmJ?= =?us-ascii?Q?j5vw0MsZgVnmG2kPriymsegbcXyAZ6P3U+4qf01NW5Awtbcw8oAoTTscLqbe?= =?us-ascii?Q?An2rFoTOaZjrydachdwYUgk4kKQ2Dq8zLNG/Rp4s55BXLyhQIUumjyDbgVUt?= =?us-ascii?Q?Ypmm/6GeTooJcl5cXyuG+qkT5GyqmcghQJ9YafRA1md2IhwIkUSWdCgM45G8?= =?us-ascii?Q?2X8kWdrY8UvGWbHKpbbWW1xOfVAxOcV+5MKsQ6gJF7WaIiMRhwkwclBU1kpW?= =?us-ascii?Q?f6hqNFMphSh/3MafCIDvSujXYIxzokKb/PB7m8k6RK/AkJ/njt6akj3x0xdN?= =?us-ascii?Q?Sqn59XX3NH4nRJKLz5Hsh//95g75xCduIDbUcD9kNo/Koe8rPNJISVLjvLr1?= =?us-ascii?Q?jJn3hh7ycm28yYn+Ozxwd5v0EfFJYT6GYMYjJAUssFJDOzbuMBCcdYZsbfvO?= =?us-ascii?Q?k2s2a9W1GNrpvTqFAHPEWFRJzxN7zRZNzJozd+W+ewwWjwClnauuAS+QxFI+?= =?us-ascii?Q?9f6R4xLZPye/G7fTYo3h+JFAj/rESLHrU5/5Sx/VgosJ7/cTLPhpE75GiDKZ?= =?us-ascii?Q?YRS9N9m6Ks+2MysIVkREB9zvm3mybPm/WJXZlmssQ5i/Pch+V81FnfNcYvtE?= =?us-ascii?Q?bsdEuca3+nOx4jxgSJmwPCluiAxrUg816IzaQ2s68ENHSyiF7Xzk8c/T4xDM?= =?us-ascii?Q?7rBmLI9eT3c3eI0/9VuxGYmKjo4sP9QYXalGEEfuf2/rZCJWsSgyVuPab4nx?= =?us-ascii?Q?DulRTsIdvYwYgzhzhy3xSQp9IgvCPzZyA2JqDdC04B+NaT/ae3eiKmoY5WJH?= =?us-ascii?Q?q5+4qdlqsaqryYcPDg=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR03MB2359;6:SBdviwtxi1yxMu0NnTc/+dRoz5yc7ma0RJOtzlmDster9M7xYE+s0WjELir1infzdK+E/ArYowO/47GdFpyHfHsACt2Xt6cwJA9li3sQqrjzQLNaZj0xJsTYXxwR+ivMKonMg8luVsgxDT1eQ9pjuZI6XVQpEvx2s7SSrsrGSyAh8UypRyNV4gJ3/nzS73O+CBT6UYTz80NX/igzlwHaGO+kX7gacMFnkh2sQHNWPpf6cXRkovKAO9x3urkybxv0pMBxrDCKbKQmeGO694q/iRbdeUAqMpNN9AA4dF4QDtm5TJBl2WFVUNNJ+9YOWkLdnOnE/ZyqqMdseF5WiwA9AQ==;5:/c9A3jCkEBpbDu6Uv1jz0qnFA9khj3gyn9jMKuvS+3YQz727EC9z8Rbhi9zVhbTEcGXAI6URqv4ogSFtpq7x2FgiohDTZusZwCMWIyN5l4m3Vg2oZPdHeausDODsSZrh/oN5jMfEc0LcTDLKVcGvdd6rTN24D9jPYYoOKmUXUuk=;24:MQ/J11pAq85CG52CzTGTIx0xNWVkDlQec1ZdiTD5Z4Oz3GyK8beD+d5tD7Tkz3KyQgEHpnN2HeoEuI0DkdkuXbtaeLIc7ZtNfbQK6cjCLB0=;7:puCDJU3yGa+nX3iod3cQ/ZbCGh4/l8KI9e0j3iM6AMTNyzHZdDY0Tqy2avTBj3wjK2qSMTUl9hW/IomdBuaQ+bNCa5MEcDxTYgmhgFYycdp4StR6vNvlbvpvPvCdW2Tm9ehARooKeaPyVx0K9ZJt5L8QJqEzMpUAt0FrylZnfZJw9qaxnCJvf3rUbmxMRCfDWUoIrLXJiNPmnrQfqVBX6gq7us1/wFQOtd/JxYKzmBM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2017 14:10:30.8398 (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: CO2PR03MB2359 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 | 41 ++++++++------------------ drivers/net/ethernet/freescale/fman/mac.c | 37 ++++++++++------------- drivers/net/ethernet/freescale/fman/mac.h | 1 - 3 files changed, 27 insertions(+), 52 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index 7cf61d6..428ef2b 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"); + goto dev_mask_failed; + } /* 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; 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