File Index
Files and directories
Sign in
FILE

agilent_82350b.h

File preview with syntax highlighting.

linux-6.19.14/drivers/gpib/agilent_82350b/agilent_82350b.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2
  3/***************************************************************************
  4 *    copyright            : (C) 2002, 2004 by Frank Mori Hess             *
  5 ***************************************************************************/
  6
  7#include "gpibP.h"
  8#include "plx9050.h"
  9#include "tms9914.h"
 10
 11enum pci_vendor_ids {
 12	PCI_VENDOR_ID_AGILENT = 0x15bc,
 13};
 14
 15enum pci_device_ids {
 16	PCI_DEVICE_ID_82350B = 0x0b01,
 17	PCI_DEVICE_ID_82351A = 0x1218
 18};
 19
 20enum pci_subdevice_ids {
 21	PCI_SUBDEVICE_ID_82350A = 0x10b0,
 22};
 23
 24enum pci_regions_82350a {
 25	PLX_MEM_REGION  = 0,
 26	PLX_IO_REGION   = 1,
 27	GPIB_82350A_REGION = 2,
 28	SRAM_82350A_REGION = 3,
 29	BORG_82350A_REGION = 4
 30};
 31
 32enum pci_regions_82350b {
 33	GPIB_REGION = 0,
 34	SRAM_REGION = 1,
 35	MISC_REGION = 2,
 36};
 37
 38enum board_model {
 39	MODEL_82350A,
 40	MODEL_82350B,
 41	MODEL_82351A
 42};
 43
 44/* struct which defines private_data for board */
 45struct agilent_82350b_priv {
 46	struct tms9914_priv tms9914_priv;
 47	struct pci_dev *pci_device;
 48	void __iomem *plx_base;	/* 82350a only */
 49	void __iomem *gpib_base;
 50	void __iomem *sram_base;
 51	void __iomem *misc_base;
 52	void __iomem *borg_base;
 53	int irq;
 54	unsigned short card_mode_bits;
 55	unsigned short event_status_bits;
 56	enum board_model model;
 57	bool using_fifos;
 58};
 59
 60/* registers */
 61enum agilent_82350b_gpib_registers
 62
 63{
 64	CARD_MODE_REG = 0x1,
 65	CONFIG_DATA_REG = 0x2, /* 82350A specific */
 66	INTERRUPT_ENABLE_REG = 0x3,
 67	EVENT_STATUS_REG = 0x4,
 68	EVENT_ENABLE_REG = 0x5,
 69	STREAM_STATUS_REG = 0x7,
 70	DEBUG_RAM0_REG = 0x8,
 71	DEBUG_RAM1_REG = 0x9,
 72	DEBUG_RAM2_REG = 0xa,
 73	DEBUG_RAM3_REG = 0xb,
 74	XFER_COUNT_LO_REG = 0xc,
 75	XFER_COUNT_MID_REG = 0xd,
 76	XFER_COUNT_HI_REG = 0xe,
 77	TMS9914_BASE_REG = 0x10,
 78	INTERNAL_CONFIG_REG = 0x18,
 79	IMR0_READ_REG = 0x19, /* read */
 80	T1_DELAY_REG = 0x19, /* write */
 81	IMR1_READ_REG = 0x1a,
 82	ADR_READ_REG = 0x1b,
 83	SPMR_READ_REG = 0x1c,
 84	PPR_READ_REG = 0x1d,
 85	CDOR_READ_REG = 0x1e,
 86	SRAM_ACCESS_CONTROL_REG = 0x1f,
 87};
 88
 89enum card_mode_bits
 90
 91{
 92	ACTIVE_CONTROLLER_BIT = 0x2, /* read-only */
 93	CM_SYSTEM_CONTROLLER_BIT = 0x8,
 94	ENABLE_BUS_MONITOR_BIT = 0x10,
 95	ENABLE_PCI_IRQ_BIT = 0x20,
 96};
 97
 98enum interrupt_enable_bits
 99
100{
101	ENABLE_TMS9914_INTERRUPTS_BIT = 0x1,
102	ENABLE_BUFFER_END_INTERRUPT_BIT = 0x10,
103	ENABLE_TERM_COUNT_INTERRUPT_BIT = 0x20,
104};
105
106enum event_enable_bits
107
108{
109	ENABLE_BUFFER_END_EVENTS_BIT = 0x10,
110	ENABLE_TERM_COUNT_EVENTS_BIT = 0x20,
111};
112
113enum event_status_bits
114
115{
116	TMS9914_IRQ_STATUS_BIT = 0x1,
117	IRQ_STATUS_BIT = 0x2,
118	BUFFER_END_STATUS_BIT = 0x10, /* write-clear */
119	TERM_COUNT_STATUS_BIT = 0x20, /* write-clear */
120};
121
122enum stream_status_bits
123
124{
125	HALTED_STATUS_BIT = 0x1, /* read */
126	RESTART_STREAM_BIT = 0x1, /* write */
127};
128
129enum internal_config_bits
130
131{
132	IC_SYSTEM_CONTROLLER_BIT = 0x80,
133};
134
135enum sram_access_control_bits
136
137{
138	DIRECTION_GPIB_TO_HOST = 0x20, /* transfer direction */
139	ENABLE_TI_TO_SRAM = 0x40, /* enable fifo */
140	ENABLE_FAST_TALKER = 0x80 /* added for 82350A (not used) */
141};
142
143enum borg_bits
144
145{
146	BORG_READY_BIT = 0x40,
147	BORG_DONE_BIT = 0x80
148};
149
150static const int agilent_82350b_fifo_size = 0x8000;
151
152static inline int agilent_82350b_fifo_is_halted(struct agilent_82350b_priv *a_priv)
153
154{
155	return readb(a_priv->gpib_base + STREAM_STATUS_REG) & HALTED_STATUS_BIT;
156}
157
~/ Read-only file preview.