linux/arch/arm/mach-at91
Li Bin 89800836bf ARM: at91: pm: fix at91_suspend_finish for ZQ calibration
[ Upstream commit bc4722c359 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-05-29 11:02:33 +02:00
..
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
at91rm9200.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 4 2019-05-21 11:28:40 +02:00
at91sam9.c ARM: at91: pm: move SAM9X60's PM under its own SoC config flag 2019-12-10 00:44:53 +01:00
generic.h ARM: at91: pm: add support for sam9x7 SoC family 2024-08-07 19:24:44 +03:00
Kconfig ARM: at91: Kconfig: add config flag for SAM9X7 SoC 2024-08-07 19:24:46 +03:00
Makefile ARM: at91: pm: add sam9x7 SoC init config 2024-08-07 19:24:45 +03:00
pm.c ARM: at91: pm: fix at91_suspend_finish for ZQ calibration 2025-05-29 11:02:33 +02:00
pm.h ARM: at91: pm: add support for 2.5V LDO regulator control 2021-07-19 14:32:12 +02:00
pm_data-offsets.c ARM: at91: pm: add self-refresh support for sama7g5 2021-07-19 14:32:12 +02:00
pm_suspend.S ARM updates for 6.2 2022-12-13 15:22:14 -08:00
sam9x7.c ARM: at91: pm: add sam9x7 SoC init config 2024-08-07 19:24:45 +03:00
sam9x60.c ARM: at91: pm: move SAM9X60's PM under its own SoC config flag 2019-12-10 00:44:53 +01:00
sam_secure.c ARM: at91: add sam_linux_is_optee_available() function 2022-07-20 11:03:45 +03:00
sam_secure.h ARM: at91: add sam_linux_is_optee_available() function 2022-07-20 11:03:45 +03:00
sama5.c ARM: at91: fix build for SAMA5D3 w/o L2 cache 2022-11-24 12:50:07 +02:00
sama7.c ARM: at91: pm: add pm support for SAMA7G5 2021-07-19 14:32:13 +02:00
samv7.c ARM: at91: Explicitly include correct DT includes 2023-07-29 16:56:04 +03:00