.\"
.\" This file and its contents are supplied under the terms of the
.\" Common Development and Distribution License ("CDDL"), version 1.0.
.\" You may only use this file in accordance with the terms of version
.\" 1.0 of the CDDL.
.\"
.\" A full copy of the text of the CDDL should have accompanied this
.\" source.  A copy of the CDDL is also available via the Internet at
.\" http://www.illumos.org/license/CDDL.
.\"
.\"
.\" Copyright 2023 Oxide Computer Company
.\"
.Dd September 18, 2023
.Dt LIBJEDEC 3JEDEC
.Os
.Sh NAME
.Nm libjedec
.Nd JEDEC support library
.Sh LIBRARY
.Lb libjedec
.In libjedec.h
.Sh DESCRIPTION
The
.Nm
library provides consumers access to several different classes of
functions that are related to various JEDEC standards including:
.Bl -bullet -width Ds
.It
Parsing Serial Presence Data (SPD) commonly found in DIMM modules
.It
Translating JEDEC vendor IDs to a well-known vendor name
.It
Translating JEDEC temperature range names to their numeric range
.El
.Pp
This library is an uncommitted interface and API or ABI stability is not
guaranteed.
.Ss SPD Parsing
Most DDR DIMM modules embed information about them which describes the
timing, size and orientation, and manufacturing information of the
device.
The encoding of this information changes with each generation of the DDR
devices and has its own format.
The library attempts to normalize information across generations where
possible.
.Pp
The function
.Xr libjedec_spd 3JEDEC
provides an interface to parse a full data payload into a
.Vt nvlist_t ,
a name-value pair list usable with
.Xr libnvpair 3LIB .
.Ss Vendor ID Translation
JEDEC Vendor IDs come as a pair of a continuation number and an index
into a block.
These are then translated into well-known names by the JEDEC standard
JEP106
.Po
.%T Standard Manufacturer's Identification Code
.Pc .
This vendor information can be found in different contexts such as SPD
data, various SPI NOR and SPI NAND devices, SMBIOS, and more.
.Pp
The function
.Xr libjedec_vendor_string 3JEDEC
provides the ability to translate the IDs to a well known name.
.Pp
Currently the library implements JEP106BH from September 2023.
.Ss Temperature Ranges
Many JEDEC standards embed information about temperature ranges that
components support for the case operating temperature, the ambient air
temperature, and related.
These ranges are in turn defined in JESD402-1A
.Po
.%T Temperature Range and Measurement Standards for Components and Modules
.Pc .
.Pp
The function
.Xr libejdec_temp_range 3JEDEC
provides a way to translate these named ranges into the corresponding
lower and upper bounds of the range.
When other parts of the library parse data, they will emit the
temperature range using the library's
.Vt libjedec_temp_range_t
type, which is defined in the aforementioned manual page.
.Sh INTERFACE STABILITY
.Sy Uncommitted
.Pp
The interfaces in this library are currently designed for use for
software that is a part of illumos and are subject to change at any
time.
They are documented as an aid to developers and no API or ABI stability
is currently intended, though it is not expected to change dramatically.
.Sh MT-LEVEL
.Sy MT-Safe
.Pp
While all functions in this library are currently
.Sy MT-Safe ,
there is no guarantee that this will apply to future functions.
.Sh SEE ALSO
.Xr libjedec_spd 3JEDEC ,
.Xr libjedec_temp_range 3JEDEC ,
.Xr libjedev_vendor_string 3JEDEC
.Pp
.Rs
.%Q JEDEC Solid State Technology Association
.%T Standard Manufacturer's Identification Code
.%N JEP106BH
.%D September 2023
.Re
.Rs
.%Q JEDEC Solid State Technology Association
.%T Temperature Range and Measurement Standards for Components and Modules
.%N JESD402-1A
.%D March 2022
.Re
.Rs
.%Q JEDEC Solid State Technology Association
.%T Serial Presence Detect (SPD), General Standard
.%N 21-C
.Re
.Rs
.%Q JEDEC Solid State Technology Association
.%T DDR5 Serial Presence Detect (SPD) Contents
.%N JESD400-5A.01
.%D January 2023
.Re