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 9f1ccf5d2SLaurent Vivier #ifndef __ASSEMBLY__ 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); 24*2565dce1SThomas 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, ...); 262f9ce69eSAndrew Jones 272f9ce69eSAndrew Jones extern void rtas_power_off(void); 28f1ccf5d2SLaurent Vivier #endif /* __ASSEMBLY__ */ 29f1ccf5d2SLaurent Vivier 30f1ccf5d2SLaurent Vivier #define RTAS_MSR_MASK 0xfffffffffffffffe 312f9ce69eSAndrew Jones 322f9ce69eSAndrew Jones #endif /* _ASMPOWERPC_RTAS_H_ */ 33