1 1.1 brad /* $NetBSD: emcfanreg.h,v 1.1 2025/03/11 13:56:46 brad Exp $ */ 2 1.1 brad 3 1.1 brad /* 4 1.1 brad * Copyright (c) 2025 Brad Spencer <brad (at) anduin.eldar.org> 5 1.1 brad * 6 1.1 brad * Permission to use, copy, modify, and distribute this software for any 7 1.1 brad * purpose with or without fee is hereby granted, provided that the above 8 1.1 brad * copyright notice and this permission notice appear in all copies. 9 1.1 brad * 10 1.1 brad * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 1.1 brad * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 1.1 brad * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 1.1 brad * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 1.1 brad * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 1.1 brad * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 1.1 brad * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 1.1 brad */ 18 1.1 brad 19 1.1 brad #ifndef _DEV_I2C_EMCFANREG_H_ 20 1.1 brad #define _DEV_I2C_EMCFANREG_H_ 21 1.1 brad 22 1.1 brad #include <dev/i2c/i2c_io.h> 23 1.1 brad 24 1.1 brad static const i2c_addr_t emcfan_typical_addrs[] = { 0x2c, 0x2d, 0x2e, 0x2f, 0x4c, 0x4d }; 25 1.1 brad 26 1.1 brad #define EMCFAN_VOID_READ 0x55 27 1.1 brad 28 1.1 brad #define EMCFAN_INTERNAL_TEMP_HIGH 0x00 29 1.1 brad #define EMCFAN_INTERNAL_TEMP_LOW 0x01 30 1.1 brad #define EMCFAN_2101_EXTERNAL_TEMP_HIGH 0x01 31 1.1 brad #define EMCFAN_2101_CHIP_CONFIG 0x03 32 1.1 brad #define EMCFAN_EXTERNAL_1_TEMP_HIGH 0x02 33 1.1 brad #define EMCFAN_2101_EXTERNAL_TEMP_LOW 0x10 34 1.1 brad #define EMCFAN_EXTERNAL_1_TEMP_LOW 0x03 35 1.1 brad #define EMCFAN_EXTERNAL_2_TEMP_HIGH 0x04 36 1.1 brad #define EMCFAN_EXTERNAL_2_TEMP_LOW 0x05 37 1.1 brad #define EMCFAN_EXTERNAL_3_TEMP_HIGH 0x06 38 1.1 brad #define EMCFAN_EXTERNAL_3_TEMP_LOW 0x07 39 1.1 brad #define EMCFAN_EXTERNAL_4_TEMP_HIGH 0x08 40 1.1 brad #define EMCFAN_EXTERNAL_4_TEMP_LOW 0x09 41 1.1 brad 42 1.1 brad #define EMCFAN_VIN4_VOLTAGE 0x10 43 1.1 brad 44 1.1 brad #define EMCFAN_CHIP_CONFIG 0x20 45 1.1 brad #define EMCFAN_CHIP_CONFIG_2 0x21 46 1.1 brad #define EMCFAN_TEMP_CONFIG_3 0x22 47 1.1 brad #define EMCFAN_210_346_FAN_STATUS 0x27 48 1.1 brad #define EMCFAN_POLARITY_CONFIG 0x2a 49 1.1 brad 50 1.1 brad #define EMCFAN_210_346_PWM_BASEFREQ 0x2b 51 1.1 brad #define EMCFAN_2106_FAN_3_DIVIDE 0x2c 52 1.1 brad #define EMCFAN_2106_FAN_3_DRIVE 0x2d 53 1.1 brad #define EMCFAN_2106_FAN_4_DRIVE 0x2e 54 1.1 brad #define EMCFAN_2106_FAN_4_DIVIDE 0x2f 55 1.1 brad #define EMCFAN_2101_TACH_LOW 0x46 56 1.1 brad #define EMCFAN_2101_TACH_HIGH 0x47 57 1.1 brad #define EMCFAN_2101_FAN_CONFIG 0x4a 58 1.1 brad #define EMCFAN_2101_FAN_DRIVE 0x4c 59 1.1 brad #define EMCFAN_2101_FAN_DIVIDE 0x4e 60 1.1 brad #define EMCFAN_210_346_FAN_1_DRIVE 0x40 61 1.1 brad #define EMCFAN_210_346_FAN_1_DIVIDE 0x41 62 1.1 brad #define EMCFAN_210_346_CONFIG_1 0x42 63 1.1 brad #define EMCFAN_210_346_TACH_1_HIGH 0x4e 64 1.1 brad #define EMCFAN_210_346_TACH_1_LOW 0x4f 65 1.1 brad #define EMCFAN_210_346_CONFIG_2 0x82 66 1.1 brad #define EMCFAN_210_346_FAN_2_DRIVE 0x80 67 1.1 brad #define EMCFAN_210_346_FAN_2_DIVIDE 0x81 68 1.1 brad #define EMCFAN_210_346_TACH_2_HIGH 0x8e 69 1.1 brad #define EMCFAN_210_346_TACH_2_LOW 0x8f 70 1.1 brad 71 1.1 brad #define EMCFAN_230X_FAN_STATUS 0x24 72 1.1 brad #define EMCFAN_230X_FAN_STALL_STATUS 0x25 73 1.1 brad #define EMCFAN_230X_FAN_SPIN_STATUS 0x26 74 1.1 brad #define EMCFAN_230X_FAN_DRIVE_STATUS 0x27 75 1.1 brad #define EMCFAN_230X_OUTPUT_CONFIG 0x2b 76 1.1 brad #define EMCFAN_230X_BASE_FREQ_45 0x2c 77 1.1 brad #define EMCFAN_230X_BASE_FREQ_123 0x2d 78 1.1 brad #define EMCFAN_230X_FAN_1_DRIVE 0x30 79 1.1 brad #define EMCFAN_230X_FAN_1_DIVIDE 0x31 80 1.1 brad #define EMCFAN_230X_CONFIG_1 0x32 81 1.1 brad #define EMCFAN_230X_TACH_1_HIGH 0x3e 82 1.1 brad #define EMCFAN_230X_TACH_1_LOW 0x3f 83 1.1 brad #define EMCFAN_230X_FAN_2_DRIVE 0x40 84 1.1 brad #define EMCFAN_230X_FAN_2_DIVIDE 0x41 85 1.1 brad #define EMCFAN_230X_CONFIG_2 0x42 86 1.1 brad #define EMCFAN_230X_TACH_2_HIGH 0x4e 87 1.1 brad #define EMCFAN_230X_TACH_2_LOW 0x4f 88 1.1 brad #define EMCFAN_230X_FAN_3_DRIVE 0x50 89 1.1 brad #define EMCFAN_230X_FAN_3_DIVIDE 0x51 90 1.1 brad #define EMCFAN_230X_CONFIG_3 0x52 91 1.1 brad #define EMCFAN_230X_TACH_3_HIGH 0x5e 92 1.1 brad #define EMCFAN_230X_TACH_3_LOW 0x5f 93 1.1 brad #define EMCFAN_230X_FAN_4_DRIVE 0x60 94 1.1 brad #define EMCFAN_230X_FAN_4_DIVIDE 0x61 95 1.1 brad #define EMCFAN_230X_CONFIG_4 0x62 96 1.1 brad #define EMCFAN_230X_TACH_4_HIGH 0x6e 97 1.1 brad #define EMCFAN_230X_TACH_4_LOW 0x6f 98 1.1 brad #define EMCFAN_230X_FAN_5_DRIVE 0x70 99 1.1 brad #define EMCFAN_230X_FAN_5_DIVIDE 0x71 100 1.1 brad #define EMCFAN_230X_CONFIG_5 0x72 101 1.1 brad #define EMCFAN_230X_TACH_5_HIGH 0x7e 102 1.1 brad #define EMCFAN_230X_TACH_5_LOW 0x7f 103 1.1 brad 104 1.1 brad #define EMCFAN_PRODUCT_ID 0xfd 105 1.1 brad #define EMCFAN_PRODUCT_2101 0x16 106 1.1 brad #define EMCFAN_PRODUCT_2101R 0x28 107 1.1 brad #define EMCFAN_PRODUCT_2103_1 0x24 108 1.1 brad #define EMCFAN_PRODUCT_2103_24 0x26 /* EMC2103-2 and EMC2103-4 */ 109 1.1 brad #define EMCFAN_PRODUCT_2104 0x1d 110 1.1 brad #define EMCFAN_PRODUCT_2106 0x1e 111 1.1 brad #define EMCFAN_PRODUCT_2305 0x34 112 1.1 brad #define EMCFAN_PRODUCT_2303 0x35 113 1.1 brad #define EMCFAN_PRODUCT_2302 0x36 114 1.1 brad #define EMCFAN_PRODUCT_2301 0x37 115 1.1 brad #define EMCFAN_MUX_PINS 0xe0 116 1.1 brad #define EMCFAN_DIR_PINS 0xe1 117 1.1 brad #define EMCFAN_OUTPUT_PIN_CONFIG 0xe2 118 1.1 brad #define EMCFAN_PINS_INPUT 0xe3 119 1.1 brad #define EMCFAN_PINS_OUTPUT 0xe4 120 1.1 brad #define EMCFAN_MANUFACTURER_ID 0xfe 121 1.1 brad #define EMCFAN_VALID_MANUFACTURER_ID 0x5d 122 1.1 brad #define EMCFAN_REVISION 0xff 123 1.1 brad 124 1.1 brad #define EMCFAN_FAMILY_210X 1 125 1.1 brad #define EMCFAN_FAMILY_230X 2 126 1.1 brad 127 1.1 brad #endif 128