vserver 1.9.3
[linux-2.6.git] / include / asm-ppc64 / rtas.h
index d596ec5..414b755 100644 (file)
 /* Buffer size for ppc_rtas system call. */
 #define RTAS_RMOBUF_MAX (64 * 1024)
 
-/* RTAS return codes */
-#define RTAS_BUSY              -2      /* RTAS Return Status - Busy */
-#define RTAS_EXTENDED_DELAY_MIN 9900
-#define RTAS_EXTENDED_DELAY_MAX 9905
+/* RTAS return status codes */
+#define RTAS_BUSY              -2    /* RTAS Busy */
+#define RTAS_NO_SUCH_INDICATOR -3    /* No such indicator implemented */
+#define RTAS_EXTENDED_DELAY_MIN        9900
+#define RTAS_EXTENDED_DELAY_MAX        9905
 
-#define RTAS_UNKNOWN_OP                -1099   /* Return Status - Unknown RTAS Token */
+#define RTAS_UNKNOWN_OP                -1099 /* Unknown RTAS Token */
 
 /*
  * In general to call RTAS use rtas_token("string") to lookup
@@ -65,67 +66,78 @@ struct rtas_t {
        struct device_node *dev;        /* virtual address pointer */
 };
 
-/* Event classes */
+/* RTAS event classes */
 #define RTAS_INTERNAL_ERROR            0x80000000 /* set bit 0 */
 #define RTAS_EPOW_WARNING              0x40000000 /* set bit 1 */
 #define RTAS_POWERMGM_EVENTS           0x20000000 /* set bit 2 */
 #define RTAS_HOTPLUG_EVENTS            0x10000000 /* set bit 3 */
 #define RTAS_EVENT_SCAN_ALL_EVENTS     0xf0000000
 
-/* event-scan returns */
-#define SEVERITY_FATAL         0x5
-#define SEVERITY_ERROR         0x4
-#define SEVERITY_ERROR_SYNC    0x3
-#define SEVERITY_WARNING       0x2
-#define SEVERITY_EVENT         0x1
-#define SEVERITY_NO_ERROR      0x0
-#define DISP_FULLY_RECOVERED   0x0
-#define DISP_LIMITED_RECOVERY  0x1
-#define DISP_NOT_RECOVERED     0x2
-#define PART_PRESENT           0x0
-#define PART_NOT_PRESENT       0x1
-#define INITIATOR_UNKNOWN      0x0
-#define INITIATOR_CPU          0x1
-#define INITIATOR_PCI          0x2
-#define INITIATOR_ISA          0x3
-#define INITIATOR_MEMORY       0x4
-#define INITIATOR_POWERMGM     0x5
-#define TARGET_UNKNOWN         0x0
-#define TARGET_CPU             0x1
-#define TARGET_PCI             0x2
-#define TARGET_ISA             0x3
-#define TARGET_MEMORY          0x4
-#define TARGET_POWERMGM                0x5
-#define TYPE_RETRY             0x01
-#define TYPE_TCE_ERR           0x02
-#define TYPE_INTERN_DEV_FAIL   0x03
-#define TYPE_TIMEOUT           0x04
-#define TYPE_DATA_PARITY       0x05
-#define TYPE_ADDR_PARITY       0x06
-#define TYPE_CACHE_PARITY      0x07
-#define TYPE_ADDR_INVALID      0x08
-#define TYPE_ECC_UNCORR                0x09
-#define TYPE_ECC_CORR          0x0a
-#define TYPE_EPOW              0x40
+/* RTAS event severity */
+#define RTAS_SEVERITY_FATAL            0x5
+#define RTAS_SEVERITY_ERROR            0x4
+#define RTAS_SEVERITY_ERROR_SYNC       0x3
+#define RTAS_SEVERITY_WARNING          0x2
+#define RTAS_SEVERITY_EVENT            0x1
+#define RTAS_SEVERITY_NO_ERROR         0x0
+
+/* RTAS event disposition */
+#define RTAS_DISP_FULLY_RECOVERED      0x0
+#define RTAS_DISP_LIMITED_RECOVERY     0x1
+#define RTAS_DISP_NOT_RECOVERED                0x2
+
+/* RTAS event initiator */
+#define RTAS_INITIATOR_UNKNOWN         0x0
+#define RTAS_INITIATOR_CPU             0x1
+#define RTAS_INITIATOR_PCI             0x2
+#define RTAS_INITIATOR_ISA             0x3
+#define RTAS_INITIATOR_MEMORY          0x4
+#define RTAS_INITIATOR_POWERMGM                0x5
+
+/* RTAS event target */
+#define RTAS_TARGET_UNKNOWN            0x0
+#define RTAS_TARGET_CPU                        0x1
+#define RTAS_TARGET_PCI                        0x2
+#define RTAS_TARGET_ISA                        0x3
+#define RTAS_TARGET_MEMORY             0x4
+#define RTAS_TARGET_POWERMGM           0x5
+
+/* RTAS event type */
+#define RTAS_TYPE_RETRY                        0x01
+#define RTAS_TYPE_TCE_ERR              0x02
+#define RTAS_TYPE_INTERN_DEV_FAIL      0x03
+#define RTAS_TYPE_TIMEOUT              0x04
+#define RTAS_TYPE_DATA_PARITY          0x05
+#define RTAS_TYPE_ADDR_PARITY          0x06
+#define RTAS_TYPE_CACHE_PARITY         0x07
+#define RTAS_TYPE_ADDR_INVALID         0x08
+#define RTAS_TYPE_ECC_UNCORR           0x09
+#define RTAS_TYPE_ECC_CORR             0x0a
+#define RTAS_TYPE_EPOW                 0x40
+#define RTAS_TYPE_PLATFORM             0xE0
+#define RTAS_TYPE_IO                   0xE1
+#define RTAS_TYPE_INFO                 0xE2
+#define RTAS_TYPE_DEALLOC              0xE3
+#define RTAS_TYPE_DUMP                 0xE4
 /* I don't add PowerMGM events right now, this is a different topic */ 
