Commit af573a5b authored by Imre Deak's avatar Imre Deak Committed by Juha Yrjola

ARM: OMAP: SoSSI: workaround for HW timing bug

Certain HW timings can render the SoSSI block dead. This can happen when
the SoSSI TW1 value is less then 3 and we are trying to read the SoSSI
FIFO. At this point SoSSI goes haywire and return 0 for all its
registers. This patch will set a minimum limit of 3 on TW1.
Signed-off-by: default avatarImre Deak <imre.deak@nokia.com>
Signed-off-by: default avatarJuha Yrjola <juha.yrjola@nokia.com>
parent e6f0b20e
...@@ -240,6 +240,9 @@ static int calc_rd_timings(struct extif_timings *t) ...@@ -240,6 +240,9 @@ static int calc_rd_timings(struct extif_timings *t)
recyc = reoff + 1; recyc = reoff + 1;
tw1 = recyc - reoff; tw1 = recyc - reoff;
/* values less then 3 result in the SOSSI block resetting itself */
if (tw1 < 3)
tw1 = 3;
if (tw1 > 0x40) if (tw1 > 0x40)
return -1; return -1;
...@@ -284,6 +287,9 @@ static int calc_wr_timings(struct extif_timings *t) ...@@ -284,6 +287,9 @@ static int calc_wr_timings(struct extif_timings *t)
wecyc = weoff + 1; wecyc = weoff + 1;
tw1 = wecyc - weoff; tw1 = wecyc - weoff;
/* values less then 3 result in the SOSSI block resetting itself */
if (tw1 < 3)
tw1 = 3;
if (tw1 > 0x40) if (tw1 > 0x40)
return -1; return -1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment