blob: 0de9616b24ed4ae8d74a45d441773d94d52f1469 [file] [log] [blame]
Guenter Roeck57d60b12014-05-12 10:11:32 -07001Kernel driver emc1403
2=====================
3
4Supported chips:
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -03005
Guenter Roeck57d60b12014-05-12 10:11:32 -07006 * SMSC / Microchip EMC1402, EMC1412
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -03007
Guenter Roeck57d60b12014-05-12 10:11:32 -07008 Addresses scanned: I2C 0x18, 0x1c, 0x29, 0x4c, 0x4d, 0x5c
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -03009
Guenter Roeck57d60b12014-05-12 10:11:32 -070010 Prefix: 'emc1402'
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030011
Guenter Roeck57d60b12014-05-12 10:11:32 -070012 Datasheets:
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030013
14 - http://ww1.microchip.com/downloads/en/DeviceDoc/1412.pdf
Alexander A. Klimovad736c12020-07-19 19:55:12 +020015 - https://ww1.microchip.com/downloads/en/DeviceDoc/1402.pdf
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030016
Guenter Roeck57d60b12014-05-12 10:11:32 -070017 * SMSC / Microchip EMC1403, EMC1404, EMC1413, EMC1414
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030018
Guenter Roeck57d60b12014-05-12 10:11:32 -070019 Addresses scanned: I2C 0x18, 0x29, 0x4c, 0x4d
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030020
Guenter Roeck57d60b12014-05-12 10:11:32 -070021 Prefix: 'emc1403', 'emc1404'
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030022
Guenter Roeck57d60b12014-05-12 10:11:32 -070023 Datasheets:
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030024
25 - http://ww1.microchip.com/downloads/en/DeviceDoc/1403_1404.pdf
26 - http://ww1.microchip.com/downloads/en/DeviceDoc/1413_1414.pdf
27
Guenter Roeck57d60b12014-05-12 10:11:32 -070028 * SMSC / Microchip EMC1422
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030029
Guenter Roeck57d60b12014-05-12 10:11:32 -070030 Addresses scanned: I2C 0x4c
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030031
Guenter Roeck57d60b12014-05-12 10:11:32 -070032 Prefix: 'emc1422'
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030033
Guenter Roeck57d60b12014-05-12 10:11:32 -070034 Datasheet:
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030035
Alexander A. Klimovad736c12020-07-19 19:55:12 +020036 - https://ww1.microchip.com/downloads/en/DeviceDoc/1422.pdf
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030037
Guenter Roeck57d60b12014-05-12 10:11:32 -070038 * SMSC / Microchip EMC1423, EMC1424
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030039
Guenter Roeck57d60b12014-05-12 10:11:32 -070040 Addresses scanned: I2C 0x4c
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030041
Guenter Roeck57d60b12014-05-12 10:11:32 -070042 Prefix: 'emc1423', 'emc1424'
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030043
Guenter Roeck57d60b12014-05-12 10:11:32 -070044 Datasheet:
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030045
Alexander A. Klimovad736c12020-07-19 19:55:12 +020046 - https://ww1.microchip.com/downloads/en/DeviceDoc/1423_1424.pdf
Guenter Roeck57d60b12014-05-12 10:11:32 -070047
48Author:
49 Kalhan Trisal <kalhan.trisal@intel.com
50
51
52Description
53-----------
54
55The Standard Microsystems Corporation (SMSC) / Microchip EMC14xx chips
56contain up to four temperature sensors. EMC14x2 support two sensors
57(one internal, one external). EMC14x3 support three sensors (one internal,
58two external), and EMC14x4 support four sensors (one internal, three
59external).
60
61The chips implement three limits for each sensor: low (tempX_min), high
62(tempX_max) and critical (tempX_crit.) The chips also implement an
63hysteresis mechanism which applies to all limits. The relative difference
64is stored in a single register on the chip, which means that the relative
65difference between the limit and its hysteresis is always the same for
66all three limits.
67
68This implementation detail implies the following:
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030069
Guenter Roeck57d60b12014-05-12 10:11:32 -070070* When setting a limit, its hysteresis will automatically follow, the
71 difference staying unchanged. For example, if the old critical limit
72 was 80 degrees C, and the hysteresis was 75 degrees C, and you change
73 the critical limit to 90 degrees C, then the hysteresis will
74 automatically change to 85 degrees C.
Guenter Roeck84899d32014-05-12 11:10:56 -070075* The hysteresis values can't be set independently. We decided to make
76 only temp1_crit_hyst writable, while all other hysteresis attributes
77 are read-only. Setting temp1_crit_hyst writes the difference between
78 temp1_crit_hyst and temp1_crit into the chip, and the same relative
79 hysteresis applies automatically to all other limits.
Guenter Roeck57d60b12014-05-12 10:11:32 -070080* The limits should be set before the hysteresis.