12f9ce69eSAndrew Jones #ifndef _ASMPOWERPC_RTAS_H_ 22f9ce69eSAndrew Jones #define _ASMPOWERPC_RTAS_H_ 32f9ce69eSAndrew Jones /* 42f9ce69eSAndrew Jones * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com> 52f9ce69eSAndrew Jones * 62f9ce69eSAndrew Jones * This work is licensed under the terms of the GNU LGPL, version 2. 72f9ce69eSAndrew Jones */ 8f1ccf5d2SLaurent Vivier 9*0cc3a351SSean Christopherson #ifndef __ASSEMBLER__ 10f1ccf5d2SLaurent Vivier 112f9ce69eSAndrew Jones #include <libcflat.h> 122f9ce69eSAndrew Jones 132f9ce69eSAndrew Jones #define RTAS_UNKNOWN_SERVICE (-1) 142f9ce69eSAndrew Jones 152f9ce69eSAndrew Jones struct rtas_args { 162f9ce69eSAndrew Jones u32 token; 172f9ce69eSAndrew Jones u32 nargs; 182f9ce69eSAndrew Jones u32 nret; 192f9ce69eSAndrew Jones u32 args[16]; 202f9ce69eSAndrew Jones u32 *rets; 212f9ce69eSAndrew Jones }; 222f9ce69eSAndrew Jones 232f9ce69eSAndrew Jones extern void rtas_init(void); 242565dce1SThomas Huth extern int rtas_token(const char *service, uint32_t *token); 252f9ce69eSAndrew Jones extern int rtas_call(int token, int nargs, int nret, int *outputs, ...); 26789a8e69SNicholas Piggin extern int rtas_call_unlocked(struct rtas_args *args, int token, int nargs, int nret, int *outputs, ...); 272f9ce69eSAndrew Jones 282f9ce69eSAndrew Jones extern void rtas_power_off(void); 29789a8e69SNicholas Piggin extern void rtas_stop_self(void); 30*0cc3a351SSean Christopherson #endif /* __ASSEMBLER__ */ 31f1ccf5d2SLaurent Vivier 32f1ccf5d2SLaurent Vivier #define RTAS_MSR_MASK 0xfffffffffffffffe 332f9ce69eSAndrew Jones 342f9ce69eSAndrew Jones #endif /* _ASMPOWERPC_RTAS_H_ */ 35