I posted in the original thread regarding trying a code fix for the shift that occurs on a Reprap Discount Full Graphic Smart Display board over time under Marlin (occurs both on Marlin 1 & Marlin 2 code sets). There is a timing issue that eventually corrupts the LCD memory space.
A patch that definitely worked in Marlin 1.X was not possible in Marlin 2.x. The workaround appeared to be adding some new defines for the LCD code delays. I thought I had found a workable set, but it turns out they only delayed the onset of the shift. I recently ran across a post listing a different delay value from that I tried, so I gave it a try. So far, this value set seems to be holding up.
These lines need to be added to the Configuration.h file following the #pragma once line.
define ST7920_DELAY_1 DELAY_NS(0)
define ST7920_DELAY_2 DELAY_NS(400)
define ST7920_DELAY_3 DELAY_NS(0)
I tried this set of defines shortly after a change of displays (I apparently static zapped the first one). I don't know if the code change or the physical change is responsible, but the above values are apparently working for multi-day operations .