-#define TYPE_PMGM_POWER_SW_ON  0x60
-#define TYPE_PMGM_POWER_SW_OFF 0x61
-#define TYPE_PMGM_LID_OPEN     0x62
-#define TYPE_PMGM_LID_CLOSE    0x63
-#define TYPE_PMGM_SLEEP_BTN    0x64
-#define TYPE_PMGM_WAKE_BTN     0x65
-#define TYPE_PMGM_BATTERY_WARN 0x66
-#define TYPE_PMGM_BATTERY_CRIT 0x67
-#define TYPE_PMGM_SWITCH_TO_BAT        0x68
-#define TYPE_PMGM_SWITCH_TO_AC 0x69
-#define TYPE_PMGM_KBD_OR_MOUSE 0x6a
-#define TYPE_PMGM_ENCLOS_OPEN  0x6b
-#define TYPE_PMGM_ENCLOS_CLOSED        0x6c
-#define TYPE_PMGM_RING_INDICATE        0x6d
-#define TYPE_PMGM_LAN_ATTENTION        0x6e
-#define TYPE_PMGM_TIME_ALARM   0x6f
-#define TYPE_PMGM_CONFIG_CHANGE        0x70
-#define TYPE_PMGM_SERVICE_PROC 0x71
+#define RTAS_TYPE_PMGM_POWER_SW_ON     0x60
+#define RTAS_TYPE_PMGM_POWER_SW_OFF    0x61
+#define RTAS_TYPE_PMGM_LID_OPEN                0x62
+#define RTAS_TYPE_PMGM_LID_CLOSE       0x63
+#define RTAS_TYPE_PMGM_SLEEP_BTN       0x64
+#define RTAS_TYPE_PMGM_WAKE_BTN                0x65
+#define RTAS_TYPE_PMGM_BATTERY_WARN    0x66
+#define RTAS_TYPE_PMGM_BATTERY_CRIT    0x67
+#define RTAS_TYPE_PMGM_SWITCH_TO_BAT   0x68
+#define RTAS_TYPE_PMGM_SWITCH_TO_AC    0x69
+#define RTAS_TYPE_PMGM_KBD_OR_MOUSE    0x6a
+#define RTAS_TYPE_PMGM_ENCLOS_OPEN     0x6b
+#define RTAS_TYPE_PMGM_ENCLOS_CLOSED   0x6c
+#define RTAS_TYPE_PMGM_RING_INDICATE   0x6d
+#define RTAS_TYPE_PMGM_LAN_ATTENTION   0x6e
+#define RTAS_TYPE_PMGM_TIME_ALARM      0x6f
+#define RTAS_TYPE_PMGM_CONFIG_CHANGE   0x70
+#define RTAS_TYPE_PMGM_SERVICE_PROC    0x71
 
 struct rtas_error_log {
        unsigned long version:8;                /* Architectural version */
@@ -168,7 +180,7 @@ extern struct rtas_t rtas;
 extern void enter_rtas(unsigned long);
 extern int rtas_token(const char *service);
 extern int rtas_call(int token, int, int, int *, ...);
-extern void call_rtas_display_status(char);
+extern void call_rtas_display_status(unsigned char);
 extern void rtas_restart(char *cmd);
 extern void rtas_power_off(void);
 extern void rtas_halt(void);
@@ -177,6 +189,7 @@ extern int rtas_get_sensor(int sensor, int index, int *state);
 extern int rtas_get_power_level(int powerdomain, int *level);
 extern int rtas_set_power_level(int powerdomain, int level, int *setlevel);
 extern int rtas_set_indicator(int indicator, int index, int new_value);
+extern void rtas_initialize(void);
 
 /* Given an RTAS status code of 9900..9905 compute the hinted delay */
 unsigned int rtas_extended_busy_delay_time(int status);
@@ -199,8 +212,14 @@ extern void pSeries_log_error(char *buf, unsigned int err_type, int fatal);
 #define RTAS_DEBUG KERN_DEBUG "RTAS: "
  
 #define RTAS_ERROR_LOG_MAX 2048
+
+/*
+ * Return the firmware-specified size of the error log buffer
+ *  for all rtas calls that require an error buffer argument.
+ *  This includes 'check-exception' and 'rtas-last-error'.
+ */
+extern int rtas_get_error_log_max(void);
+
 /* Event Scan Parameters */
 #define EVENT_SCAN_ALL_EVENTS  0xf0000000
 #define SURVEILLANCE_TOKEN     9000