#define IN_VALID 1
#define OUT_PENDING 2

enum {
    ZUMA_MBOXMSG_DONE,
    ZUMA_MBOXMSG_MACL,
    ZUMA_MBOXMSG_MACH,
    ZUMA_MBOXMSG_IP,
    ZUMA_MBOXMSG_SLOT,
    ZUMA_MBOXMSG_RESET,
    ZUMA_MBOXMSG_BAUD,
    ZUMA_MBOXMSG_START,
    ZUMA_MBOXMSG_ENG_PRV_MACL,
    ZUMA_MBOXMSG_ENG_PRV_MACH,

    MBOXMSG_LAST
};

struct zuma_mailbox_info {
  unsigned char acc_mac[6];
  unsigned char prv_mac[6];
  unsigned int ip;
  unsigned int slot_bac;
  unsigned int console_baud;
  unsigned int debug_baud;
};

struct _zuma_mbox_dev {
  pci_dev_t dev;
  PBB_DMA_REG_MAP *sip;
  struct zuma_mailbox_info mailbox;
};

#define zuma_prv_mac		zuma_mbox_dev.mailbox.prv_mac
#define zuma_acc_mac		zuma_mbox_dev.mailbox.acc_mac
#define zuma_ip                 zuma_mbox_dev.mailbox.ip
#define zuma_slot_bac		zuma_mbox_dev.mailbox.slot_bac
#define zuma_console_baud	zuma_mbox_dev.mailbox.console_baud
#define zuma_debug_baud		zuma_mbox_dev.mailbox.debug_baud


extern struct _zuma_mbox_dev zuma_mbox_dev;
extern int zuma_mbox_init(void);
