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
|
/*
Catalyst PCIBX32 PCI Extender control utility
Copyright (c) 2006-2009 Michael Buesch <mb@bu3sch.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef PCIBX_DEVICE_H_
#define PCIBX_DEVICE_H_
#include <stdint.h>
#define PCIBX_REG_FIRMREV 0x50
#define PCIBX_REG_BOARDID 0x53
#define PCIBX_REG_GLOBALPWR 0x63
#define PCIBX_REG_UUTVOLT 0x64
#define PCIBX_REG_AUX5V 0x65
#define PCIBX_REG_AUX33V 0x66
#define PCIBX_REG_MEASURE_CTL 0x67
#define PCIBX_REG_MEASURE_CONV 0x68
#define PCIBX_REG_MEASURE_STROBE 0x69
#define PCIBX_REG_MEASURE_DATA0 0x6A
#define PCIBX_REG_MEASURE_DATA1 0x6B
#define PCIBX_REG_PME 0x6F
#define PCIBX_REG_RST_0 0x71
#define PCIBX_REG_RST_1 0x72
#define PCIBX_REG_RST_2 0x73
#define PCIBX_REG_STATUS 0x76
#define PCIBX_REG_CLEARBITSTAT 0x77
#define PCIBX_REG_FREQMEASURE_CTL 0x7B
#define PCIBX_REG_FREQMEASURE_0 0x78
#define PCIBX_REG_FREQMEASURE_1 0x79
#define PCIBX_REG_FREQMEASURE_2 0x7A
#define PCIBX_REG_RAMP 0x7C
#define PCIBX_REGOFFSET_PCI1 0x00
#define PCIBX_REGOFFSET_PCI2 0x80
#define PCIBX_STATUS_RSTDEASS (1 << 0)
#define PCIBX_STATUS_64BIT (1 << 1)
#define PCIBX_STATUS_32BIT (1 << 2)
#define PCIBX_STATUS_MHZ (1 << 3)
#define PCIBX_STATUS_DUTASS (1 << 4)
struct pcibx_device {
const char *port;
int fd;
uint8_t regoffset;
};
enum measure_id {
MEASURE_V25REF = 0x08,
MEASURE_V12UUT = 0x09,
MEASURE_V5UUT = 0x0A,
MEASURE_V33UUT = 0x0B,
MEASURE_V5AUX = 0x0C,
MEASURE_A5 = 0x0D,
MEASURE_A12 = 0x0E,
MEASURE_A33 = 0x0F,
};
int pcibx_device_init(struct pcibx_device *dev,
const char *port,
int is_pci1);
void pcibx_device_exit(struct pcibx_device *dev);
void pcibx_cmd_global_pwr(struct pcibx_device *dev, int on);
void pcibx_cmd_uut_pwr(struct pcibx_device *dev, int on);
uint8_t pcibx_cmd_getboardid(struct pcibx_device *dev);
uint8_t pcibx_cmd_getfirmrev(struct pcibx_device *dev);
uint8_t pcibx_cmd_getstatus(struct pcibx_device *dev);
void pcibx_cmd_clearbitstat(struct pcibx_device *dev);
void pcibx_cmd_aux5(struct pcibx_device *dev, int on);
void pcibx_cmd_aux33(struct pcibx_device *dev, int on);
float pcibx_cmd_sysfreq(struct pcibx_device *dev);
float pcibx_cmd_measure(struct pcibx_device *dev, enum measure_id id);
void pcibx_cmd_ramp(struct pcibx_device *dev, int fast);
void pcibx_cmd_rst(struct pcibx_device *dev, double sec);
void pcibx_cmd_rstdefault(struct pcibx_device *dev);
uint8_t pcibx_cmd_getpme(struct pcibx_device *dev);
#endif /* PCIBX_DEVICE_H_ */
|