Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | /* |
2 | i2c-vid.h - Part of lm_sensors, Linux kernel modules for hardware |
||
3 | monitoring |
||
4 | Copyright (c) 2002 Mark D. Studebaker <mdsxyz123@yahoo.com> |
||
5 | With assistance from Trent Piepho <xyzzy@speakeasy.org> |
||
6 | |||
7 | This program is free software; you can redistribute it and/or modify |
||
8 | it under the terms of the GNU General Public License as published by |
||
9 | the Free Software Foundation; either version 2 of the License, or |
||
10 | (at your option) any later version. |
||
11 | |||
12 | This program is distributed in the hope that it will be useful, |
||
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
15 | GNU General Public License for more details. |
||
16 | |||
17 | You should have received a copy of the GNU General Public License |
||
18 | along with this program; if not, write to the Free Software |
||
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
||
20 | */ |
||
21 | |||
22 | /* |
||
23 | This file contains common code for decoding VID pins. |
||
24 | This file is #included in various chip drivers in this directory. |
||
25 | As the user is unlikely to load more than one driver which |
||
26 | includes this code we don't worry about the wasted space. |
||
27 | Reference: VRM x.y DC-DC Converter Design Guidelines, |
||
28 | available at http://developer.intel.com |
||
29 | */ |
||
30 | |||
31 | /* |
||
32 | Legal val values 00 - 1F. |
||
33 | vrm is the Intel VRM document version. |
||
34 | Note: vrm version is scaled by 10 and the return value is scaled by 1000 |
||
35 | to avoid floating point in the kernel. |
||
36 | */ |
||
37 | |||
38 | #define DEFAULT_VRM 82 |
||
39 | |||
40 | static inline int vid_from_reg(int val, int vrm) |
||
41 | { |
||
42 | switch(vrm) { |
||
43 | |||
44 | case 91: /* VRM 9.1 */ |
||
45 | case 90: /* VRM 9.0 */ |
||
46 | return(val == 0x1f ? 0 : |
||
47 | 1850 - val * 25); |
||
48 | |||
49 | case 85: /* VRM 8.5 */ |
||
50 | return((val & 0x10 ? 25 : 0) + |
||
51 | ((val & 0x0f) > 0x04 ? 2050 : 1250) - |
||
52 | ((val & 0x0f) * 50)); |
||
53 | |||
54 | case 84: /* VRM 8.4 */ |
||
55 | val &= 0x0f; |
||
56 | /* fall through */ |
||
57 | default: /* VRM 8.2 */ |
||
58 | return(val == 0x1f ? 0 : |
||
59 | val & 0x10 ? 5100 - (val) * 100 : |
||
60 | 2050 - (val) * 50); |
||
61 | } |
||
62 | } |