From patchwork Wed Mar 30 09:07:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 1610995 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20210112.gappssmtp.com header.i=@monstr-eu.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=PEWH4IPk; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KT0x60ZlDz9sCq for ; Wed, 30 Mar 2022 20:09:14 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 5C463840AA; Wed, 30 Mar 2022 11:08:30 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=xilinx.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20210112.gappssmtp.com header.i=@monstr-eu.20210112.gappssmtp.com header.b="PEWH4IPk"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E9C658405A; Wed, 30 Mar 2022 11:08:13 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id A4A0384098 for ; Wed, 30 Mar 2022 11:08:10 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=xilinx.com Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=monstr@monstr.eu Received: by mail-wr1-x42e.google.com with SMTP id m30so28308882wrb.1 for ; Wed, 30 Mar 2022 02:08:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20210112.gappssmtp.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1FEQZcyVLjquAeFVAX/RulMWdsShMflhxdvSz6OtiYM=; b=PEWH4IPkxpfJ+at1YJsmbhFfQHjOzarIXuZhw7r9PCG1mQqtnUoy6JHVqbNKPy6os6 XZa1vONa6Qh6rxNE/+jduC0niEobd1zu8E8MSTBGHZ7//W5l4xkNxfZWBfLPsoMTp5z/ zflxhxr3+YjiwKs5asfUk0E3fJRNdShA2t9kPjDGx222Hwu9w0qQ3/ST6689WG8iM2nB 9WvhXHSYqa/R+dbp0fiXyOH6JFgxox1B8OOWKVokw3u91MnycCpSLoOQKiooExptQcUc Y6IUFH/OZhC9XbrVxccK+2d5dIAWzqTU9c2LdvNwe8eqCcqF545Zh1I8mRO9Yz4g6ix6 VR6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=1FEQZcyVLjquAeFVAX/RulMWdsShMflhxdvSz6OtiYM=; b=yqnP9f4zs0IvY50ctqKLLQYTrM2WrBemI1u9PrU/FKhzgcAvRzNK+B+u6jry4ZMGbj rHkGWcLlb2/4Aamm39knlXuUcKKg5+ht+EG6X3j9FceDeRLfsgwLxXMgizznG3vRT7fA hu7bkCAqLlA+vmz1++xzlMC9RalXDUNqG1EwHAIJ2j1sXhxdtRF7PEwbjBUcYDa+qZT0 fhO84KhkE3NcGTpwz3y6f3bBOlU4OEmiShp/pw4CCMk+zBi0X5KY6qZu9Xe49iGCldAr Nv3W7fGuxaEo+DCS4fcC0x8Im9CJ9YMG1awWxXS5RSeQQEX3Ms6Xcv7SBFedO+2DmlPy fTSg== X-Gm-Message-State: AOAM531UtI3AGX6Q41Y2syQU9ZRFlzgoSN9IB7xxmHhdjxNW6NszLEOW KwuOAERyogL9DCkk+/pQa/bRkIBBdWyABw== X-Google-Smtp-Source: ABdhPJyLwSBNwcrT5F1PFrhkCIdGSflRVLjRBABc9hRvJAPJq6thUnwmnMWcfud3isLMuyo6guGQZQ== X-Received: by 2002:adf:f9c9:0:b0:205:7ba0:121b with SMTP id w9-20020adff9c9000000b002057ba0121bmr35002616wrr.599.1648631290091; Wed, 30 Mar 2022 02:08:10 -0700 (PDT) Received: from localhost ([2a02:768:2307:40d6::f9e]) by smtp.gmail.com with ESMTPSA id g7-20020a5d64e7000000b00204a13925dcsm17774521wri.11.2022.03.30.02.08.09 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 30 Mar 2022 02:08:09 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, git@xilinx.com Cc: T Karthik Reddy , Joe Hershberger , Ramon Fried Subject: [PATCH 6/6] net: zynq_gem: Add SGMII dynamic config support Date: Wed, 30 Mar 2022 11:07:58 +0200 Message-Id: X-Mailer: git-send-email 2.35.1 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean From: T Karthik Reddy Add support for SGMII dynamic configuration which will takes care of configuring SGMII in the GEM secure (GEM_CLK_CTRL) configuration register. Signed-off-by: T Karthik Reddy Signed-off-by: Michal Simek --- drivers/net/zynq_gem.c | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c index 07de1bf0a40e..4c83ccc1dfbc 100644 --- a/drivers/net/zynq_gem.c +++ b/drivers/net/zynq_gem.c @@ -34,6 +34,7 @@ #include #include #include +#include /* Bit/mask specification */ #define ZYNQ_GEM_PHYMNTNC_OP_MASK 0x40020000 /* operation mask bits */ @@ -714,6 +715,40 @@ static int zynq_gem_reset_init(struct udevice *dev) return 0; } +static int gem_zynqmp_set_dynamic_config(struct udevice *dev) +{ + u32 pm_info[2]; + int ret; + + if (IS_ENABLED(CONFIG_ARCH_ZYNQMP)) { + if (!zynqmp_pm_is_function_supported(PM_IOCTL, + IOCTL_SET_GEM_CONFIG)) { + ret = ofnode_read_u32_array(dev_ofnode(dev), + "power-domains", + pm_info, + ARRAY_SIZE(pm_info)); + if (ret) { + dev_err(dev, + "Failed to read power-domains info\n"); + return ret; + } + + ret = zynqmp_pm_set_gem_config(pm_info[1], + GEM_CONFIG_FIXED, 0); + if (ret) + return ret; + + ret = zynqmp_pm_set_gem_config(pm_info[1], + GEM_CONFIG_SGMII_MODE, + 1); + if (ret) + return ret; + } + } + + return 0; +} + static int zynq_gem_probe(struct udevice *dev) { void *bd_space; @@ -797,6 +832,17 @@ static int zynq_gem_probe(struct udevice *dev) goto err3; if (priv->interface == PHY_INTERFACE_MODE_SGMII && phy.dev) { + if (IS_ENABLED(CONFIG_DM_ETH_PHY)) { + if (device_is_compatible(dev, "cdns,zynqmp-gem")) { + ret = gem_zynqmp_set_dynamic_config(dev); + if (ret) { + dev_err + (dev, + "Failed to set gem dynamic config\n"); + return ret; + } + } + } ret = generic_phy_power_on(&phy); if (ret) return ret;