1e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/* 2e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt me4000.h 3e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Register descriptions and defines for the ME-4000 board family 4e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 5e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt COMEDI - Linux Control and Measurement Device Interface 6e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Copyright (C) 1998-9 David A. Schleef <ds@schleef.org> 7e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 8e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt This program is free software; you can redistribute it and/or modify 9e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt it under the terms of the GNU General Public License as published by 10e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt the Free Software Foundation; either version 2 of the License, or 11e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt (at your option) any later version. 12e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 13e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt This program is distributed in the hope that it will be useful, 14e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt but WITHOUT ANY WARRANTY; without even the implied warranty of 15e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt GNU General Public License for more details. 17e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 18e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt You should have received a copy of the GNU General Public License 19e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt along with this program; if not, write to the Free Software 20e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 22e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt*/ 23e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 24e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#ifndef _ME4000_H_ 25e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define _ME4000_H_ 26e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 27e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 28e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Debug section 29e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 30e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 31b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#undef ME4000_CALL_DEBUG /* Debug function entry and exit */ 32b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#undef ME4000_PORT_DEBUG /* Debug port access */ 33b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#undef ME4000_ISR_DEBUG /* Debug the interrupt service routine */ 34b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#undef ME4000_DEBUG /* General purpose debug masseges */ 35e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 36e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#ifdef ME4000_CALL_DEBUG 37e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#undef CALL_PDEBUG 38e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define CALL_PDEBUG(fmt, args...) printk(KERN_DEBUG"comedi%d: me4000: " fmt, dev->minor, ##args) 39e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#else 40b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton# define CALL_PDEBUG(fmt, args...) /* no debugging, do nothing */ 41e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#endif 42e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 43e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#ifdef ME4000_PORT_DEBUG 44e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#undef PORT_PDEBUG 45e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PORT_PDEBUG(fmt, args...) printk(KERN_DEBUG"comedi%d: me4000: " fmt, dev->minor, ##args) 46e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#else 47b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PORT_PDEBUG(fmt, args...) /* no debugging, do nothing */ 48e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#endif 49e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 50e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#ifdef ME4000_ISR_DEBUG 51e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#undef ISR_PDEBUG 52e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ISR_PDEBUG(fmt, args...) printk(KERN_DEBUG"comedi%d: me4000: " fmt, dev->minor, ##args) 53e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#else 54b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ISR_PDEBUG(fmt, args...) /* no debugging, do nothing */ 55e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#endif 56e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 57e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#ifdef ME4000_DEBUG 58e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#undef PDEBUG 59e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PDEBUG(fmt, args...) printk(KERN_DEBUG"comedi%d: me4000: " fmt, dev->minor, ##args) 60e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#else 61b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PDEBUG(fmt, args...) /* no debugging, do nothing */ 62e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#endif 63e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 64e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 65e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt PCI vendor and device IDs 66e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 67e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 68e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PCI_VENDOR_ID_MEILHAUS 0x1402 69e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 70b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4650 0x4650 /* Low Cost version */ 71e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 72b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4660 0x4660 /* Standard version */ 73b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4660I 0x4661 /* Isolated version */ 74b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4660S 0x4662 /* Standard version with Sample and Hold */ 75b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4660IS 0x4663 /* Isolated version with Sample and Hold */ 76e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 77b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4670 0x4670 /* Standard version */ 78b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4670I 0x4671 /* Isolated version */ 79b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4670S 0x4672 /* Standard version with Sample and Hold */ 80b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4670IS 0x4673 /* Isolated version with Sample and Hold */ 81e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 82b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4680 0x4680 /* Standard version */ 83b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4680I 0x4681 /* Isolated version */ 84b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4680S 0x4682 /* Standard version with Sample and Hold */ 85b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PCI_DEVICE_ID_MEILHAUS_ME4680IS 0x4683 /* Isolated version with Sample and Hold */ 86e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 87e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 88e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ME-4000 base register offsets 89e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 90e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 91b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_00_CTRL_REG 0x00 /* R/W */ 92b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_00_STATUS_REG 0x04 /* R/_ */ 93b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_00_FIFO_REG 0x08 /* _/W */ 94b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_00_SINGLE_REG 0x0C /* R/W */ 95b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_00_TIMER_REG 0x10 /* _/W */ 96b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 97b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_01_CTRL_REG 0x18 /* R/W */ 98b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_01_STATUS_REG 0x1C /* R/_ */ 99b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_01_FIFO_REG 0x20 /* _/W */ 100b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_01_SINGLE_REG 0x24 /* R/W */ 101b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_01_TIMER_REG 0x28 /* _/W */ 102b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 103b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_02_CTRL_REG 0x30 /* R/W */ 104b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_02_STATUS_REG 0x34 /* R/_ */ 105b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_02_FIFO_REG 0x38 /* _/W */ 106b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_02_SINGLE_REG 0x3C /* R/W */ 107b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_02_TIMER_REG 0x40 /* _/W */ 108b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 109b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_03_CTRL_REG 0x48 /* R/W */ 110b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_03_STATUS_REG 0x4C /* R/_ */ 111b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_03_FIFO_REG 0x50 /* _/W */ 112b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_03_SINGLE_REG 0x54 /* R/W */ 113b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_03_TIMER_REG 0x58 /* _/W */ 114b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 115b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_CTRL_REG 0x74 /* _/W */ 116b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_STATUS_REG 0x74 /* R/_ */ 117b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_CHANNEL_LIST_REG 0x78 /* _/W */ 118b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_DATA_REG 0x7C /* R/_ */ 119b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_CHAN_TIMER_REG 0x80 /* _/W */ 120b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_CHAN_PRE_TIMER_REG 0x84 /* _/W */ 121b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_SCAN_TIMER_LOW_REG 0x88 /* _/W */ 122b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_SCAN_TIMER_HIGH_REG 0x8C /* _/W */ 123b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_SCAN_PRE_TIMER_LOW_REG 0x90 /* _/W */ 124b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_SCAN_PRE_TIMER_HIGH_REG 0x94 /* _/W */ 125b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_START_REG 0x98 /* R/_ */ 126b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 127b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_IRQ_STATUS_REG 0x9C /* R/_ */ 128b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 129b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_DIO_PORT_0_REG 0xA0 /* R/W */ 130b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_DIO_PORT_1_REG 0xA4 /* R/W */ 131b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_DIO_PORT_2_REG 0xA8 /* R/W */ 132b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_DIO_PORT_3_REG 0xAC /* R/W */ 133b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_DIO_DIR_REG 0xB0 /* R/W */ 134b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 135b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_LOADSETREG_XX 0xB4 /* R/W */ 136b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 137b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_DIO_CTRL_REG 0xB8 /* R/W */ 138b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 139b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AO_DEMUX_ADJUST_REG 0xBC /* -/W */ 140b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton 141b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_SAMPLE_COUNTER_REG 0xC0 /* _/W */ 142e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 143e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 144e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Value to adjust Demux 145e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 146e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 147e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_DEMUX_ADJUST_VALUE 0x4C 148e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 149e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 150e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Counter base register offsets 151e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 152e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 153e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_CNT_COUNTER_0_REG 0x00 154e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_CNT_COUNTER_1_REG 0x01 155e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_CNT_COUNTER_2_REG 0x02 156e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_CNT_CTRL_REG 0x03 157e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 158e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 159e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt PLX base register offsets 160e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 161e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 162b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR 0x4C /* Interrupt control and status register */ 163b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_ICR 0x50 /* Initialization control register */ 164e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 165e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 166e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Bits for the PLX_ICSR register 167e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 168e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 169b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR_LOCAL_INT1_EN 0x01 /* If set, local interrupt 1 is enabled (r/w) */ 170b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR_LOCAL_INT1_POL 0x02 /* If set, local interrupt 1 polarity is active high (r/w) */ 171b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR_LOCAL_INT1_STATE 0x04 /* If set, local interrupt 1 is active (r/_) */ 172b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR_LOCAL_INT2_EN 0x08 /* If set, local interrupt 2 is enabled (r/w) */ 173b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR_LOCAL_INT2_POL 0x10 /* If set, local interrupt 2 polarity is active high (r/w) */ 174b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR_LOCAL_INT2_STATE 0x20 /* If set, local interrupt 2 is active (r/_) */ 175b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR_PCI_INT_EN 0x40 /* If set, PCI interrupt is enabled (r/w) */ 176b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define PLX_INTCSR_SOFT_INT 0x80 /* If set, a software interrupt is generated (r/w) */ 177e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 178e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 179e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Bits for the PLX_ICR register 180e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 181e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 182e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PLX_ICR_BIT_EEPROM_CLOCK_SET 0x01000000 183e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PLX_ICR_BIT_EEPROM_CHIP_SELECT 0x02000000 184e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PLX_ICR_BIT_EEPROM_WRITE 0x04000000 185e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PLX_ICR_BIT_EEPROM_READ 0x08000000 186e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PLX_ICR_BIT_EEPROM_VALID 0x10000000 187e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 188e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define PLX_ICR_MASK_EEPROM 0x1F000000 189e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 190e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define EEPROM_DELAY 1 191e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 192e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 193e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Bits for the ME4000_AO_CTRL_REG register 194e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 195e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 196e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_MODE_0 0x001 197e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_MODE_1 0x002 198e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_MASK_MODE 0x003 199e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_STOP 0x004 200e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_ENABLE_FIFO 0x008 201e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_ENABLE_EX_TRIG 0x010 202e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_EX_TRIG_EDGE 0x020 203e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_IMMEDIATE_STOP 0x080 204e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_ENABLE_DO 0x100 205e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_ENABLE_IRQ 0x200 206e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_CTRL_BIT_RESET_IRQ 0x400 207e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 208e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 209e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Bits for the ME4000_AO_STATUS_REG register 210e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 211e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 212e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_STATUS_BIT_FSM 0x01 213e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_STATUS_BIT_FF 0x02 214e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_STATUS_BIT_HF 0x04 215e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AO_STATUS_BIT_EF 0x08 216e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 217e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 218e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Bits for the ME4000_AI_CTRL_REG register 219e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 220e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 221e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_MODE_0 0x00000001 222e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_MODE_1 0x00000002 223e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_MODE_2 0x00000004 224e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_SAMPLE_HOLD 0x00000008 225e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_IMMEDIATE_STOP 0x00000010 226e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_STOP 0x00000020 227e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_CHANNEL_FIFO 0x00000040 228e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_DATA_FIFO 0x00000080 229e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_FULLSCALE 0x00000100 230e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_OFFSET 0x00000200 231e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_EX_TRIG_ANALOG 0x00000400 232e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_EX_TRIG 0x00000800 233e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_EX_TRIG_FALLING 0x00001000 234e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_EX_IRQ 0x00002000 235e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_EX_IRQ_RESET 0x00004000 236e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_LE_IRQ 0x00008000 237e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_LE_IRQ_RESET 0x00010000 238e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_HF_IRQ 0x00020000 239e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_HF_IRQ_RESET 0x00040000 240e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_SC_IRQ 0x00080000 241e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_SC_IRQ_RESET 0x00100000 242e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_SC_RELOAD 0x00200000 243e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CTRL_BIT_EX_TRIG_BOTH 0x80000000 244e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 245e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 246e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Bits for the ME4000_AI_STATUS_REG register 247e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 248e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 249e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_STATUS_BIT_EF_CHANNEL 0x00400000 250e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_STATUS_BIT_HF_CHANNEL 0x00800000 251e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_STATUS_BIT_FF_CHANNEL 0x01000000 252e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_STATUS_BIT_EF_DATA 0x02000000 253e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_STATUS_BIT_HF_DATA 0x04000000 254e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_STATUS_BIT_FF_DATA 0x08000000 255e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_STATUS_BIT_LE 0x10000000 256e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_STATUS_BIT_FSM 0x20000000 257e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 258e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 259e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Bits for the ME4000_IRQ_STATUS_REG register 260e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 261e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 262e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_IRQ_STATUS_BIT_EX 0x01 263e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_IRQ_STATUS_BIT_LE 0x02 264e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_IRQ_STATUS_BIT_AI_HF 0x04 265e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_IRQ_STATUS_BIT_AO_0_HF 0x08 266e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_IRQ_STATUS_BIT_AO_1_HF 0x10 267e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_IRQ_STATUS_BIT_AO_2_HF 0x20 268e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_IRQ_STATUS_BIT_AO_3_HF 0x40 269e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_IRQ_STATUS_BIT_SC 0x80 270e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 271e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 272e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Bits for the ME4000_DIO_CTRL_REG register 273e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 274e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 275e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_MODE_0 0x0001 276e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_MODE_1 0x0002 277e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_MODE_2 0x0004 278e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_MODE_3 0x0008 279e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_MODE_4 0x0010 280e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_MODE_5 0x0020 281e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_MODE_6 0x0040 282e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_MODE_7 0x0080 283e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 284e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_FUNCTION_0 0x0100 285e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_FUNCTION_1 0x0200 286e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 287e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_FIFO_HIGH_0 0x0400 288e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_FIFO_HIGH_1 0x0800 289e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_FIFO_HIGH_2 0x1000 290e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_DIO_CTRL_BIT_FIFO_HIGH_3 0x2000 291e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 292e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 293e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Information about the hardware capabilities 294e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 295e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 2968d95123295fde18ac22cfeb8eaa0dcc05898b35bBill Pembertonstruct me4000_ao_info { 297e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int count; 298e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int fifo_count; 2998d95123295fde18ac22cfeb8eaa0dcc05898b35bBill Pemberton}; 300e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 3010c18e8c046b5ec21e9e0b458807db260309a8f5dBill Pembertonstruct me4000_ai_info { 302e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int count; 303e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int sh_count; 304e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int diff_count; 305e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int ex_trig_analog; 3060c18e8c046b5ec21e9e0b458807db260309a8f5dBill Pemberton}; 307e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 308e81d65b30ccc3f663f7bb3158567c247c3084eceBill Pembertonstruct me4000_dio_info { 309e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int count; 310e81d65b30ccc3f663f7bb3158567c247c3084eceBill Pemberton}; 311e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 31279dcd042246ea49879bc9c15ed6592848f2f3828Bill Pembertonstruct me4000_cnt_info { 313e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int count; 31479dcd042246ea49879bc9c15ed6592848f2f3828Bill Pemberton}; 315e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 31627f4caaa3b27badb3e245a50b09ba35f040f3a77Bill Pembertonstruct me4000_board { 317e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt const char *name; 318e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned short device_id; 3198d95123295fde18ac22cfeb8eaa0dcc05898b35bBill Pemberton struct me4000_ao_info ao; 3200c18e8c046b5ec21e9e0b458807db260309a8f5dBill Pemberton struct me4000_ai_info ai; 321e81d65b30ccc3f663f7bb3158567c247c3084eceBill Pemberton struct me4000_dio_info dio; 32279dcd042246ea49879bc9c15ed6592848f2f3828Bill Pemberton struct me4000_cnt_info cnt; 32327f4caaa3b27badb3e245a50b09ba35f040f3a77Bill Pemberton}; 324e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 32527f4caaa3b27badb3e245a50b09ba35f040f3a77Bill Pemberton#define thisboard ((const struct me4000_board *)dev->board_ptr) 326e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 327e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*============================================================================= 328e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Global board and subdevice information structures 329e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ===========================================================================*/ 330e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 33121921108bef40b75495301f5dd3d992ed66a7ba8Bill Pembertonstruct me4000_ao_context { 332e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int irq; 333e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 334b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long mirror; /* Store the last written value */ 335e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 336e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long ctrl_reg; 337e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long status_reg; 338e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long fifo_reg; 339e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long single_reg; 340e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long timer_reg; 341e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long irq_status_reg; 342e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long preload_reg; 34321921108bef40b75495301f5dd3d992ed66a7ba8Bill Pemberton}; 344e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 3458b95a0e17f416e1db80c26ecd8f3e894ad271d0bBill Pembertonstruct me4000_ai_context { 346e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt int irq; 347e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 348e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long ctrl_reg; 349e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long status_reg; 350e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long channel_list_reg; 351e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long data_reg; 352e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long chan_timer_reg; 353e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long chan_pre_timer_reg; 354e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long scan_timer_low_reg; 355e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long scan_timer_high_reg; 356e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long scan_pre_timer_low_reg; 357e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long scan_pre_timer_high_reg; 358e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long start_reg; 359e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long irq_status_reg; 360e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long sample_counter_reg; 3618b95a0e17f416e1db80c26ecd8f3e894ad271d0bBill Pemberton}; 362e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 363ff585603bdca766398e24037e9375b76507e2e60Bill Pembertonstruct me4000_dio_context { 364e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long dir_reg; 365e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long ctrl_reg; 366e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long port_0_reg; 367e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long port_1_reg; 368e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long port_2_reg; 369e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long port_3_reg; 370ff585603bdca766398e24037e9375b76507e2e60Bill Pemberton}; 371e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 372126974dc8c432535f9eef36956056b88a153bfb3Bill Pembertonstruct me4000_cnt_context { 373e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long ctrl_reg; 374e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long counter_0_reg; 375e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long counter_1_reg; 376e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt unsigned long counter_2_reg; 377126974dc8c432535f9eef36956056b88a153bfb3Bill Pemberton}; 378e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 37963aa142aca0e4b63347e91b8c6909fbad7e7c7acBill Pembertonstruct me4000_info { 380b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long plx_regbase; /* PLX configuration space base address */ 381b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long me4000_regbase; /* Base address of the ME4000 */ 382b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long timer_regbase; /* Base address of the timer circuit */ 383b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long program_regbase; /* Base address to set the program pin for the xilinx */ 384e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 385b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long plx_regbase_size; /* PLX register set space */ 386b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long me4000_regbase_size; /* ME4000 register set space */ 387b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long timer_regbase_size; /* Timer circuit register set space */ 388b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned long program_regbase_size; /* Size of program base address of the ME4000 */ 389e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 390b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned int serial_no; /* Serial number of the board */ 391b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned char hw_revision; /* Hardware revision of the board */ 392b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned short vendor_id; /* Meilhaus vendor id */ 393b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned short device_id; /* Device id */ 394e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 395b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton struct pci_dev *pci_dev_p; /* General PCI information */ 396e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 397b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton unsigned int irq; /* IRQ assigned from the PCI BIOS */ 398e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 399b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton struct me4000_ai_context ai_context; /* Analog input specific context */ 400b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton struct me4000_ao_context ao_context[4]; /* Vector with analog output specific context */ 401b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton struct me4000_dio_context dio_context; /* Digital I/O specific context */ 402b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton struct me4000_cnt_context cnt_context; /* Counter specific context */ 40363aa142aca0e4b63347e91b8c6909fbad7e7c7acBill Pemberton}; 404e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 40563aa142aca0e4b63347e91b8c6909fbad7e7c7acBill Pemberton#define info ((struct me4000_info *)dev->private) 406e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 407e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*----------------------------------------------------------------------------- 408e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Defines for analog input 409e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ----------------------------------------------------------------------------*/ 410e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 411e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/* General stuff */ 412e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_FIFO_COUNT 2048 413e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 414e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_MIN_TICKS 66 415b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_AI_MIN_SAMPLE_TIME 2000 /* Minimum sample time [ns] */ 416e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_BASE_FREQUENCY (unsigned int) 33E6 417e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 418e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/* Channel list defines and masks */ 419e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_CHANNEL_LIST_COUNT 1024 420e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 421e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_LIST_INPUT_SINGLE_ENDED 0x000 422e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_LIST_INPUT_DIFFERENTIAL 0x020 423e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 424e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_LIST_RANGE_BIPOLAR_10 0x000 425e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_LIST_RANGE_BIPOLAR_2_5 0x040 426e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_LIST_RANGE_UNIPOLAR_10 0x080 427e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_LIST_RANGE_UNIPOLAR_2_5 0x0C0 428e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 429e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_AI_LIST_LAST_ENTRY 0x100 430e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 431e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt/*----------------------------------------------------------------------------- 432e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt Defines for counters 433e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt ----------------------------------------------------------------------------*/ 434e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 435e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_CNT_COUNTER_0 0x00 436e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_CNT_COUNTER_1 0x40 437e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#define ME4000_CNT_COUNTER_2 0x80 438e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 439b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_CNT_MODE_0 0x00 /* Change state if zero crossing */ 440b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_CNT_MODE_1 0x02 /* Retriggerable One-Shot */ 441b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_CNT_MODE_2 0x04 /* Asymmetrical divider */ 442b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_CNT_MODE_3 0x06 /* Symmetrical divider */ 443b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_CNT_MODE_4 0x08 /* Counter start by software trigger */ 444b6c777571b8d387d3add91170826f32a379e4313Bill Pemberton#define ME4000_CNT_MODE_5 0x0A /* Counter start by hardware trigger */ 445e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt 446e55c95a3be5e202f0fc30126aff172c706b304f8Guenter Gebhardt#endif 447