Lines Matching +full:0 +full:x3e00
84 { 0x11d4, 0x08, "Analog Devices TSOD" },
92 { 0x001f, 0x82, "Atmel TSOD" },
93 { 0x1114, 0x22, "Atmel TSOD" },
101 { 0x00b3, 0x29, "IDT TSOD" },
102 { 0x00b3, 0x22, "IDT TSOD" },
106 * Document 19-3837; Rev 0; 10/05 has 0x3e00 while
107 * 19-3837; Rev 3; 10/11 has 0x5400.
110 { 0x004d, 0x3e, "Maxim Integrated TSOD" },
111 { 0x004d, 0x54, "Maxim Integrated TSOD" },
119 { 0x0054, 0x00, "Microchip TSOD" },
120 { 0x0054, 0x20, "Microchip TSOD" },
121 { 0x0054, 0x21, "Microchip TSOD" },
122 { 0x1055, 0x08, "Microchip TSOD" },
127 { 0x1131, 0xa1, "NXP TSOD" },
128 { 0x1131, 0xa2, "NXP TSOD" },
134 { 0x1b09, 0x08, "ON Semiconductor TSOD" },
135 { 0x1b09, 0x0a, "ON Semiconductor TSOD" },
141 { 0x104a, 0x00, "ST Microelectronics TSOD" },
142 { 0x104a, 0x03, "ST Microelectronics TSOD" },
208 /* Change to the proper page. Offsets [0, 255] are in page0; offsets in jedec_dimm_adjust_offset()
213 rc = 0; in jedec_dimm_adjust_offset()
218 device_printf(sc->dev, "invalid offset 0x%04x\n", orig_offset); in jedec_dimm_adjust_offset()
226 * offset and write-value are ignored, so just use 0. in jedec_dimm_adjust_offset()
229 0, 0); in jedec_dimm_adjust_offset()
230 if (rc != 0) { in jedec_dimm_adjust_offset()
232 "unable to change page for offset 0x%04x: %d\n", in jedec_dimm_adjust_offset()
289 sc->tsod_addr = JEDEC_DTI_TSOD | (sc->spd_addr & 0x0f); in jedec_dimm_attach()
293 if (rc != 0) { in jedec_dimm_attach()
316 device_printf(dev, "unsupported dram_type 0x%02x\n", type); in jedec_dimm_attach()
330 if (rc != 0) { in jedec_dimm_attach()
335 if (rc != 0) { in jedec_dimm_attach()
341 if (rc != 0) { in jedec_dimm_attach()
347 if (rc != 0) { in jedec_dimm_attach()
364 if (rc != 0) { in jedec_dimm_attach()
369 if (byte & 0x80) { in jedec_dimm_attach()
372 if (rc != 0) { in jedec_dimm_attach()
375 rc = 0; in jedec_dimm_attach()
379 if (rc != 0) { in jedec_dimm_attach()
381 rc = 0; in jedec_dimm_attach()
390 " 0x%x and 0x%x\n", vendorid, devid); in jedec_dimm_attach()
403 CTLFLAG_RD | CTLFLAG_MPSAFE, sc->type_str, 0, in jedec_dimm_attach()
411 CTLFLAG_RD | CTLFLAG_MPSAFE, sc->part_str, 0, in jedec_dimm_attach()
415 CTLFLAG_RD | CTLFLAG_MPSAFE, sc->serial_str, 0, in jedec_dimm_attach()
429 CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, 0, in jedec_dimm_attach()
435 "slotid", &slotid_str) == 0) { in jedec_dimm_attach()
439 CTLFLAG_RD | CTLFLAG_MPSAFE, sc->slotid_str, 0, in jedec_dimm_attach()
522 if (rc != 0) { in jedec_dimm_capacity()
529 if (rc != 0) { in jedec_dimm_capacity()
536 if (rc != 0) { in jedec_dimm_capacity()
544 if (rc != 0) { in jedec_dimm_capacity()
553 if (rc != 0) { in jedec_dimm_capacity()
560 /* "Primary bus width, in bits" is in bits [2:0]. */ in jedec_dimm_capacity()
561 bus_width_byte &= 0x07; in jedec_dimm_capacity()
575 dimm_ranks_byte &= 0x07; in jedec_dimm_capacity()
589 /* "Total SDRAM capacity per die, in Mb" is in bits [3:0]. There are two in jedec_dimm_capacity()
590 * different formulas, for values 0-7 and for values 8-9. Also, values in jedec_dimm_capacity()
593 sdram_capacity_byte &= 0x0f; in jedec_dimm_capacity()
611 /* "SDRAM device width" is in bits [2:0]. */ in jedec_dimm_capacity()
612 sdram_width_byte &= 0x7; in jedec_dimm_capacity()
622 /* DDR4 has something called "3DS", which is indicated by [1:0] = 2; in jedec_dimm_capacity()
627 ((sdram_pkg_type_byte & 0x3) == 2)) { in jedec_dimm_capacity()
629 sdram_pkg_type_byte &= 0x07; in jedec_dimm_capacity()
661 return (0); in jedec_dimm_detach()
686 for (i = 0; i < 256; i++) { in jedec_dimm_dump()
688 if (rc != 0) { in jedec_dimm_dump()
690 "unable to read page0:0x%02x: %d\n", i, rc); in jedec_dimm_dump()
701 (JEDEC_DTI_PAGE | JEDEC_LSA_PAGE_SET1), 0, 0); in jedec_dimm_dump()
702 if (rc != 0) { in jedec_dimm_dump()
713 for (i = 0; i < 256; i++) { in jedec_dimm_dump()
716 if (rc != 0) { in jedec_dimm_dump()
718 "unable to read page1:0x%02x: %d\n", i, rc); in jedec_dimm_dump()
725 hexdump(bytes, (page_changed ? 512 : 256), NULL, 0); in jedec_dimm_dump()
732 if ((rc2 != 0) && (rc == 0)) { in jedec_dimm_dump()
777 if (rc != 0) { in jedec_dimm_field_to_str()
786 device_printf(sc->dev, "invalid offset 0x%04x\n", new_offset); in jedec_dimm_field_to_str()
792 "(new_offset + len) would cross page (0x%04x + 0x%04x)\n", in jedec_dimm_field_to_str()
823 for (i = 0; i < len; i++) { in jedec_dimm_field_to_str()
826 if (rc != 0) { in jedec_dimm_field_to_str()
828 "failed to read byte at 0x%02x: %d\n", in jedec_dimm_field_to_str()
845 for (i = dstsz - 1; i > 0; i--) { in jedec_dimm_field_to_str()
847 dst[i] = 0; in jedec_dimm_field_to_str()
848 } else if (dst[i] == 0) { in jedec_dimm_field_to_str()
861 if ((rc2 != 0) && (rc == 0)) { in jedec_dimm_field_to_str()
912 /* Change to the proper page. Offsets [0, 255] are in page0; offsets in jedec_dimm_mfg_date()
918 * offset and write-value are ignored, so use just 0. in jedec_dimm_mfg_date()
929 (JEDEC_DTI_PAGE | JEDEC_LSA_PAGE_SET1), 0, 0); in jedec_dimm_mfg_date()
930 if (rc != 0) { in jedec_dimm_mfg_date()
932 "unable to change page for offset 0x%04x: %d\n", in jedec_dimm_mfg_date()
939 device_printf(sc->dev, "invalid offset 0x%04x\n", year_offset); in jedec_dimm_mfg_date()
946 if (rc != 0) { in jedec_dimm_mfg_date()
952 if (rc != 0) { in jedec_dimm_mfg_date()
958 *year = (((year_bcd & 0xf0) >> 4) * 10) + (year_bcd & 0x0f); in jedec_dimm_mfg_date()
959 *week = (((week_bcd & 0xf0) >> 4) * 10) + (week_bcd & 0x0f); in jedec_dimm_mfg_date()
966 (JEDEC_DTI_PAGE | JEDEC_LSA_PAGE_SET0), 0, 0); in jedec_dimm_mfg_date()
967 if (rc2 != 0) { in jedec_dimm_mfg_date()
969 "unable to restore page for offset 0x%04x: %d\n", in jedec_dimm_mfg_date()
1000 if (((addr & 0xf0) != JEDEC_DTI_SPD) || in jedec_dimm_probe()
1001 ((addr & 0x01) != 0)) { in jedec_dimm_probe()
1003 "invalid \"addr\" hint; address must start with \"0x%x\"," in jedec_dimm_probe()
1004 " and the least-significant bit must be 0\n", in jedec_dimm_probe()
1012 if (rc != 0) { in jedec_dimm_probe()
1058 if (rc != 0) { in jedec_dimm_readw_be()
1082 * offset and write-value are ignored, so just use 0. in jedec_dimm_reset_page0()
1085 0, 0); in jedec_dimm_reset_page0()
1086 if (rc != 0) { in jedec_dimm_reset_page0()
1111 if (rc != 0) { in jedec_dimm_temp_sysctl()
1116 temp = val & 0xfff; in jedec_dimm_temp_sysctl()
1117 if ((val & 0x1000) != 0) in jedec_dimm_temp_sysctl()
1129 rc = sysctl_handle_int(oidp, &temp, 0, req); in jedec_dimm_temp_sysctl()
1157 for (i = 0; i < nitems(known_tsod_devices); i++) { in jedec_dimm_tsod_match()
1167 if ((did >> 8) == 0x22) { in jedec_dimm_tsod_match()
1188 DRIVER_MODULE(jedec_dimm, smbus, jedec_dimm_driver, 0, 0);