#include <rtapi_pci.h>
#define HM2_PCI_VERSION "0.7"
#define HM2_LLIO_NAME "hm2_pci"
#define HM2_PCI_MAX_BOARDS 8
#define HM2_PCI_VENDORID_PLX (0x10B5)
#define HM2_PCI_VENDORID_MESA (0x2718)
#define HM2_PCI_DEV_PLX9030 (0x9030)
#define HM2_PCI_DEV_PLX9054 (0x9054)
#define HM2_PCI_DEV_PLX9056 (0x9056)
#define HM2_PCI_DEV_MESA5I24 (0x5124)
#define HM2_PCI_DEV_MESA5I25 (0x5125)
#define HM2_PCI_DEV_MESA6I25 (0x6125)
#define HM2_PCI_SSDEV_5I20 (0x3131)
#define HM2_PCI_SSDEV_4I65 (0x3132)
#define HM2_PCI_SSDEV_5I21 (0x3312)
#define HM2_PCI_SSDEV_5I22_10 (0x3314)
#define HM2_PCI_SSDEV_5I22_15 (0x3313)
#define HM2_PCI_SSDEV_5I23 (0x3315)
#define HM2_PCI_SSDEV_5I24 (0x5124)
#define HM2_PCI_SSDEV_5I25 (0x5125)
#define HM2_PCI_SSDEV_6I25 (0x6125)
#define HM2_PCI_SSDEV_4I68 (0x3311)
#define HM2_PCI_SSDEV_4I68_OLD (0x3133)
#define HM2_PCI_SSDEV_4I69_16 (0x3472)
#define HM2_PCI_SSDEV_4I69_25 (0x3473)
#define HM2_PCI_SSDEV_3X20_10 (0x3427)
#define HM2_PCI_SSDEV_3X20_15 (0x3428)
#define HM2_PCI_SSDEV_3X20_20 (0x3429)
#define LAS0BRD_OFFSET 0x28
#define LAS1BRD_OFFSET 0x2C
#define LAS2BRD_OFFSET 0x30
#define LAS3BRD_OFFSET 0x34
#define LASxBRD_READY 0x2
#define CTRL_STAT_OFFSET 0x0054
#define GPIO_3_MASK (1<<11)
#define DONE_MASK (1<<11)
#define _INIT_MASK (1<<14)
#define _LED_MASK (1<<17)
#define GPIO_6_MASK (1<<20)
#define _WRITE_MASK (1<<23)
#define _PROGRAM_MASK (1<<26)
#define CTRL_STAT_OFFSET_5I22 0x006C
#define DONE_MASK_5I22 (1<<17)
#define _PROGRAM_MASK_5I22 (1<<16)
#define DONE_ENABLE_5I22 (1<<18)
#define _PROG_ENABLE_5I22 (1<<19)
#define DONE_WAIT_5I22 20000
typedef struct {
struct rtapi_pci_dev *dev;
void rtapi__iomem *base;
int len;
unsigned long ctrl_base_addr;
unsigned long data_base_addr;
hm2_lowlevel_io_t llio;
} hm2_pci_t;