blob: a79d822a5270b69cc7b7e3dec9a2fb74b1d0671d [file] [log] [blame]
Myles Watson34261952010-03-19 02:33:40 +00001#include <lib.h> /* Prototypes */
Stefan Reinauer7ce8c542005-12-02 21:52:30 +00002
Eric Biederman8ca8d762003-04-22 19:02:15 +00003/* Setup SDRAM */
Jonathan Kollasche5b75072010-10-07 23:02:06 +00004#if CONFIG_RAMINIT_SYSINFO
Stefan Reinauer7ce8c542005-12-02 21:52:30 +00005void sdram_initialize(int controllers, const struct mem_controller *ctrl, void *sysinfo)
6#else
Eric Biederman2c018fb2003-07-21 20:13:45 +00007void sdram_initialize(int controllers, const struct mem_controller *ctrl)
Stefan Reinauer7ce8c542005-12-02 21:52:30 +00008#endif
Eric Biederman8ca8d762003-04-22 19:02:15 +00009{
Eric Biederman2c018fb2003-07-21 20:13:45 +000010 int i;
Eric Biederman8ca8d762003-04-22 19:02:15 +000011 /* Set the registers we can set once to reasonable values */
Eric Biederman2c018fb2003-07-21 20:13:45 +000012 for(i = 0; i < controllers; i++) {
Stefan Reinauerd6865222015-01-05 13:12:38 -080013 printk(BIOS_DEBUG, "Ram1.%02x\n", i);
Stefan Reinauer7ce8c542005-12-02 21:52:30 +000014
Jonathan Kollasche5b75072010-10-07 23:02:06 +000015 #if CONFIG_RAMINIT_SYSINFO
Stefan Reinauerf2b7a432010-03-30 22:21:06 +000016 sdram_set_registers(ctrl + i, sysinfo);
Stefan Reinauer7ce8c542005-12-02 21:52:30 +000017 #else
Eric Biederman2c018fb2003-07-21 20:13:45 +000018 sdram_set_registers(ctrl + i);
Stefan Reinauer7ce8c542005-12-02 21:52:30 +000019 #endif
Eric Biederman2c018fb2003-07-21 20:13:45 +000020 }
Eric Biederman8ca8d762003-04-22 19:02:15 +000021
Eric Biederman8ca8d762003-04-22 19:02:15 +000022 /* Now setup those things we can auto detect */
Eric Biederman2c018fb2003-07-21 20:13:45 +000023 for(i = 0; i < controllers; i++) {
Stefan Reinauerd6865222015-01-05 13:12:38 -080024 printk(BIOS_DEBUG, "Ram2.%02x\n", i);
Stefan Reinauer7ce8c542005-12-02 21:52:30 +000025
Jonathan Kollasche5b75072010-10-07 23:02:06 +000026 #if CONFIG_RAMINIT_SYSINFO
Stefan Reinauerf2b7a432010-03-30 22:21:06 +000027 sdram_set_spd_registers(ctrl + i, sysinfo);
Stefan Reinauer7ce8c542005-12-02 21:52:30 +000028 #else
29 sdram_set_spd_registers(ctrl + i);
30 #endif
31
Eric Biederman2c018fb2003-07-21 20:13:45 +000032 }
Eric Biederman8ca8d762003-04-22 19:02:15 +000033
Eric Biederman8ca8d762003-04-22 19:02:15 +000034 /* Now that everything is setup enable the SDRAM.
Stefan Reinauer14e22772010-04-27 06:56:47 +000035 * Some chipsets do the work for us while on others
Eric Biederman8ca8d762003-04-22 19:02:15 +000036 * we need to it by hand.
37 */
Stefan Reinauerd6865222015-01-05 13:12:38 -080038 printk(BIOS_DEBUG, "Ram3\n");
Stefan Reinauer7ce8c542005-12-02 21:52:30 +000039
Jonathan Kollasche5b75072010-10-07 23:02:06 +000040 #if CONFIG_RAMINIT_SYSINFO
Stefan Reinauer7ce8c542005-12-02 21:52:30 +000041 sdram_enable(controllers, ctrl, sysinfo);
42 #else
Eric Biederman2c018fb2003-07-21 20:13:45 +000043 sdram_enable(controllers, ctrl);
Stefan Reinauer7ce8c542005-12-02 21:52:30 +000044 #endif
Eric Biederman8ca8d762003-04-22 19:02:15 +000045
Stefan Reinauerd6865222015-01-05 13:12:38 -080046 printk(BIOS_DEBUG, "Ram4\n");
Eric Biederman8ca8d762003-04-22 19:02:15 +000047}