linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Christian Eggers <ceggers@arri.de>
Cc: "Stefan Riedmüller" <S.Riedmueller@phytec.de>,
	"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
	"han.xu@nxp.com" <han.xu@nxp.com>,
	"michael@amarulasolutions.com" <michael@amarulasolutions.com>,
	"Christian Hemp" <C.Hemp@phytec.de>,
	"gerg@kernel.org" <gerg@kernel.org>,
	"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>
Subject: Re: GPMI iMX6ull timeout on DMA
Date: Fri, 8 Oct 2021 15:36:31 +0200	[thread overview]
Message-ID: <20211008153631.3f1a09aa@xps13> (raw)
In-Reply-To: <20211008152905.2fbdcce9@xps13>


miquel.raynal@bootlin.com wrote on Fri, 8 Oct 2021 15:29:05 +0200:

> Hi Christian,
> 
> ceggers@arri.de wrote on Fri, 8 Oct 2021 15:11:59 +0200:
> 
> > On Friday, 8 October 2021, 11:55:56 CEST, Christian Eggers wrote:
> >   
> > > I got another solution from PHYTEC ([2], not lengthy tested yet), which
> > > disables all GPMI/BCH clocks on CCGR4    
> >   
> > > -static void gpmi_nfc_apply_timings(struct gpmi_nand_data *this)
> > > +static int gpmi_nfc_apply_timings(struct gpmi_nand_data *this)
> > > 
> > >  {
> > >  
> > >  	struct gpmi_nfc_hardware_timing *hw = &this->hw;
> > >  	struct resources *r = &this->resources;
> > >  	void __iomem *gpmi_regs = r->gpmi_regs;
> > >  	unsigned int dll_wait_time_us;
> > > 
> > > +	int ret;
> > > 
> > > +	ret = __gpmi_enable_clk(this, false);
> > > +	if (ret)
> > > +		return ret;
> > > 
> > >  	clk_set_rate(r->clock[0], hw->clk_rate);
> > > 
> > > +	ret = __gpmi_enable_clk(this, true);
> > > +	if (ret)
> > > +		return ret;
> > > 
> > >  	writel(hw->timing0, gpmi_regs + HW_GPMI_TIMING0);
> > >  	writel(hw->timing1, gpmi_regs + HW_GPMI_TIMING1);    
> > 
> > 
> > I think that this is also required for the first call to clk_set_rate() in
> > gpmi_get_clks(). From the kernel's point of view, the clocks are not enabled
> > yet, so no "guard" is required. Putting the same guard here will actually give
> > a warning at runtime that I am trying to disable a clock which is not enabled.
> > But on my system, all clock gates are enabled by the bootloader (barebox)
> > and therefore the glitch could also happen here.
> > 
> > If setting the clock to a "default" rate is really required (on my system, the
> > clock is switched from 99 MHz to 22 MHz, and back to 99 MHz on a later call...),
> > I suggest moving this call to gpmi_nand_probe() (below __gpmi_enable_clock())
> > and guard it. The result would look like:
> > 
> > ...
> > 	ret = acquire_resources(this);
> > 	if (ret)
> > 		goto exit_acquire_resources;
> > 
> > 	ret = __gpmi_enable_clk(this, true);
> > 	if (ret)
> > 		goto exit_acquire_resources;
> > 
> > 	if (GPMI_IS_MX6(this)) {
> > 		/*
> > 		 * Set the default value for the gpmi clock.
> > 		 *
> > 		 * If you want to use the ONFI nand which is in the
> > 		 * Synchronous Mode, you should change the clock as you need.
> > 		 */
> > 		__gpmi_enable_clk(this, false);
> > 		clk_set_rate(this->resources.clock[0], 22000000);
> > 		__gpmi_enable_clk(this, true);
> > 	}
> > 
> > 	pm_runtime_set_autosuspend_delay(&pdev->dev, 500);  
> 
> If this clock (as I understand) does not prevent us to access the
> registers but only feeds the external NAND bus part, then there is no
> need to enable it in the probe, just acquiring it will be enough.
> Then, the first call for an IO operation with ->must_apply_timings
> should:
> 
> 	if (imx6)
> 		disable_clk();
> 
> 	clk_set_rate();
> 
> 	if (imx6)
> 		enable_clk();

Actually we should ensure clks are enabled in the !imx6 case anyway,
but this is needed only once so either we keep enabling the clock in
the probe or we check here if the clk has already been enabled or not.

Cheers,
Miquèl

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

  reply	other threads:[~2021-10-08 13:37 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-29  6:41 GPMI iMX6ull timeout on DMA Greg Ungerer
2019-07-29  8:36 ` Miquel Raynal
2019-07-29  8:42   ` Michael Nazzareno Trimarchi
2019-07-29 12:18     ` Greg Ungerer
2019-07-29 12:20       ` Michael Nazzareno Trimarchi
2019-07-29 12:33   ` Greg Ungerer
2019-07-29 12:47     ` Miquel Raynal
2019-07-29 12:49       ` Michael Nazzareno Trimarchi
2019-07-29 12:55         ` Miquel Raynal
2019-07-29 13:00           ` Michael Nazzareno Trimarchi
2019-07-29 13:22             ` Miquel Raynal
2019-07-29 20:00               ` Michael Nazzareno Trimarchi
2019-07-29 21:02                 ` Miquel Raynal
2019-07-30  0:28       ` Greg Ungerer
2019-07-30  0:41         ` Greg Ungerer
2019-07-30  6:06           ` Greg Ungerer
2019-07-30  8:38             ` Miquel Raynal
2019-07-30  8:58               ` Boris Brezillon
2019-07-31  2:05               ` Greg Ungerer
2019-07-31  6:28                 ` Boris Brezillon
2019-08-02  7:19                   ` Greg Ungerer
2019-08-02 12:34                   ` Greg Ungerer
2019-08-02 12:51                     ` Boris Brezillon
2019-08-05  5:51                       ` Greg Ungerer
2019-08-07 16:05                         ` Miquel Raynal
2019-08-08  0:43                           ` Greg Ungerer
2019-08-08 16:36                         ` Boris Brezillon
2019-08-09  5:20                           ` Greg Ungerer
2019-08-09  6:23                             ` Boris Brezillon
2019-08-09  6:55                               ` Greg Ungerer
2019-08-09  7:32                                 ` Boris Brezillon
2019-08-09 13:57                                   ` Greg Ungerer
2019-08-09 13:59                                     ` Boris Brezillon
2019-08-12  2:50                                       ` Greg Ungerer
2019-08-12  4:04                                         ` Greg Ungerer
2019-08-12  7:31                                         ` Boris Brezillon
2019-08-13  0:50                                           ` Greg Ungerer
2021-01-28  9:45                                             ` Michael Nazzareno Trimarchi
2021-01-28 10:26                                               ` Miquel Raynal
2021-01-28 10:35                                                 ` Michael Nazzareno Trimarchi
2021-01-28 11:55                                                   ` Michael Nazzareno Trimarchi
2021-01-29 12:43                                               ` Greg Ungerer
2021-01-30  9:41                                                 ` Michael Nazzareno Trimarchi
2021-02-01 14:13                                                   ` Miquel Raynal
2021-02-01 14:32                                                     ` Michael Nazzareno Trimarchi
2021-02-01 15:08                                                       ` Michael Nazzareno Trimarchi
2021-02-01 15:14                                                         ` Miquel Raynal
2021-02-01 15:17                                                           ` Michael Nazzareno Trimarchi
2021-10-15 20:05                                                           ` Michael Trimarchi
2021-10-15 20:12                                                             ` Michael Nazzareno Trimarchi
2021-10-18  7:19                                                             ` Miquel Raynal
2021-10-18  7:33                                                               ` Michael Nazzareno Trimarchi
2021-10-18  7:43                                                                 ` Miquel Raynal
2021-10-04  5:54 ` Christian Eggers
2021-10-04  6:27   ` Michael Nazzareno Trimarchi
2021-10-04 15:33     ` Miquel Raynal
2021-10-04 16:06       ` Han Xu
2021-10-05  6:02         ` Christian Eggers
2021-10-08  9:55         ` Christian Eggers
2021-10-08 12:08           ` Stefan Riedmüller
2021-10-08 12:27             ` Miquel Raynal
2021-10-08 13:11               ` Christian Eggers
2021-10-08 13:29                 ` Miquel Raynal
2021-10-08 13:36                   ` Miquel Raynal [this message]
2021-10-08 13:49                     ` Christian Eggers
2021-10-08 16:07                       ` Miquel Raynal
2021-10-09  5:53                         ` Michael Nazzareno Trimarchi
2021-10-11  6:46                           ` Miquel Raynal
2021-10-12  9:02                             ` [RFC PATCH 1/2] mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6 Stefan Riedmueller
2021-10-12  9:02                               ` [RFC PATCH 2/2] gpmi-nand: Add ERR007117 protection for nfc_apply_timings Stefan Riedmueller
2021-10-13  5:01                                 ` Han Xu
2021-10-22  8:45                                   ` Stefan Riedmüller
2021-10-22 14:35                                     ` han.xu
2021-10-25  9:39                                       ` Stefan Riedmüller
2021-10-28  9:28                                       ` Stefan Riedmüller
2021-11-01  4:01                                         ` han.xu
2021-10-13  6:10                                 ` Christian Eggers
2021-10-13  6:00                               ` [RFC PATCH 1/2] mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6 Christian Eggers
2021-10-09  6:26                         ` GPMI iMX6ull timeout on DMA Christian Eggers
2021-10-13  6:15                           ` Christian Eggers
2021-10-08 13:13               ` Christian Eggers
2021-10-08 13:30                 ` Miquel Raynal
2021-10-09  6:33             ` Christian Eggers
  -- strict thread matches above, loose matches on Subject: below --
2018-10-02 13:22 GPMI IMX6ull timeout on dma Michael Nazzareno Trimarchi
2018-10-04 14:36 ` Michael Nazzareno Trimarchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211008153631.3f1a09aa@xps13 \
    --to=miquel.raynal@bootlin.com \
    --cc=C.Hemp@phytec.de \
    --cc=S.Riedmueller@phytec.de \
    --cc=ceggers@arri.de \
    --cc=gerg@kernel.org \
    --cc=han.xu@nxp.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=michael@amarulasolutions.com \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).