After the kernel is updated to latest version, during the test on the patch, for fixing the lcd flickering, just set pcd before hss is updated when hss is changed from low to high. and set pcd after hss is changed from high to low.
if (old->hss < new->hss)
pxafb_set_pcd();
accr &= ~(mask | mask2);
accr |= data | data2;
__raw_writel(accr, info->clkmgr_base + ACCR_OFF);
/* wait until ACSR is changed */
do {
accr = __raw_readl(info->clkmgr_base + ACCR_OFF);
acsr = __raw_readl(info->clkmgr_base + ACSR_OFF);
} while ((((accr & mask) != data) || ((acsr & mask) != data))
|| ((accr & ACCR_VAUFS_MASK) >> ACCR_VAUFS_OFFSET
!= (acsr & ACSR_VAUFS_MASK) >> ACSR_VAUFS_OFFSET));
/* set PCD after HSS updated for the case we are moving from a high freq to a lower freq. This way we will
* assure that the pclk frequency will not increase the original value in the frequency change process*/
if (old->hss >= new->hss)
pxafb_set_pcd();
LCD is using sharp