xref: /illumos-gate/usr/src/lib/libjedec/common/libjedec_temp.c (revision f7379be0e8a103179bb13516195101c745bd6a30)
1fe82ebb0SRobert Mustacchi /*
2fe82ebb0SRobert Mustacchi  * This file and its contents are supplied under the terms of the
3fe82ebb0SRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4fe82ebb0SRobert Mustacchi  * You may only use this file in accordance with the terms of version
5fe82ebb0SRobert Mustacchi  * 1.0 of the CDDL.
6fe82ebb0SRobert Mustacchi  *
7fe82ebb0SRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8fe82ebb0SRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9fe82ebb0SRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10fe82ebb0SRobert Mustacchi  */
11fe82ebb0SRobert Mustacchi 
12fe82ebb0SRobert Mustacchi /*
13*f7379be0SRobert Mustacchi  * Copyright 2024 Oxide Computer Company
14fe82ebb0SRobert Mustacchi  */
15fe82ebb0SRobert Mustacchi 
16fe82ebb0SRobert Mustacchi /*
17*f7379be0SRobert Mustacchi  * JESD402-1B Temperature Ranges
18fe82ebb0SRobert Mustacchi  */
19fe82ebb0SRobert Mustacchi 
20fe82ebb0SRobert Mustacchi #include <libjedec.h>
21fe82ebb0SRobert Mustacchi #include <sys/sysmacros.h>
22fe82ebb0SRobert Mustacchi 
23fe82ebb0SRobert Mustacchi typedef struct {
24fe82ebb0SRobert Mustacchi 	libjedec_temp_range_t	ltm_temp;
25fe82ebb0SRobert Mustacchi 	int32_t			ltm_min;
26fe82ebb0SRobert Mustacchi 	int32_t			ltm_max;
27fe82ebb0SRobert Mustacchi } libjedec_temp_map_t;
28fe82ebb0SRobert Mustacchi 
29fe82ebb0SRobert Mustacchi static const libjedec_temp_map_t libjedec_temp_map[] = {
30fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_A1T, -40, 125 },
31fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_A2T, -40, 105 },
32fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_A3T, -40, 85 },
33fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_IT, -40, 95 },
34fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_ET, -25, 105 },
35fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_ST, -25, 85 },
36fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_XT, 0, 95 },
37fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_NT, 0, 85 },
38fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_CASE_RT, 0, 45 },
39fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_AMB_CT, 0, 70 },
40fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_AMB_IOT, -40, 85 },
41fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_AMB_IPT, -40, 105 },
42fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_AMB_IXT, -40, 125 },
43fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_AMB_AO3T, -40, 85 },
44fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_AMB_AO2T, -40, 105 },
45fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_AMB_AO1T, -40, 125 },
46fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_STOR_2, -55, 125 },
47fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_STOR_1B, -55, 100 },
48fe82ebb0SRobert Mustacchi 	{ JEDEC_TEMP_STOR_1A, -40, 105 },
49*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_STOR_ST, -40, 85 },
50*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A135, -40, 135 },
51*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A130, -40, 130 },
52*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A1T, -40, 125 },
53*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A120, -40, 120 },
54*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A115, -40, 115 },
55*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A110, -40, 110 },
56*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A2T, -40, 105 },
57*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A100, -40, 100 },
58*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A95, -40, 95 },
59*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A90, -40, 90 },
60*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_A3T, -40, 85 },
61*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT135, -40, 135 },
62*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT130, -40, 130 },
63*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT125, -40, 125 },
64*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT120, -40, 120 },
65*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT115, -40, 115 },
66*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT110, -40, 110 },
67*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT105, -40, 105 },
68*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT100, -40, 100 },
69*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_IT, -40, 95 },
70*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT90, -40, 90 },
71*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_LT85, -40, 85 },
72*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_ET120, -25, 120 },
73*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_ET115, -25, 115 },
74*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_ET110, -25, 110 },
75*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_ET, -25, 105 },
76*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_ET100, -25, 100 },
77*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_ET95, -25, 95 },
78*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_ET90, -25, 90 },
79*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_ST, -25, 85 },
80*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_120, 0, 120 },
81*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_115, 0, 115 },
82*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_110, 0, 110 },
83*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_105, 0, 105 },
84*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_100, 0, 100 },
85*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_XT, 0, 95 },
86*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_90, 0, 90 },
87*f7379be0SRobert Mustacchi 	{ JEDEC_TEMP_JNCT_NT, 0, 85 }
88fe82ebb0SRobert Mustacchi };
89fe82ebb0SRobert Mustacchi 
90fe82ebb0SRobert Mustacchi boolean_t
libjedec_temp_range(libjedec_temp_range_t temp,int32_t * min,int32_t * max)91fe82ebb0SRobert Mustacchi libjedec_temp_range(libjedec_temp_range_t temp, int32_t *min, int32_t *max)
92fe82ebb0SRobert Mustacchi {
93fe82ebb0SRobert Mustacchi 	for (size_t i = 0; i < ARRAY_SIZE(libjedec_temp_map); i++) {
94fe82ebb0SRobert Mustacchi 		if (temp == libjedec_temp_map[i].ltm_temp) {
95fe82ebb0SRobert Mustacchi 			*min = libjedec_temp_map[i].ltm_min;
96fe82ebb0SRobert Mustacchi 			*max = libjedec_temp_map[i].ltm_max;
97fe82ebb0SRobert Mustacchi 			return (B_TRUE);
98fe82ebb0SRobert Mustacchi 		}
99fe82ebb0SRobert Mustacchi 	}
100fe82ebb0SRobert Mustacchi 
101fe82ebb0SRobert Mustacchi 	return (B_FALSE);
102fe82ebb0SRobert Mustacchi }
103