Received: by 2002:ab2:710b:0:b0:1ef:a325:1205 with SMTP id z11csp802404lql; Mon, 11 Mar 2024 19:42:10 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXRi0kjQekmvgzvv9V/mRKMUb4NZRrl1eUxxvg9fG2r+L8Kbc6hFalVOjEAxVgVGTzcfG0FQxGUDjJb+sNG5rCDGwJlShSOs0sRsRWq8Q== X-Google-Smtp-Source: AGHT+IHdZGhy23hCVxfv/1E8V2IHbAQepnPmZYUUkUXjq7++Lp0u2yoAUb7P2ng9tjw34jOqbux1 X-Received: by 2002:ad4:4bad:0:b0:690:d43c:9e56 with SMTP id i13-20020ad44bad000000b00690d43c9e56mr4159242qvw.20.1710211330427; Mon, 11 Mar 2024 19:42:10 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710211330; cv=pass; d=google.com; s=arc-20160816; b=HQ0dfLcKqkNxdK9hH+0S8i4VKUp9JmH7TgL2Ydy7n0ytIrQDsSJtq/x6L83bcROlR9 GXlaLEz6Yxsmj36VOnhv6WBsEfU1Bk5CRUlfRcvwhpcr2JQ+ZCIpMAEsmc5pqehY/vOE FuN63Fbg4jctj08e6n8Vd4ovmWDwtPJW8WwhaW5lMrGa2eVavyuTXOv6QPhrI729lPjz hTXzHME9vwTMLMa597dda1Due0iFRIJ8brqiST20EFtWBjifSf3RrtqJt/hwCQISCYU0 ySyjTRUJWK26eIYLJQZCWvwGMvAqdXv9hAEAsSaJtVUv63hSbObCMQEaYXr6SCegRtig zJcw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id:dkim-signature; bh=ZJTPKj60zcN9dfLjCmksy1GRGg5SNemdWJWV0WcBEcs=; fh=6foQCqHfDcoP6k8ni1IQEVJuh+vRPHTjM8gYyWMCfHQ=; b=Th5a4Kbs4ZS5RM7bo8MhhjOMoHUaBQdUb9wKB5O++THYEw8Xmai/no8u20jbFAnPAe nOf3PEXKWrmvHZQkNR1ercWQDqMoenR0C9DUusLXvLemMnSh5TxKMLcE8szD3j1xUcuA JWdEjnTwzGSfVeAGb0G8JBNta4KtvYsqvgWeC3cMLVu4HLL9EPsuCvCWRLMHvtVWyecD QvMgASqjLUojXZiwNHzT1qck3TzCwrJEN3/gP5ngvwVEk/86YO++Jx/5vFdOHrv4MVUV 3YMd53+d3aOmBFNRWWPZ7xlwgDt5da/WN6z4de0nVpql4tf2FOKTMbRASWDQr6Ab3lI+ s9RQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@arinc9.com header.s=gm1 header.b="ZA5cl/PO"; arc=pass (i=1 spf=pass spfdomain=arinc9.com dkim=pass dkdomain=arinc9.com dmarc=pass fromdomain=arinc9.com); spf=pass (google.com: domain of linux-kernel+bounces-99773-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-99773-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=arinc9.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id jo9-20020a056214500900b00690353442f5si6916084qvb.115.2024.03.11.19.42.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Mar 2024 19:42:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-99773-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@arinc9.com header.s=gm1 header.b="ZA5cl/PO"; arc=pass (i=1 spf=pass spfdomain=arinc9.com dkim=pass dkdomain=arinc9.com dmarc=pass fromdomain=arinc9.com); spf=pass (google.com: domain of linux-kernel+bounces-99773-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-99773-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=arinc9.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0C47A1C214D0 for ; Tue, 12 Mar 2024 02:42:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7F325883C; Tue, 12 Mar 2024 02:41:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=arinc9.com header.i=@arinc9.com header.b="ZA5cl/PO" Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 667E016FF5D; Tue, 12 Mar 2024 02:41:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.193 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710211317; cv=none; b=Qh/iBnrxHAxWOubk9ZDPJB0/7wqAEyz8wYGer3EQhoQ3jLveO21EzHEr80FnChCXqiHPIIHOf6I4BKanw9CtNvycTUMMHCQVGZu1d1Ojv7gGCsEqwErOHUF1snSitSlt43r3jz62CY0/9saIk6koQ7SAa4SQfXhVw6BCcVsTLcQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710211317; c=relaxed/simple; bh=WghVTLJ/pNL9tqJAipEvCZNZRvyB2Rzf2GsLBlWTzSU=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=lXly0gVkrD1vaFA2ykvGacEo8T9r6vBWyvEMk5FeNdtZywF4qOe8x36jM6ACUhCrJzh7zBgtvXy+HhZIqd3JHe+EVNC8DmBWHpOTqHUyyxYIn7jhRnOGp7SDwWCcxJ6rlan7BLVLX7yLckXjNv0YfFZrbiXT4jbBylAseHqAF2Q= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arinc9.com; spf=pass smtp.mailfrom=arinc9.com; dkim=pass (2048-bit key) header.d=arinc9.com header.i=@arinc9.com header.b=ZA5cl/PO; arc=none smtp.client-ip=217.70.183.193 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arinc9.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arinc9.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 35A22240002; Tue, 12 Mar 2024 02:41:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arinc9.com; s=gm1; t=1710211312; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZJTPKj60zcN9dfLjCmksy1GRGg5SNemdWJWV0WcBEcs=; b=ZA5cl/POcCQ8VUi89UNJHBVbi+RfVeT8PJAzEidNYwxJp4Ujd6xmGMh1L0hCOdGqoRWIWW kpw5PRSc0zXebXOS/TYFMEy5siY2Hj6egAbvCjjVp7bo7Im2t0CndNxlYxjXAYI41BXff0 jr1Tf3vdu0MwI1qT6PzEgLsaIsGtBy2/wYddOY0H66VFt3PHe4DmK4livXLhM2BTreOvU4 i88dty58H27aVmyG0+H+nugRJiovZEc77yA5BOjI8F5CHwWxvdHSgAG4OUMnNUOql4U3mo EuypFdicgiPLnsh3yhBH4Eu6aFViQCESPSuOP2VUc7ZrMXlEXd4JGdYcVYo6Qg== Message-ID: <1bfd93f1-36d5-436e-818e-2ebdcf475b44@arinc9.com> Date: Tue, 12 Mar 2024 05:41:35 +0300 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] net: dsa: mt7530: disable LEDs before reset To: Justin Swartz Cc: Daniel Golle , DENG Qingfang , Sean Wang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org References: <20240305043952.21590-1-justin.swartz@risingedge.co.za> <6064ba52-2470-4c56-958c-35632187f148@arinc9.com> Content-Language: en-US From: =?UTF-8?B?QXLEsW7DpyDDnE5BTA==?= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Flag: yes X-Spam-Level: ************************** X-GND-Spam-Score: 400 X-GND-Status: SPAM X-GND-Sasl: arinc.unal@arinc9.com On 12.03.2024 03:07, Justin Swartz wrote: > I took a similar approach, with calls to dev_info() > throughout mt7530_setup() plus mt7530_write(), mt7530_read() > and mt7530_rmw() to get an idea of the flow of execution and > which registers were being manipulated. > > Calls to dev_info() affected timing, so I switched to using > trace_printk() and then read the output from the debugfs's > tracing/trace file instead of from the console. > > I attached a logic analyzer to ESW_P4_LED_0 and ESW_P3_LED_0, > and manually triggered sampling as soon as execution of the > kernel was reported on UART1. > > > -- Test #1 ----------------------------------------------------------- > > For the sake of maximal reproducability, I removed the delay > between the assertion and deassertion of reset and added > HWTRAP value tracing: > > ---%--- > --- a/drivers/net/dsa/mt7530.c > +++ b/drivers/net/dsa/mt7530.c > @@ -2243,7 +2243,6 @@ mt7530_setup(struct dsa_switch *ds) >      */ >     if (priv->mcm) { >         reset_control_assert(priv->rstc); > -        usleep_range(1000, 1100); >         reset_control_deassert(priv->rstc); >     } else { >         gpiod_set_value_cansleep(priv->reset, 0); > @@ -2260,6 +2259,10 @@ mt7530_setup(struct dsa_switch *ds) >         return ret; >     } > > +    static char ht_xtal_fsel[4][6] = { "?????", "20MHz", "40MHz", "25MHz" }; > +    trace_printk("HWTRAP = %x, HT_XTAL_FSEL = %s\n", > +        val, ht_xtal_fsel[(val & HWTRAP_XTAL_MASK) >> 9]); > + >         id = mt7530_read(priv, MT7530_CREV); >         id >>= CHIP_NAME_SHIFT; >         if (id != MT7530_ID) { > ---%--- > > (a) Without a cable connected to Port 3 (lan4) before reset, the > correct external crystal frequency is selected: > >               [3]      [4]     [6] >               :        :       : >               _________         ______________________________________ > ESW_P4_LED_0           |_______| >                         _______ > ESW_P3_LED_0  _________|       |______________________________________ > >                         :     : >                         [5]...: > > [3] Port 4 LED Off. Port 3 LED On. > [4] Signals inverted. (reset_control_assert; reset_control_deassert) > [5] Period of 310 usec. > [6] Signals reflect the bootstrapped configuration. > > > ~ # sed -n -e '$s/^.*\. //p' /sys/kernel/debug/tracing/trace >     2.432646: mt7530_setup: HWTRAP = 7dcf, HT_XTAL_FSEL = 40MHz > > > (b) When a cable attached to an active peer is connected to > Port 3 (lan4) before reset, the incorrect crystal frequency > selection (0b11 = 25MHz) always occurs: > >               [7]      [8]     [10]    [12] >               :        :       :       : >               _________         ______________________________________ > ESW_P4_LED_0           |_______| >               _________         _______ > ESW_P3_LED_0           |_______|       |______________________________ > >                         :     : :     : >                         [9]...: [11]..: > >  [7] Port 4 LED Off. Port 3 LED Off. >  [8] Signals inverted. (reset_control_assert; reset_control_deassert) >  [9] Period of 320 usec. > [10] Signals inverted. > [11] Period of 300 usec. > [12] Signals reflect the bootstrapped configuration. > > ~ # sed -n -e '$s/^.*\. //p' /sys/kernel/debug/tracing/trace >     2.432884: mt7530_setup: HWTRAP = 7fcf, HT_XTAL_FSEL = 25MHz > > > -- Test #2 ----------------------------------------------------------- > > To attempt to determine which transitions are associated > with asserting and deasserting reset, I performed another > test with a delay of what I intended to be a 1 sec period > where the MT7530 is held in reset: > > ---%--- > --- a/drivers/net/dsa/mt7530.c > +++ b/drivers/net/dsa/mt7530.c > @@ -2243,7 +2243,7 @@ mt7530_setup(struct dsa_switch *ds) >      */ >     if (priv->mcm) { >         reset_control_assert(priv->rstc); > -        usleep_range(1000, 1100); > +        usleep_range(1000000, 1000000); >         reset_control_deassert(priv->rstc); >     } else { >         gpiod_set_value_cansleep(priv->reset, 0); > @@ -2260,6 +2260,10 @@ mt7530_setup(struct dsa_switch *ds) >         return ret; >     } > > +    static char ht_xtal_fsel[4][6] = { "?????", "20MHz", "40MHz", "25MHz" }; > +    trace_printk("HWTRAP = %x, HT_XTAL_FSEL = %s\n", > +        val, ht_xtal_fsel[(val & HWTRAP_XTAL_MASK) >> 9]); > + >     id = mt7530_read(priv, MT7530_CREV); >     id >>= CHIP_NAME_SHIFT; >     if (id != MT7530_ID) { > ---%--- > > (a) Without a cable connected to Port 3 (lan4) before reset, the > correct external crystal frequency is again selected: > >               [13]     [14]    [16] >               :        :       : >               _________         ______________________________________ > ESW_P4_LED_0           |_______| >                         _______ > ESW_P3_LED_0  _________|       |______________________________________ > >                         :     : >                         [15]..: > > [13] Port 4 LED Off. Port 3 LED On. > [14] Signals inverted. (reset_control_deassert?) > [15] Period of 310 usec. > [16] Signals reflect the bootstrapped configuration. > > > ~ # sed -n -e '$s/^.*\. //p' /sys/kernel/debug/tracing/trace >     3.437461: mt7530_setup: HWTRAP = 7dcf, HT_XTAL_FSEL = 40MHz > > > No difference is apparent in the timing diagram, compared > to the result from Test #1a, but it is obvious that the code > which follows the reset was executed about 1 second later. > > > (b) With a cable from an active peer connected to Port 3 > (lan4) before reset, the correct crystal frequency > (0b10 = 40MHz) is selected: > >               [17]     [18]                    [20]   [22] >               :        :                       :      : >               ______________________ \ \ ______        _______________ > ESW_P4_LED_0                         / /       |______| >               _________              \ \        ______ > ESW_P3_LED_0           |____________ / / ______|      |_______________ >                                      \ \ >                         :                     : :    : >                         [19]..................: [21].: > > [17] Port 4 LED Off. Port 3 LED Off. > [18] ESW_P3_LED_0 set low. (reset_control_assert?) > [19] Period of 1000.325 msec. > [20] Signals inverted. (reset_control_deassert?) > [21] Period of 310 usec. > [22] Signals reflect the bootstrapped configuration. > > > ~ # sed -n -e '$s/^.*\. //p' /sys/kernel/debug/tracing/trace >     3.433235: mt7530_setup: HWTRAP = 7dcf, HT_XTAL_FSEL = 40MHz > > > So it appears that when reset is deasserted, the ESW_P4_LED_0 > and ESW_P3_LED_0 levels are inverted for a period of about > 300 - 310 usec in Test #1a, #1b, #2a, and #2b. > > Co-incidentally, these inverted levels are the active low > representation of what ends up in HT_XTAL_FSEL. And in all > four examples, have been the inversion of what immediately > preceded reset_control_deassert(). > > > -- Test #3 ----------------------------------------------------------- > > Now it seems that there is a signature that can be used > to identify when reset_control_deassert() is executed, > the time of reset_control_assert()'s execution should be > between (at most) 1100 and (at least) 1000 usec prior > based on the unmodified reset logic. > > So this patch only includes the HT_XTAL_FSEL trace. > > ---%--- > --- a/drivers/net/dsa/mt7530.c > +++ b/drivers/net/dsa/mt7530.c > @@ -2260,6 +2260,10 @@ mt7530_setup(struct dsa_switch *ds) >                 return ret; >         } > > +       static char ht_xtal_fsel[4][6] = { "?????", "20MHz", "40MHz", "25MHz" }; > +       trace_printk("HWTRAP = %x, HT_XTAL_FSEL = %s\n", > +               val, ht_xtal_fsel[(val & HWTRAP_XTAL_MASK) >> 9]); > + >         id = mt7530_read(priv, MT7530_CREV); >         id >>= CHIP_NAME_SHIFT; >         if (id != MT7530_ID) { > ---%--- > > The purpose of the following examples are to show the > variance in how long it takes for ESW_P3_LED_0 to go low. > > (a) With a cable from an active peer connected to Port 3 > (lan4) before reset, the correct crystal frequency > (0b10 = 40MHz) is selected. > >               [23]    [24]       [26]      [28]    [30] >               :       :          :         :       : >               _____________________________         __________________ > ESW_P4_LED_0                               |_______| >               ___________________           _______ > ESW_P3_LED_0                     |_________|       |__________________ > >                        :          :       : :     : >                        :          [27]....: [29]..: >                        [25]...............: > > [23] Port 4 LED Off. Port 3 LED Off. > [24] Approximate point of reset_control_assert? > [25] Period of approximately 1000 - 1100 usec. > [26] ESW_P3_LED_0 finally goes low. > [27] Period of 415 usec. > [28] Signals inverted. (reset_control_deassert?) > [29] Period of 310 usec. > [30] Signals reflect the bootstrapped configuration. > > > (b) With a cable from an active peer connected to Port 3 > (lan4) before reset, the correct crystal frequency > (0b10 = 40MHz) is selected. > >               [31]    [32]            [34] [36]    [38] >               :       :                  : :       : >               _____________________________         __________________ > ESW_P4_LED_0                               |_______| >               ___________________________   _______ > ESW_P3_LED_0                             |_|       |__________________ > >                        :                  : :     : >                        :               [35] [37]..: >                        :                  : >                        [33]...............: > > [31] Port 4 LED Off. Port 3 LED Off. > [32] Approximate point of reset_control_assert? > [33] Period of approximately 1000 - 1100 usec. > [34] ESW_P3_LED_0 finally goes low. > [35] Period of 50 usec. > [36] Signals inverted. (reset_control_deassert?) > [37] Period of 310 usec. > [38] Signals reflect the bootstrapped configuration. > > > (c) With a cable from an active peer connected to Port 3 > (lan4) before reset, an incorrect crystal frequency > (0b11 = 25MHz) is selected. > >               [45]    [46]                 [48]    [50] >               :       :                    :       : >               _____________________________         __________________ > ESW_P4_LED_0                               |_______| >               _____________________________ > ESW_P3_LED_0                               |__________________________ > >                        :                  : :     : >                        :                  : [49]..: >                        :                  : >                        [47]...............: > > [45] Port 4 LED Off. Port 3 LED Off. > [46] Approximate point of reset_control_assert? > [47] Period of approximately 1000 - 1100 usec. > [48] Signals inverted. (reset_control_deassert?) > [49] Period of 315 usec. > [50] Signals reflect the bootstrapped configuration. > > ~ # sed -n -e '$s/^.*\. //p' /sys/kernel/debug/tracing/trace >     2.617819: mt7530_setup: HWTRAP = 7fcf, HT_XTAL_FSEL = 25MHz > > ~ # cat /proc/cmdline > console=ttyS0,57600 loglevel=7 printk.time=1 root=/dev/ram0 debug rdinit=/linuxrc > > > -- End of Tests ------------------------------------------------------ > > It seems that the incorrect crystal frequency is selected more > often when debugging messages are present (such as printk() > based approaches) and especially when loglevel=7 and printk.time=1 > are specified on the command line. > > For the sake of reference: I disabled ethernet support in my build > of (mainline) U-boot, and my kernel configuration is a very lean > selection of options suited for IP routing and a few peripherals > on the I2C and SPI buses. > > My userland is confined to an initramfs built around busybox. > > I also disable gmac1 because I need a few of the rgmii2 pins for > modem control signalling. > > Regards > Justin > > PS: Yes, I only have access to MT7621AT SoCs. Thanks for the detailed presentation. I've simplified it to this, from what I understood. --- Currently ------------------------------------------------------------- With a cable from an active peer connected to Port 3 (lan4) before reset: Test 1, the correct crystal frequency (0b10 = 40MHz) is selected. [1] [2-1] [3] [5] : : : : _____________________________ __________________ ESW_P4_LED_0 |_______| ___________________ _______ ESW_P3_LED_0 |_________| |__________________ : : : : : : [2-2]...: [4]...: [2]................: [1] reset_control_assert. [2] Period of 1000 - 1100 usec. [2-1] ESW_P3_LED_0 goes low. [2-2] Period of 415 usec. [3] reset_control_deassert. [4] Period of 310 usec. HWTRAP register is populated with bootstrapped XTAL frequency. [5] Signals reflect the bootstrapped configuration. Test 2, an incorrect crystal frequency (0b11 = 25MHz) is selected. [2] [4] [6] : : : _____________________________ __________________ ESW_P4_LED_0 |_______| _____________________________ ESW_P3_LED_0 |__________________________ : : : : : : [5]...: : : [3]................: [1] reset_control_assert. [2] Period of 1000 - 1100 usec. [3] reset_control_deassert. [5] Period of 315 usec. HWTRAP register is populated with incorrect XTAL frequency. [6] Signals reflect the bootstrapped configuration. --- 1 second delay between assert and deassert ---------------------------- With a cable from an active peer connected to Port 3 (lan4) before reset, the correct crystal frequency (0b10 = 40MHz) is selected: [1] [2-1] [3] [5] : : : : _____________________________ __________________ ESW_P4_LED_0 |_______| ___________________ _______ ESW_P3_LED_0 |_________| |__________________ : : : : : : [2-2]...: [4]...: [2]................: [1] reset_control_assert. [3] Period of 1000.325 msec. [2-1] ESW_P3_LED_0 goes low. [2-2] Remaining period of 1000.325 msec. [3] reset_control_deassert. [4] Period of 310 usec. HWTRAP register is populated with bootstrapped XTAL frequency. [5] Signals reflect the bootstrapped configuration. --- Wouldn't it be a better idea to increase the delay between reset_control_assert() and reset_control_deassert(), and gpiod_set_value_cansleep(priv->reset, 0) and gpiod_set_value_cansleep(priv->reset, 1) instead of disabling the LED controller and delaying before reset? One MT7531 pin used for an LED is also used to decide the crystal frequency between 40MHz and 25Mhz. We should implement this there as well. Arınç