Skip to content

Commit 68e77ff

Browse files
committed
Merge tag 'mtd/fixes-for-5.19-final' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux
Pull MTD fix from Richard Weinberger: "A aingle NAND controller fix: - gpmi: Fix busy timeout setting (wrong calculation, yes again)" * tag 'mtd/fixes-for-5.19-final' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux: mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times
2 parents 7ca433d + 0fddf9a commit 68e77ff

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -850,9 +850,10 @@ static int gpmi_nfc_compute_timings(struct gpmi_nand_data *this,
850850
unsigned int tRP_ps;
851851
bool use_half_period;
852852
int sample_delay_ps, sample_delay_factor;
853-
u16 busy_timeout_cycles;
853+
unsigned int busy_timeout_cycles;
854854
u8 wrn_dly_sel;
855855
unsigned long clk_rate, min_rate;
856+
u64 busy_timeout_ps;
856857

857858
if (sdr->tRC_min >= 30000) {
858859
/* ONFI non-EDO modes [0-3] */
@@ -885,7 +886,8 @@ static int gpmi_nfc_compute_timings(struct gpmi_nand_data *this,
885886
addr_setup_cycles = TO_CYCLES(sdr->tALS_min, period_ps);
886887
data_setup_cycles = TO_CYCLES(sdr->tDS_min, period_ps);
887888
data_hold_cycles = TO_CYCLES(sdr->tDH_min, period_ps);
888-
busy_timeout_cycles = TO_CYCLES(sdr->tWB_max + sdr->tR_max, period_ps);
889+
busy_timeout_ps = max(sdr->tBERS_max, sdr->tPROG_max);
890+
busy_timeout_cycles = TO_CYCLES(busy_timeout_ps, period_ps);
889891

890892
hw->timing0 = BF_GPMI_TIMING0_ADDRESS_SETUP(addr_setup_cycles) |
891893
BF_GPMI_TIMING0_DATA_HOLD(data_hold_cycles) |

0 commit comments

Comments
 (0)