]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
ARM: at91: pm: fix at91_suspend_finish for ZQ calibration
authorLi Bin <bin.li@microchip.com>
Thu, 27 Feb 2025 15:51:56 +0000 (08:51 -0700)
committerClaudiu Beznea <claudiu.beznea@tuxon.dev>
Sun, 2 Mar 2025 15:25:23 +0000 (17:25 +0200)
commitbc4722c3598d0e2c2dbf9609a3d3198993093e2b
tree4b5eacadc3971f7fedb6cd2f83610d7fea39b9ca
parentebbb3965855e7481395718291fb5b9c79ec5edc4
ARM: at91: pm: fix at91_suspend_finish for ZQ calibration

For sama7g5 and sama7d65 backup mode, we encountered a "ZQ calibrate error"
during recalibrating the impedance in BootStrap.
We found that the impedance value saved in at91_suspend_finish() before
the DDR entered self-refresh mode did not match the resistor values. The
ZDATA field in the DDR3PHY_ZQ0CR0 register uses a modified gray code to
select the different impedance setting.
But these gray code are incorrect, a workaournd from design team fixed the
bug in the calibration logic. The ZDATA contains four independent impedance
elements, but the algorithm combined the four elements into one. The elements
were fixed using properly shifted offsets.

Signed-off-by: Li Bin <bin.li@microchip.com>
[nicolas.ferre@microchip.com: fix indentation and combine 2 patches]
Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Tested-by: Ryan Wanner <Ryan.Wanner@microchip.com>
Tested-by: Durai Manickam KR <durai.manickamkr@microchip.com>
Tested-by: Andrei Simion <andrei.simion@microchip.com>
Signed-off-by: Ryan Wanner <Ryan.Wanner@microchip.com>
Link: https://lore.kernel.org/r/28b33f9bcd0ca60ceba032969fe054d38f2b9577.1740671156.git.Ryan.Wanner@microchip.com
Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
arch/arm/mach-at91/pm.c