Lines Matching refs:spd
103 static void spd_debug(spd_eeprom_t *spd) in spd_debug() argument
105 printf ("\nDIMM type: %-18.18s\n", spd->mpart); in spd_debug()
106 printf ("SPD size: %d\n", spd->info_size); in spd_debug()
107 printf ("EEPROM size: %d\n", 1 << spd->chip_size); in spd_debug()
108 printf ("Memory type: %d\n", spd->mem_type); in spd_debug()
109 printf ("Row addr: %d\n", spd->nrow_addr); in spd_debug()
110 printf ("Column addr: %d\n", spd->ncol_addr); in spd_debug()
111 printf ("# of rows: %d\n", spd->nrows); in spd_debug()
112 printf ("Row density: %d\n", spd->row_dens); in spd_debug()
113 printf ("# of banks: %d\n", spd->nbanks); in spd_debug()
115 256 * spd->dataw_msb + spd->dataw_lsb); in spd_debug()
116 printf ("Chip width: %d\n", spd->primw); in spd_debug()
117 printf ("Refresh rate: %02X\n", spd->refresh); in spd_debug()
118 printf ("CAS latencies: %02X\n", spd->cas_lat); in spd_debug()
119 printf ("Write latencies: %02X\n", spd->write_lat); in spd_debug()
120 printf ("tRP: %d\n", spd->trp); in spd_debug()
121 printf ("tRCD: %d\n", spd->trcd); in spd_debug()
131 spd_eeprom_t spd; in spd_sdram() local
166 SPD_EEPROM_ADDR_LEN, (uchar *) &spd, sizeof(spd)); in spd_sdram()
168 spd_debug(&spd); in spd_sdram()
171 if (spd.mem_type != SPD_MEMTYPE_DDR && spd.mem_type != SPD_MEMTYPE_DDR2) { in spd_sdram()
172 debug("DDR: Module mem type is %02X\n", spd.mem_type); in spd_sdram()
177 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
178 n_ranks = spd.nrows; in spd_sdram()
180 n_ranks = (spd.nrows & 0x7) + 1; in spd_sdram()
189 if (spd.nrow_addr < 12 || spd.nrow_addr > 15) { in spd_sdram()
191 spd.nrow_addr); in spd_sdram()
196 if (spd.ncol_addr < 8 || spd.ncol_addr > 11) { in spd_sdram()
198 spd.ncol_addr); in spd_sdram()
206 if(spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
217 if (spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
223 ddr->csbnds[0].csbnds = (banksize(spd.row_dens) >> 24) - 1; in spd_sdram()
227 | ((spd.nbanks == 8 ? 1 : 0) << 14) in spd_sdram()
228 | ((spd.nrow_addr - 12) << 8) in spd_sdram()
229 | (spd.ncol_addr - 8) ); in spd_sdram()
235 ddr->csbnds[1].csbnds = ( (banksize(spd.row_dens) >> 8) in spd_sdram()
236 | ((banksize(spd.row_dens) >> 23) - 1) ); in spd_sdram()
240 | ((spd.nbanks == 8 ? 1 : 0) << 14) in spd_sdram()
241 | ((spd.nrow_addr - 12) << 8) in spd_sdram()
242 | (spd.ncol_addr - 8) ); in spd_sdram()
248 ddr->csbnds[2].csbnds = (banksize(spd.row_dens) >> 24) - 1; in spd_sdram()
252 | ((spd.nbanks == 8 ? 1 : 0) << 14) in spd_sdram()
253 | ((spd.nrow_addr - 12) << 8) in spd_sdram()
254 | (spd.ncol_addr - 8) ); in spd_sdram()
260 ddr->csbnds[3].csbnds = ( (banksize(spd.row_dens) >> 8) in spd_sdram()
261 | ((banksize(spd.row_dens) >> 23) - 1) ); in spd_sdram()
265 | ((spd.nbanks == 8 ? 1 : 0) << 14) in spd_sdram()
266 | ((spd.nrow_addr - 12) << 8) in spd_sdram()
267 | (spd.ncol_addr - 8) ); in spd_sdram()
276 memsize = n_ranks * banksize(spd.row_dens) / 0x100000; in spd_sdram()
309 caslat = __ilog2(spd.cas_lat); in spd_sdram()
310 if ((spd.mem_type == SPD_MEMTYPE_DDR) in spd_sdram()
312 printf("DDR I: Invalid SPD CAS Latency: 0x%x.\n", spd.cas_lat); in spd_sdram()
314 } else if (spd.mem_type == SPD_MEMTYPE_DDR2 in spd_sdram()
317 spd.cas_lat); in spd_sdram()
322 max_bus_clk = 1000 *10 / (((spd.clk_cycle & 0xF0) >> 4) * 10 in spd_sdram()
323 + (spd.clk_cycle & 0x0f)); in spd_sdram()
332 if (spd.cas_lat & 0x08) in spd_sdram()
352 if (spd.clk_cycle2 == 0x60) in spd_sdram()
359 if (spd.clk_cycle3 == 0x75) in spd_sdram()
361 else if (spd.clk_cycle2 == 0x75) in spd_sdram()
368 if (spd.clk_cycle3 == 0xa0) in spd_sdram()
370 else if (spd.clk_cycle2 == 0xa0) in spd_sdram()
383 if (spd.clk_cycle2 == 0x75) in spd_sdram()
390 if (spd.clk_cycle3 == 0xa0) in spd_sdram()
392 else if (spd.clk_cycle2 == 0xa0) in spd_sdram()
410 if (spd.clk_cycle2 == 0xa0) in spd_sdram()
433 if(PVR_MAJ(pvr) <= 1 && spd.mem_type == SPD_MEMTYPE_DDR){ in spd_sdram()
450 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
464 if (spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
485 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
489 twr_clk = picos_to_clk(spd.twr * 250); in spd_sdram()
490 twtr_clk = picos_to_clk(spd.twtr * 250); in spd_sdram()
500 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
501 trfc = spd.trfc * 1000; /* up to ps */ in spd_sdram()
514 trfc = (((spd.trctrfc_ext & 0x1) * 256) + spd.trfc) * 1000 in spd_sdram()
515 + byte40_table_ps[(spd.trctrfc_ext >> 1) & 0x7]; in spd_sdram()
522 trcd_clk = picos_to_clk(spd.trcd * 250) & 0x7; in spd_sdram()
534 (((picos_to_clk(spd.trp * 250) & 0x07) << 28 ) | /* PRETOACT */ in spd_sdram()
535 ((picos_to_clk(spd.tras * 1000) & 0x0f ) << 24 ) | /* ACTTOPRE */ in spd_sdram()
540 ((picos_to_clk(spd.trrd * 250) & 0x07) << 4) | /* ACTTOACT */ in spd_sdram()
552 if (spd.mem_type == SPD_MEMTYPE_DDR2 in spd_sdram()
577 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
594 trtp_clk = picos_to_clk(spd.trtp * 250); in spd_sdram()
608 if (spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
639 if (spd.dataw_lsb < 64) { in spd_sdram()
640 if (spd.mem_type == SPD_MEMTYPE_DDR) in spd_sdram()
651 if (spd.config == 0x02) in spd_sdram()
659 if (spd.mem_type == SPD_MEMTYPE_DDR) { in spd_sdram()
709 switch (spd.refresh) { in spd_sdram()
755 if (spd.mem_type == SPD_MEMTYPE_DDR2) { in spd_sdram()
789 if (spd.mem_type == SPD_MEMTYPE_DDR) in spd_sdram()
801 if (spd.mod_attr & 0x02) in spd_sdram()
805 if (spd.dataw_lsb < 64) { in spd_sdram()
806 if (spd.mem_type == SPD_MEMTYPE_DDR) in spd_sdram()
808 if (spd.mem_type == SPD_MEMTYPE_DDR2) in spd_sdram()
816 if (spd.config == 0x02) { in spd_sdram()