#ifndef _PICLDEVTREE_H
#define _PICLDEVTREE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "picldefs.h"
#define DEVICE_TYPE_BLOCK "block"
#define DEVICE_TYPE_BYTE "byte"
#define DEVICE_TYPE_DISK "disk"
#define DEVICE_TYPE_SES "ses"
#define DEVICE_TYPE_FP "fp"
#define HASH_TABLE_SIZE 64
#define HASH_INDEX(s, x) ((int)((x) & ((s) - 1)))
#define MAX_NAMEVAL_SIZE 80
#define CONFFILE_LINELEN_MAX 1024
#define KSTAT_STATE_BEGIN "state_begin"
#define KSTAT_CPU_INFO "cpu_info"
#define ASR_DISABLED "disabled"
#define ASR_FAILED "failed"
#define DEVTREE_CONFFILE_NAME "picldevtree.conf"
#define ASRTREE_CONFFILE_NAME "picl_asr.conf"
#define CONFFILE_COMMENT_CHAR '#'
#define FFB_MANUF_BUFSIZE 256
#define SUPPORTED_NUM_CELL_SIZE 2
#define MAX_STATE_SIZE 32
typedef struct hash_elem {
picl_nodehdl_t hdl;
struct hash_elem *next;
} hash_elem_t;
typedef struct {
int hash_size;
hash_elem_t **tbl;
} hash_t;
typedef struct conf_entries {
char *name;
char *piclclass;
struct conf_entries *next;
} conf_entries_t;
typedef struct asr_conf_entries {
char *name;
char *piclclass;
char *status;
char *address;
char *props;
struct asr_conf_entries *next;
} asr_conf_entries_t;
typedef struct asr_prop_triplet {
char *proptype;
char *propname;
char *propval;
} asr_prop_triplet_t;
typedef struct {
char name[MAX_NAMEVAL_SIZE];
char piclclass[PICL_CLASSNAMELEN_MAX];
} builtin_map_t;
typedef struct {
char pname[PICL_PROPNAMELEN_MAX];
int type;
} pname_type_map_t;
#define MANF_BROOKTREE 214
#define MANF_MITSUBISHI 28
#define FFB_NAME "ffb"
#define FFBIOC ('F' << 8)
#define FFB_SYS_INFO (FFBIOC| 80)
typedef union {
struct {
uint32_t unused:24;
uint32_t afb_flag:1;
uint32_t major_rev:2;
uint32_t board_rev:2;
uint32_t board_mem:1;
uint32_t cbuf:1;
uint32_t bbuf:1;
} fld;
uint32_t ffb_strap_bits;
} strap_un_t;
typedef union {
struct {
uint32_t version:4;
uint32_t partno:16;
uint32_t manf:11;
uint32_t one:1;
} fld;
uint32_t encoded_id;
} manuf_t;
typedef struct ffb_sys_info {
strap_un_t ffb_strap_bits;
manuf_t fbc_version;
manuf_t dac_version;
manuf_t fbram_version;
uint32_t flags;
uint32_t afb_nfloats;
uint32_t pad[58];
} ffb_sys_info_t;
typedef struct memspecs {
uint32_t physlo;
uint32_t physhi;
uint64_t size;
} memspecs_t;
#define DEFAULT_ADDRESS_CELLS 2
#define MAX_UNIT_ADDRESS_LEN 256
typedef int unitaddr_func_t(char *, int, uint32_t *, uint_t);
typedef struct {
char *class;
unitaddr_func_t *func;
int addrcellcnt;
} unitaddr_map_t;
#ifdef __cplusplus
}
#endif
#endif