From patchwork Tue Jan 7 10:36:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?Sm9obnNvbiBDSCBDaGVuICjpmbPmmK3li7Mp?= X-Patchwork-Id: 1218724 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=moxa.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Moxa.onmicrosoft.com header.i=@Moxa.onmicrosoft.com header.b="P+hMrKfI"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47sTMT3WVrz9sRK for ; Tue, 7 Jan 2020 21:36:53 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727836AbgAGKgu (ORCPT ); Tue, 7 Jan 2020 05:36:50 -0500 Received: from mail-eopbgr1300088.outbound.protection.outlook.com ([40.107.130.88]:24357 "EHLO APC01-HK2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727177AbgAGKgt (ORCPT ); Tue, 7 Jan 2020 05:36:49 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PNgWMNmOV48RY33i0Rz+f7NJePhYWBDbLUWlMr0f9Xr8mhJoljzMUu3nwHnfCGY/VVqmRCpvgGXRHks0hDyug0wiwxnupcy+7/NsqclgiNut0T90x0b8CMiKq0VAkt2TaAVv214OUpQuI4Ao8kYJhvG7ykykq639Pwl4T5ey6RPJyUXXrY6qzOFdbi7yYvARztgSQPXDjgcPM6dcQQV9W++sxGp2xMczVhjxtgRW0x61VQYXk6BIt2gXYOp8YQemmxjYvlg8Xp4eqF5ujNQD2xGeTXcCCcWlrdiTUWcjpdA2PhhW2JQdSPl30R353zDDIdsYDg3OYjzopARszgJSzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W0c5/WYGz9G8ArXu0vMPKixciEGA9knY2xxArGqom5E=; b=Su+pXmax4yugu2xH7ZUdkTn8iyIy7LhM9u67CENq6XOZ3hxc+enVGyNITGbYUGBaKuLuPw3ARtG+FcAPNETMG47hon2Tc/Ssvm+10jlwWijzHkpPZN1qCbz6LmxueOvEYmCLmktRiX/HBRMo11qrdOVk01z0OQMvXdd3sZofZdcYi7EYy8KRYDco9TuGKkGQtnwf1GV6m27UDAyNmMBKeCcWHBj5yLUALqI4DtED7V9Q5bmI7XiUv/VeGBJ/NTQf5VgWE2gsWQhdifhOT6fgF6qMuukOJgvxWHX+t+iKZRM2JoubYppJZHPd3WKo06j/WPc/F7uI/NpB/asnzK7Dhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=moxa.com; dmarc=pass action=none header.from=moxa.com; dkim=pass header.d=moxa.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Moxa.onmicrosoft.com; s=selector2-Moxa-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W0c5/WYGz9G8ArXu0vMPKixciEGA9knY2xxArGqom5E=; b=P+hMrKfIGzHM2bl0sipXnob7fuoTpAzpEdMok9aK0nE6eYgpE/UpH6WDLIAPks/NpZz/urgiRrZH+a2BmHhztdqW5D01dj6siWjum0XRbGHecRXLCFRzipTPVcC80vSp6dSUFwa5gmUhYcLHeheTU05D+bdgDhmXUl1Y30w259Y= Received: from HK0PR01MB3521.apcprd01.prod.exchangelabs.com (52.132.237.22) by HK0PR01MB2961.apcprd01.prod.exchangelabs.com (20.177.161.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2602.15; Tue, 7 Jan 2020 10:36:32 +0000 Received: from HK0PR01MB3521.apcprd01.prod.exchangelabs.com ([fe80::3433:35cd:2be4:d042]) by HK0PR01MB3521.apcprd01.prod.exchangelabs.com ([fe80::3433:35cd:2be4:d042%6]) with mapi id 15.20.2602.016; Tue, 7 Jan 2020 10:36:32 +0000 From: =?utf-8?b?Sm9obnNvbiBDSCBDaGVuICjpmbPmmK3li7Mp?= To: "claudiu.manoil@nxp.com" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: =?utf-8?b?Sm9obnNvbiBDSCBDaGVuICjpmbPmmK3li7Mp?= , "zero19850401@gmail.com" Subject: [PATCH] gianfar: Solve ethernet TX/RX problems for ls1021a Thread-Topic: [PATCH] gianfar: Solve ethernet TX/RX problems for ls1021a Thread-Index: AdXFRAcg+ooT8TPrTsG92JEuKMTbqw== Date: Tue, 7 Jan 2020 10:36:32 +0000 Message-ID: Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=JohnsonCH.Chen@moxa.com; x-originating-ip: [122.146.92.136] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4a8d7325-7540-4fcc-ddc1-08d7935d76a8 x-ms-traffictypediagnostic: HK0PR01MB2961: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 027578BB13 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(376002)(396003)(136003)(366004)(39850400004)(189003)(199004)(2906002)(85182001)(478600001)(33656002)(9686003)(186003)(55016002)(7696005)(6506007)(66946007)(66556008)(66446008)(26005)(66476007)(76116006)(64756008)(4326008)(316002)(54906003)(110136005)(81166006)(8676002)(8936002)(52536014)(71200400001)(81156014)(5660300002)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:HK0PR01MB2961; H:HK0PR01MB3521.apcprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: moxa.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: spfxqYrnaT5I1oISQPnXR7/aI2xgkRezDd864+PvYIwsOJPlC8i/wsUV3zYRdRBSZUR7YfpvpWc7Tz8Sr7vHdeDct0H4ae0ZthMNhf5XEfBUV59ReT8R5ym3O7ogP2gmzP25BxfAS+SzYZWreu75ZPqeQsbaUd9GhF9wZacgGZYZoIdY3xS/l4U23tQTWJgfU2lAfcXizEXrdZGIHRxs0/d4syTG1kLEKpe1IJQb/TEfCWCDh/Ap6CPjCXi0yVwaEkOhukVgesd/zyQdHW0K82q/M3Wb+ldUVm/eclUNb3QiNVVsgq4be/OVWcuN2XS8d9edD/uLAcZHcr+3RqqgPNDUTskT3QHhOyeU7KgbUKl0cYqCfjx0h6Lea+0r+hyDh9gf/3xfBu+PIMZJDPtNkIoX5kT6l4viF026gXN4ZIT3h6qahWAGSUwVaG+8YXVM MIME-Version: 1.0 X-OriginatorOrg: moxa.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4a8d7325-7540-4fcc-ddc1-08d7935d76a8 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jan 2020 10:36:32.7125 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5571c7d4-286b-47f6-9dd5-0aa688773c8e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Sd4RddkRX8+7OxEMb8Ty5ZKVRQJBiAxDgX/QWDzRDa5BbgPseExZ4YGhp1mAXpBk29+lnZ/BvUdp2JlzctqcYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0PR01MB2961 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add dma_endian_le to solve ethernet TX/RX problems for freescale ls1021a. Without this, it will result in rx-busy-errors by ethtool, and transmit queue timeout in ls1021a's platforms. Signed-off-by: Johnson Chen --- drivers/net/ethernet/freescale/gianfar.c | 3 +++ drivers/net/ethernet/freescale/gianfar.h | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c index 72868a28b621..ab4e45199df9 100644 --- a/drivers/net/ethernet/freescale/gianfar.c +++ b/drivers/net/ethernet/freescale/gianfar.c @@ -833,6 +833,7 @@ static int gfar_of_init(struct platform_device *ofdev, struct net_device **pdev) /* Find the TBI PHY. If it's not there, we don't support SGMII */ priv->tbi_node = of_parse_phandle(np, "tbi-handle", 0); + priv->dma_endian_le = of_property_read_bool(np, "fsl,dma-endian-le"); return 0; @@ -1209,6 +1210,8 @@ static void gfar_start(struct gfar_private *priv) /* Initialize DMACTRL to have WWR and WOP */ tempval = gfar_read(®s->dmactrl); tempval |= DMACTRL_INIT_SETTINGS; + if (priv->dma_endian_le) + tempval |= DMACTRL_LE; gfar_write(®s->dmactrl, tempval); /* Make sure we aren't stopped */ diff --git a/drivers/net/ethernet/freescale/gianfar.h b/drivers/net/ethernet/freescale/gianfar.h index 432c6a818ae5..aae07db5206b 100644 --- a/drivers/net/ethernet/freescale/gianfar.h +++ b/drivers/net/ethernet/freescale/gianfar.h @@ -215,6 +215,7 @@ extern const char gfar_driver_version[]; #define DMACTRL_INIT_SETTINGS 0x000000c3 #define DMACTRL_GRS 0x00000010 #define DMACTRL_GTS 0x00000008 +#define DMACTRL_LE 0x00008000 #define TSTAT_CLEAR_THALT_ALL 0xFF000000 #define TSTAT_CLEAR_THALT 0x80000000 @@ -1140,6 +1141,9 @@ struct gfar_private { tx_pause_en:1, rx_pause_en:1; + /* little endian dma buffer and descriptor host interface */ + unsigned int dma_endian_le; + /* The total tx and rx ring size for the enabled queues */ unsigned int total_tx_ring_size; unsigned int total_rx_ring_size;