Patch "mtd: rawnand: gpmi: fix controller timings setting" has been added to the 5.17-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    mtd: rawnand: gpmi: fix controller timings setting

to the 5.17-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     mtd-rawnand-gpmi-fix-controller-timings-setting.patch
and it can be found in the queue-5.17 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 1d0d8e4360a7cd26ba8c892656bc8a81f1da857c
Author: Dario Binacchi <dario.binacchi@xxxxxxxxxxxxxxxxxxxx>
Date:   Tue Jan 18 10:54:32 2022 +0100

    mtd: rawnand: gpmi: fix controller timings setting
    
    [ Upstream commit 2970bf5a32f079e1e9197411db4fe9faccb1503a ]
    
    Set the controller registers according to the real clock rate. The
    controller registers configuration (setup, hold, timeout, ... cycles)
    depends on the clock rate of the GPMI. Using the real rate instead of
    the ideal one, avoids that this inaccuracy (required_rate - real_rate)
    affects the registers setting.
    
    This patch has been tested on two custom boards with i.MX28 and i.MX6
    SOCs:
    - i.MX28:
      required rate 100MHz, real rate 99.3MHz
    - i.MX6
      required rate 100MHz, real rate 99MHz
    
    Fixes: b1206122069a ("mtd: rawnand: gpmi: use core timings instead of an empirical derivation")
    Co-developed-by: Michael Trimarchi <michael@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Michael Trimarchi <michael@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Dario Binacchi <dario.binacchi@xxxxxxxxxxxxxxxxxxxx>
    Tested-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
    Reviewed-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
    Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx>
    Link: https://lore.kernel.org/linux-mtd/20220118095434.35081-3-dario.binacchi@xxxxxxxxxxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
index ded4df473928..e50db25e5ddc 100644
--- a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
+++ b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
@@ -648,6 +648,7 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this,
 				     const struct nand_sdr_timings *sdr)
 {
 	struct gpmi_nfc_hardware_timing *hw = &this->hw;
+	struct resources *r = &this->resources;
 	unsigned int dll_threshold_ps = this->devdata->max_chain_delay;
 	unsigned int period_ps, reference_period_ps;
 	unsigned int data_setup_cycles, data_hold_cycles, addr_setup_cycles;
@@ -671,6 +672,8 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this,
 		wrn_dly_sel = BV_GPMI_CTRL1_WRN_DLY_SEL_NO_DELAY;
 	}
 
+	hw->clk_rate = clk_round_rate(r->clock[0], hw->clk_rate);
+
 	/* SDR core timings are given in picoseconds */
 	period_ps = div_u64((u64)NSEC_PER_SEC * 1000, hw->clk_rate);
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux