#ifndef _ASM_POWERPC_PAPR_RTAS_COMMON_H
#define _ASM_POWERPC_PAPR_RTAS_COMMON_H
#include <linux/types.h>
#define RTAS_SEQ_COMPLETE 0
#define RTAS_SEQ_MORE_DATA 1
#define RTAS_SEQ_START_OVER -4
struct papr_rtas_blob {
const char *data;
size_t len;
};
struct papr_rtas_sequence {
int error;
void *params;
void (*begin)(struct papr_rtas_sequence *seq);
void (*end)(struct papr_rtas_sequence *seq);
const char *(*work)(struct papr_rtas_sequence *seq, size_t *len);
};
extern bool papr_rtas_blob_has_data(const struct papr_rtas_blob *blob);
extern void papr_rtas_blob_free(const struct papr_rtas_blob *blob);
extern int papr_rtas_sequence_set_err(struct papr_rtas_sequence *seq,
int err);
extern const struct papr_rtas_blob *papr_rtas_retrieve(struct papr_rtas_sequence *seq);
extern long papr_rtas_setup_file_interface(struct papr_rtas_sequence *seq,
const struct file_operations *fops, char *name);
extern bool papr_rtas_sequence_should_stop(const struct papr_rtas_sequence *seq,
s32 status, bool init_state);
extern ssize_t papr_rtas_common_handle_read(struct file *file,
char __user *buf, size_t size, loff_t *off);
extern int papr_rtas_common_handle_release(struct inode *inode,
struct file *file);
extern loff_t papr_rtas_common_handle_seek(struct file *file, loff_t off,
int whence);
#endif