summaryrefslogtreecommitdiff
path: root/sys/dev/i2c/adm1026reg.h
blob: bacc39e5741db4c9628aa28489c90f456b6c35ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/*-
 * Copyright (c) 2015 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Julian Coleman.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _DEV_I2C_ADM1026REG_H_
#define _DEV_I2C_ADM1026REG_H_

/*
 * Register definitions for "ADM1026 Thermal System Management Fan Controller"
 * Datasheet available from (URL valid as of December 2015):
 *   http://www.onsemi.com/pub_link/Collateral/ADM1026-D.PDF
 */

#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: adm1026reg.h,v 1.5 2020/04/16 23:29:53 rin Exp $");

#define ADM1026_ADDR1		0x2c

#define ADM1026_CONF1		0x00
#define ADM1026_CONF2		0x01
#define ADM1026_FAN_DIV1	0x02
#define ADM1026_FAN_DIV2	0x03
#define ADM1026_DAC_CTRL	0x04
#define ADM1026_PWM_CTRL	0x05
#define ADM1026_EEPROM		0x06
#define ADM1026_TVG_CONF	0x07	/* THERM, V-REF and GPIO16 */
#define ADM1026_GPIO_CONF1	0x08
#define ADM1026_GPIO_CONF2	0x09
#define ADM1026_GPIO_CONF3	0x0a
#define ADM1026_GPIO_CONF4	0x0b
#define ADM1026_EEPROM2		0x0c
#define ADM1026_INT_THERM_MAX	0x0d
#define ADM1026_TDM1_THERM_MAX	0x0e
#define ADM1026_TDM2_THERM_MAX	0x0f
#define ADM1026_INT_FAN_MIN	0x10
#define ADM1026_TDM1_FAN_MIN	0x11
#define ADM1026_TDM2_FAN_MIN	0x12
#define ADM1026_EEPROM3		0x13
#define ADM1026_TEST1		0x14
#define ADM1026_TEST2		0x15
#define ADM1026_ID		0x16
#define ADM1026_REV		0x17
#define ADM1026_MASK1		0x18	/* Temperature and supply voltage */
#define ADM1026_MASK2		0x19	/* Analogue input */
#define ADM1026_MASK3		0x1a	/* Fan */
#define ADM1026_MASK4		0x1b	/* Temp, V-Batt, A-In8, Therm,
					   AFC, CI, GPIO 16 */
#define ADM1026_MASK5		0x1c	/* GPIO 0-7 */
#define ADM1026_MASK6		0x1d	/* GPIO 8-15 */
#define ADM1026_INT_TEMP_OFF	0x1e
#define ADM1026_INT_TEMP_VAL	0x1f
#define ADM1026_STAT1		0x20	/* External temp, and supply voltage */
#define ADM1026_STAT2		0x21	/* Analogue input */
#define ADM1026_STAT3		0x22	/* Fan */
#define ADM1026_STAT4		0x23	/* Temp, V-Batt, A-In8, Therm,
					   AFC, CI, GPIO 16 */
#define ADM1026_STAT5		0x24	/* GPIO 0-7 */
#define ADM1026_STAT6		0x25	/* GPIO 8-15 */
#define ADM1026_VBAT_VAL	0x26
#define ADM1026_AIN8_VAL	0x27
#define ADM1026_TDM1_VAL	0x28
#define ADM1026_TDM2_AIN9_VAL	0x29
#define ADM1026_33VSTBY_VAL	0x2a
#define ADM1026_33VMAIN_VAL	0x2b
#define ADM1026_50V_VAL		0x2c
#define ADM1026_VCCP_VAL	0x2d
#define ADM1026_12V_VAL		0x2e
#define ADM1026_N12V_VAL	0x2f
/* 8 analog in registers: 0x30 to 0x37 */
#define ADM1026_AIN_VAL(x)	(0x30 + x)
/* 8 fan value registers: 0x38 to 0x3f */
#define ADM1026_FAN_VAL(x)	(0x38 + x)
#define ADM1026_TDM1_MAX	0x40
#define ADM1026_TDM2_AIN9_MAX	0x41
#define ADM1026_33V_STBY_MAX	0x42
#define ADM1026_33V_MAIN_MAX	0x43
#define ADM1026_50V_MAX		0x44
#define ADM1026_VCCP_MAX	0x45
#define ADM1026_12V_MAX		0x46
#define ADM1026_N12V_MAX	0x47
#define ADM1026_TDM1_MIN	0x48
#define ADM1026_TDM2_AIN9_MIN	0x49
#define ADM1026_33V_STBY_MIN	0x4a
#define ADM1026_33V_MAIN_MIN	0x4b
#define ADM1026_50V_MIN		0x4c
#define ADM1026_VCCP_MIN	0x4d
#define ADM1026_12V_MIN		0x4e
#define ADM1026_N12V_MIN	0x4f
/* 8 analog in high limit registers: 0x50 to 0x57 */
#define ADM1026_AIN_MAX(x)	(0x50 + x)
/* 8 analog in low limit registers: 0x58 to 0x5f */
#define ADM1026_AIN_MIN(x)	(0x58 + x)
/* 8 fan high limit registers: 0x60 to 0x67 (no low limit registers) */
#define ADM1026_FAN_MAX(x)	(0x60 + x)
#define ADM1026_INT_TEMP_MAX	0x68
#define ADM1026_INT_TEMP_MIN	0x69
#define ADM1026_VBATT_MAX	0x6a
#define ADM1026_VBATT_MIN	0x6b
#define ADM1026_AIN8_MAX	0x6c
#define ADM1026_AIN8_MIN	0x6d
#define ADM1026_TDM1_OFF	0x6e
#define ADM1026_TDM2_OFF	0x6f

/* 0x00: Configuration register 1 */
#define ADM1026_CONF1_MONITOR	0x01	/* Start monitoring */
#define ADM1026_PIN_IS_TDM2(val)	((val & 0x08) == 0)

/* 0x01: Configuration register 2 */
#define ADM1026_PIN_IS_FAN(val, x)	((val & (1 << x)) == 0)

/* 0x02/0x03: Fan 0-7 divisors */
#define ADM1026_FAN0_DIV(x)	(x & 0x03)
#define ADM1026_FAN1_DIV(x)	((x >> 2) & 0x03)
#define ADM1026_FAN2_DIV(x)	((x >> 4) & 0x03)
#define ADM1026_FAN3_DIV(x)	((x >> 6) & 0x03)
#define ADM1026_FAN4_DIV(x)	ADM1026_FAN0_DIV(x)
#define ADM1026_FAN5_DIV(x)	ADM1026_FAN1_DIV(x)
#define ADM1026_FAN6_DIV(x)	ADM1026_FAN2_DIV(x)
#define ADM1026_FAN7_DIV(x)	ADM1026_FAN3_DIV(x)

/* 0x16/0x17: Manufacturer and revision ID's */
#define ADM1026_MANF_ID		0x41	/* Manufacturer ID 0x41 */
#define ADM1026_REVISION(x)	((x & 0xf0) >> 4)
#define ADM1026_MANF_REV	0x04	/* Manufacturer revision 0x04 */
#define ADM1026_STEPPING(x)	(x & 0x0f)

#endif /* _DEV_I2C_ADM1026REG_H_ */