From patchwork Wed Jul 3 09:46:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ye Li X-Patchwork-Id: 1126791 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="eSmnIf8a"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45dxGj2Ctkz9s4V for ; Wed, 3 Jul 2019 19:52:13 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 9545EC21D56; Wed, 3 Jul 2019 09:52:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id C1B2FC21E0F; Wed, 3 Jul 2019 09:47:12 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 35C77C21DFB; Wed, 3 Jul 2019 09:47:10 +0000 (UTC) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00054.outbound.protection.outlook.com [40.107.0.54]) by lists.denx.de (Postfix) with ESMTPS id 1643AC21C38 for ; Wed, 3 Jul 2019 09:46:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=auAMtsM0PKrdXepjOYdqswosxYXoRbd61kwNF1EBgBo=; b=eSmnIf8alyy0hHY2jK/MIWx4LYIsTJi8cIGWhv6tmFJ1IgMsyy8yeQDEySELG9KtkBTnqa00dghMijJ50Ky3LSHS0AEUQeQ3Cju9Vnyf6KB9ysg48Cj/IL6I7MMcNPpRc6XZygDLXndLrn2yl+AyMljBKjvjPPuMUElH+xKRnX4= Received: from VI1PR04MB4414.eurprd04.prod.outlook.com (20.177.55.153) by VI1PR04MB5246.eurprd04.prod.outlook.com (20.177.51.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2052.17; Wed, 3 Jul 2019 09:46:51 +0000 Received: from VI1PR04MB4414.eurprd04.prod.outlook.com ([fe80::6517:7774:1033:6466]) by VI1PR04MB4414.eurprd04.prod.outlook.com ([fe80::6517:7774:1033:6466%7]) with mapi id 15.20.2032.019; Wed, 3 Jul 2019 09:46:51 +0000 From: Ye Li To: "sbabic@denx.de" , Fabio Estevam , Peng Fan Thread-Topic: [PATCH v2 5/7] net: fec_mxc: Update driver to use full clks for iMX8 Thread-Index: AQHVMYQ33UBXoKoXSkijd7lEpHZdLw== Date: Wed, 3 Jul 2019 09:46:41 +0000 Message-ID: <1562147167-27330-5-git-send-email-ye.li@nxp.com> References: <1562147167-27330-1-git-send-email-ye.li@nxp.com> In-Reply-To: <1562147167-27330-1-git-send-email-ye.li@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.7.4 x-clientproxiedby: HK0PR03CA0021.apcprd03.prod.outlook.com (2603:1096:203:2e::33) To VI1PR04MB4414.eurprd04.prod.outlook.com (2603:10a6:803:6e::25) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ye.li@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [119.31.174.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 76ed2bcd-61bc-4043-530f-08d6ff9b59a2 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:VI1PR04MB5246; x-ms-traffictypediagnostic: VI1PR04MB5246: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1186; x-forefront-prvs: 00872B689F x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(396003)(366004)(346002)(136003)(39860400002)(376002)(199004)(189003)(76176011)(71190400001)(6666004)(52116002)(71200400001)(6436002)(2501003)(7736002)(305945005)(186003)(81166006)(81156014)(102836004)(386003)(6506007)(8936002)(26005)(99286004)(53936002)(36756003)(6512007)(14454004)(44832011)(6486002)(8676002)(15650500001)(2906002)(11346002)(2616005)(476003)(446003)(25786009)(4326008)(486006)(66066001)(14444005)(256004)(478600001)(6636002)(6116002)(3846002)(5660300002)(73956011)(66946007)(86362001)(68736007)(316002)(110136005)(54906003)(66476007)(66556008)(64756008)(66446008)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB5246; H:VI1PR04MB4414.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Ci10RDRWYe50aMijzJqJMYDhT0J2vaUz9kpPLmrdkgFBbQS5ocGcpxnR0X+BqduEX4ruTv9vYJix/7lZnFz0hSDIsFE1GC7k+STVSAEyvFmUsvmT23E406n9Vg07w+sBYNjy6NlJOGbRxfrYdPk1ShHmb2vG5XbHqOHfa0v6EQfFmVSRoRlWnBV4h1Tbjf+ID0F5u8M8/5FsTaCFb+AhQKxfTpPGxjPHwNpdrBX/E/XVz21fs/UYdK+ogHACoyoB7mHE8NmrP33zxBCPvrQ8iKDUUgbDGFjMkMOJ/AcLtMmcN4VYcdGxkTLudGuWI4RTTLlOkh/KGPPurEav/CmSEHn8vfbc9gPXNscobI0OkiL95UkbKNLBj0HyTJi6E/2rV80LusvKor31zucxt/v7P2d++Thjf9ydjQBGajgb7C8= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76ed2bcd-61bc-4043-530f-08d6ff9b59a2 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jul 2019 09:46:41.3495 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ye.li@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5246 Cc: "u-boot@lists.denx.de" , dl-uboot-imx Subject: [U-Boot] [PATCH v2 5/7] net: fec_mxc: Update driver to use full clks for iMX8 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add support for more clocks used by iMX8 from DTB: ref_clock, tx_2x_clock, ahb_clock And update get clock rate interface to support multiple fec ports. Signed-off-by: Ye Li --- Changes in v2: - None drivers/net/fec_mxc.c | 47 ++++++++++++++++++++++++++++++++++++++--------- drivers/net/fec_mxc.h | 1 + 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index d7c0809..6d485f1 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -6,7 +6,6 @@ * (C) Copyright 2007 Pengutronix, Sascha Hauer * (C) Copyright 2007 Pengutronix, Juergen Beisert */ - #include #include #include @@ -132,9 +131,9 @@ static int fec_get_clk_rate(void *udev, int idx) dev = udev; if (!dev) { - ret = uclass_get_device(UCLASS_ETH, idx, &dev); + ret = uclass_get_device_by_seq(UCLASS_ETH, idx, &dev); if (ret < 0) { - debug("Can't get FEC udev: %d\n", ret); + debug("Can't get FEC udev%d: %d\n", idx, ret); return ret; } } @@ -149,7 +148,7 @@ static int fec_get_clk_rate(void *udev, int idx) #endif } -static void fec_mii_setspeed(struct ethernet_regs *eth) +static void fec_mii_setspeed(struct ethernet_regs *eth, int idx) { /* * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock @@ -171,7 +170,7 @@ static void fec_mii_setspeed(struct ethernet_regs *eth) u32 hold; int ret; - ret = fec_get_clk_rate(NULL, 0); + ret = fec_get_clk_rate(NULL, idx); if (ret < 0) { printf("Can't find FEC0 clk rate: %d\n", ret); return; @@ -593,7 +592,7 @@ static int fec_init(struct eth_device *dev, bd_t *bd) fec_reg_setup(fec); if (fec->xcv_type != SEVENWIRE) - fec_mii_setspeed(fec->bus->priv); + fec_mii_setspeed(fec->bus->priv, fec->dev_id); /* Set Opcode/Pause Duration Register */ writel(0x00010020, &fec->eth->op_pause); /* FIXME 0xffff0020; */ @@ -1073,7 +1072,7 @@ struct mii_dev *fec_get_miibus(ulong base_addr, int dev_id) free(bus); return NULL; } - fec_mii_setspeed(eth); + fec_mii_setspeed(eth, dev_id); return bus; } @@ -1142,7 +1141,7 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, fec_set_dev_name(edev->name, dev_id); fec->dev_id = (dev_id == -1) ? 0 : dev_id; fec->bus = bus; - fec_mii_setspeed(bus->priv); + fec_mii_setspeed(bus->priv, fec->dev_id); #ifdef CONFIG_PHYLIB fec->phydev = phydev; phy_connect_dev(phydev, edev); @@ -1324,6 +1323,7 @@ static int fecmxc_probe(struct udevice *dev) int ret; if (IS_ENABLED(CONFIG_IMX8)) { + struct clk ref_clk, clk_2x_txclk; ret = clk_get_by_name(dev, "ipg", &priv->ipg_clk); if (ret < 0) { debug("Can't get FEC ipg clk: %d\n", ret); @@ -1335,6 +1335,35 @@ static int fecmxc_probe(struct udevice *dev) return ret; } + ret = clk_get_by_name(dev, "ahb", &priv->ahb_clk); + if (ret < 0) { + debug("Can't get FEC ahb clk: %d\n", ret); + return ret; + } + ret = clk_enable(&priv->ahb_clk); + if (ret < 0) { + debug("Can't enable FEC ahb clk: %d\n", ret); + return ret; + } + + ret = clk_get_by_name(dev, "enet_clk_ref", &ref_clk); + if (ret >= 0) { + ret = clk_enable(&ref_clk); + if (ret < 0) { + debug("Can't enable FEC ref clk: %d\n", ret); + return ret; + } + } + + ret = clk_get_by_name(dev, "enet_2x_txclk", &clk_2x_txclk); + if (ret >= 0) { + ret = clk_enable(&clk_2x_txclk); + if (ret < 0) { + debug("Can't enable FEC 2x_tx clk: %d\n", ret); + return ret; + } + } + priv->clk_rate = clk_get_rate(&priv->ipg_clk); } @@ -1368,7 +1397,6 @@ static int fecmxc_probe(struct udevice *dev) } fec_reg_setup(priv); - priv->dev_id = dev->seq; #ifdef CONFIG_FEC_MXC_MDIO_BASE bus = fec_get_miibus((ulong)CONFIG_FEC_MXC_MDIO_BASE, dev->seq); @@ -1492,6 +1520,7 @@ static const struct udevice_id fecmxc_ids[] = { { .compatible = "fsl,imx53-fec" }, { .compatible = "fsl,imx7d-fec" }, { .compatible = "fsl,mvf600-fec" }, + { .compatible = "fsl,imx8qm-fec" }, { } }; diff --git a/drivers/net/fec_mxc.h b/drivers/net/fec_mxc.h index e5f2dd7..23180a6 100644 --- a/drivers/net/fec_mxc.h +++ b/drivers/net/fec_mxc.h @@ -264,6 +264,7 @@ struct fec_priv { u32 interface; #endif struct clk ipg_clk; + struct clk ahb_clk; u32 clk_rate; };