4
* Copyright (C) 2005 IBM Corporation
5
* Common Public License Version 1.0 (see COPYRIGHT)
7
* @author John Rose <johnrose@us.ibm.com>
17
#define EXTENDED_DELAY_MIN 9900
18
#define EXTENDED_DELAY_MAX 9905
20
#define PAGE_SIZE 4096
23
* When adding an RTAS call, argument list below should
24
* consist of an int token followed by the call arguments
25
* defined in librtas.h
27
struct rtas_operations {
28
int (*activate_firmware)(int token);
29
int (*cfg_connector)(int token, char *workarea);
30
int (*delay_timeout)(uint64_t timeout_ms);
31
int (*display_char)(int token, char c);
32
int (*display_msg)(int token, char *buf);
33
int (*errinjct)(int token, int etoken, int otoken, char *workarea);
34
int (*errinjct_close)(int token, int otoken);
35
int (*errinjct_open)(int token, int *otoken);
36
int (*free_rmo_buffer)(void *buf, uint32_t phys_addr, size_t size);
37
int (*get_config_addr_info2)(int token, uint32_t cfg_addr,
38
uint64_t phb_id, uint32_t func, uint32_t *info);
39
int (*get_dynamic_sensor)(int token, int sensor, void *loc_code,
41
int (*get_indices)(int token, int is_sensor, int type, char *workarea,
42
size_t size, int start, int *next);
43
int (*get_power_level)(int token, int powerdomain, int *level);
44
int (*get_rmo_buffer)(size_t size, void **buf, uint32_t *phys_addr);
45
int (*get_sensor)(int token, int sensor, int index, int *state);
46
int (*get_sysparm)(int token, unsigned int parameter,
47
unsigned int length, char *data);
48
int (*get_time)(int token, uint32_t *year, uint32_t *month,
49
uint32_t *day, uint32_t *hour, uint32_t *min,
50
uint32_t *sec, uint32_t *nsec);
51
int (*get_vpd)(int token, char *loc_code, char *workarea, size_t size,
52
unsigned int sequence, unsigned int *seq_next,
53
unsigned int *bytes_ret);
54
int (*lpar_perftools)(int token, int subfunc, char *workarea,
55
unsigned int length, unsigned int sequence,
56
unsigned int *seq_next);
57
int (*platform_dump)(int token, uint64_t dump_tag, uint64_t sequence,
58
void *buffer, size_t length,
59
uint64_t *next_seq, uint64_t *bytes_ret);
60
int (*read_slot_reset)(int token, uint32_t cfg_addr, uint64_t phbid,
61
int *state, int *eeh);
62
int (*scan_log_dump)(int token, void *buffer, size_t length);
63
int (*set_dynamic_indicator)(int token, int indicator, int new_value,
65
int (*set_eeh_option)(int token, uint32_t cfg_addr, uint64_t phbid,
67
int (*set_indicator)(int token, int indicator, int index,
69
int (*set_power_level)(int token, int powerdomain, int level,
71
int (*set_poweron_time)(int token, uint32_t year, uint32_t month,
72
uint32_t day, uint32_t hour, uint32_t min,
73
uint32_t sec, uint32_t nsec);
74
int (*set_sysparm)(int token, unsigned int parameter, char *data);
75
int (*set_time)(int token, uint32_t year, uint32_t month, uint32_t day,
76
uint32_t hour, uint32_t min, uint32_t sec,
78
int (*suspend_me)(int token, uint64_t streamid);
79
int (*update_nodes)(int token, char *workarea, unsigned int scope);
80
int (*update_properties)(int token, char *workarea, unsigned int scope);
81
int (*interface_exists)();
84
struct librtas_config {
85
struct rtas_operations *rtas_ops;
86
uint64_t rtas_timeout_ms;
90
extern int open_proc_rtas_file(const char *name, int mode);
91
extern int rtas_token(const char *call_name);
92
extern int read_entire_file(int fd, char **buf, size_t *len);
94
extern struct librtas_config config;
96
#define dbg(_lvl, _fmt, _args...) \
98
if (config.debug >= _lvl) \
99
printf("librtas %s(): " _fmt, __FUNCTION__, ##_args); \
102
#define dbg1(_fmt, _args...) \
104
dbg(1, _fmt, ##_args); \