[PATCH 4/7] mtd: spi-nor: fsl-quadspi: i.MX6SX: fixed the random QSPI access failed issue

Zhi Li lznuaa at gmail.com
Fri Jul 24 10:10:54 PDT 2015


On Fri, Jul 24, 2015 at 11:56 AM, Brian Norris
<computersforpeace at gmail.com> wrote:
> On Wed, Jul 22, 2015 at 03:39:56AM +0800, Frank.Li at freescale.com wrote:
>> From: Allen Xu <b45815 at freescale.com>
>>
>> We found there is a low probability(5%) QSPI access timeout issue,
>> usually it happened on kernel boot stage, the first time kernel tried to
>> access QSPI chip. The READ_ID command was sent but not executed,
>> consequently the probe function failed.
>>
>> Finally we located the issue by these steps.
>>
>> 1. Since the issue happened randomly and usually it cost half day to
>> reproduce, we add more debug code in driver, to create a timeout file if
>> the issue occurred.
>>
>> 2. Prepared an autorun script to keep rebooting the system and check if
>> the timeout file existed, if the file existed, stop reboot.
>>
>> 3. The system will stop rebooting when timeout error occurred, set the
>> CCM_CCOSR register and related IOMUX to measure QPSI clock, found there
>> is no clock output, while clock output can be measured when QSPI driver
>> successfully probed.
>>
>> 4. Check the code and found QSPI clock rate was changed while not
>> disabled clock gate, most of the multiplexers on i.MX6 are glitch ones,
>> clock glitch may occurred and propagated into downstream clock dividers
>>
>> Based on the new clock flag(CLK_SET_RATE_GATE) and new framework, we
>> need to change the approach of seting clock rate. In current
>> implementation, there are several places in which the clock was touched.
>>
>> 1. probe function. prepare and enable clock before setting the QSPI
>> register, disable and unprepare the clock before exit.
>>
>> 2. nor_setup & nor_setup_last, since we change clock rate in these two
>> functions.
>>
>> 3. fsl_qspi_prep and fsl_qspi_unprep, clock was enabled only when got
>> QSPI access request.
>>
>> 4. resume function. Clock was required to restroe the setting after
>> resume, disable the clock before exit.
>>
>> Signed-off-by: Allen Xu <b45815 at freescale.com>
>> Signed-off-by: Frank Li <Frank.Li at freescale.com>
>> ---
>>  drivers/mtd/spi-nor/fsl-quadspi.c | 83 +++++++++++++++++++++++++++------------
>>  1 file changed, 58 insertions(+), 25 deletions(-)
>
> [...]
>
> This patch does not apply to l2-mtd.git.

Did you try to apply below patch firstly?

[PATCH 1/1] mtd: spi-nor: fsl-qspi: dynamically map memory space for AHB read

Which branch? I can double check.

best regards
Frank Li



More information about the linux-mtd mailing list