-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
staging: gpib: Add common include files for GPIB drivers
Common include files used only by the drivers. Signed-off-by: Dave Penkler <dpenkler@gmail.com> Link: https://lore.kernel.org/r/20240918121908.19366-4-dpenkler@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- Loading branch information
Dave Penkler
authored and
Greg Kroah-Hartman
committed
Oct 10, 2024
1 parent
f11192a
commit 6c52d5e
Showing
13 changed files
with
1,530 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
/*************************************************************************** | ||
* Header for amcc5920 pci chip | ||
* | ||
* copyright : (C) 2002 by Frank Mori Hess | ||
***************************************************************************/ | ||
|
||
// plx pci chip registers and bits | ||
enum amcc_registers { | ||
AMCC_INTCS_REG = 0x38, | ||
AMCC_PASS_THRU_REG = 0x60, | ||
}; | ||
|
||
enum amcc_incsr_bits { | ||
AMCC_ADDON_INTR_ENABLE_BIT = 0x2000, | ||
AMCC_ADDON_INTR_ACTIVE_BIT = 0x400000, | ||
AMCC_INTR_ACTIVE_BIT = 0x800000, | ||
}; | ||
|
||
static const int bits_per_region = 8; | ||
|
||
static inline uint32_t amcc_wait_state_bits(unsigned int region, unsigned int num_wait_states) | ||
{ | ||
return (num_wait_states & 0x7) << (-region * bits_per_region); | ||
}; | ||
|
||
enum amcc_prefetch_bits { | ||
PREFETCH_DISABLED = 0x0, | ||
PREFETCH_SMALL = 0x8, | ||
PREFETCH_MEDIUM = 0x10, | ||
PREFETCH_LARGE = 0x18, | ||
}; | ||
|
||
static inline uint32_t amcc_prefetch_bits(unsigned int region, enum amcc_prefetch_bits prefetch) | ||
{ | ||
return prefetch << (--region * bits_per_region); | ||
}; | ||
|
||
static inline uint32_t amcc_PTADR_mode_bit(unsigned int region) | ||
{ | ||
return 0x80 << (--region * bits_per_region); | ||
}; | ||
|
||
static inline uint32_t amcc_disable_write_fifo_bit(unsigned int region) | ||
{ | ||
return 0x20 << (--region * bits_per_region); | ||
}; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
/*************************************************************************** | ||
* Registers and bits for amccs5933 pci chip | ||
* copyright : (C) 2002 by Frank Mori Hess | ||
***************************************************************************/ | ||
|
||
// register offsets | ||
enum { | ||
MBEF_REG = 0x34, // mailbux empty/full | ||
INTCSR_REG = 0x38, // interrupt control and status | ||
BMCSR_REG = 0x3c, // bus master control and status | ||
}; | ||
|
||
// incoming mailbox 0-3 register offsets | ||
extern inline int INCOMING_MAILBOX_REG(unsigned int mailbox) | ||
{ | ||
return (0x10 + 4 * mailbox); | ||
}; | ||
|
||
// bit definitions | ||
|
||
// INTCSR bits | ||
enum { | ||
OUTBOX_EMPTY_INTR_BIT = 0x10, // enable outbox empty interrupt | ||
INBOX_FULL_INTR_BIT = 0x1000, // enable inbox full interrupt | ||
INBOX_INTR_CS_BIT = 0x20000, // read, or write clear inbox full interrupt | ||
INTR_ASSERTED_BIT = 0x800000, // read only, interrupt asserted | ||
}; | ||
|
||
// select byte 0 to 3 of incoming mailbox | ||
extern inline int INBOX_BYTE_BITS(unsigned int byte) | ||
{ | ||
return (byte & 0x3) << 8; | ||
}; | ||
|
||
// select incoming mailbox 0 to 3 | ||
extern inline int INBOX_SELECT_BITS(unsigned int mailbox) | ||
{ | ||
return (mailbox & 0x3) << 10; | ||
}; | ||
|
||
// select byte 0 to 3 of outgoing mailbox | ||
extern inline int OUTBOX_BYTE_BITS(unsigned int byte) | ||
{ | ||
return (byte & 0x3); | ||
}; | ||
|
||
// select outgoing mailbox 0 to 3 | ||
extern inline int OUTBOX_SELECT_BITS(unsigned int mailbox) | ||
{ | ||
return (mailbox & 0x3) << 2; | ||
}; | ||
|
||
//BMCSR bits | ||
enum { | ||
MBOX_FLAGS_RESET_BIT = 0x08000000, // resets mailbox empty/full flags | ||
}; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
/*************************************************************************** | ||
* copyright : (C) 2002,2003 by Frank Mori Hess | ||
***************************************************************************/ | ||
|
||
#ifndef _GPIB_P_H | ||
#define _GPIB_P_H | ||
|
||
#include <linux/types.h> | ||
|
||
#include "gpib_types.h" | ||
#include "gpib_proto.h" | ||
#include "gpib_user.h" | ||
#include "gpib_ioctl.h" | ||
|
||
#include <linux/fs.h> | ||
#include <linux/interrupt.h> | ||
|
||
void gpib_register_driver(gpib_interface_t *interface, struct module *mod); | ||
void gpib_unregister_driver(gpib_interface_t *interface); | ||
struct pci_dev *gpib_pci_get_device(const gpib_board_config_t *config, unsigned int vendor_id, | ||
unsigned int device_id, struct pci_dev *from); | ||
struct pci_dev *gpib_pci_get_subsys(const gpib_board_config_t *config, unsigned int vendor_id, | ||
unsigned int device_id, unsigned int ss_vendor, | ||
unsigned int ss_device, struct pci_dev *from); | ||
unsigned int num_gpib_events(const gpib_event_queue_t *queue); | ||
int push_gpib_event(gpib_board_t *board, short event_type); | ||
int pop_gpib_event(gpib_event_queue_t *queue, short *event_type); | ||
int gpib_request_pseudo_irq(gpib_board_t *board, irqreturn_t (*handler)(int, void *)); | ||
void gpib_free_pseudo_irq(gpib_board_t *board); | ||
int gpib_match_device_path(struct device *dev, const char *device_path_in); | ||
|
||
extern gpib_board_t board_array[GPIB_MAX_NUM_BOARDS]; | ||
|
||
extern struct list_head registered_drivers; | ||
|
||
#ifdef GPIB_DEBUG | ||
#define GPIB_DPRINTK(format, args...) pr_info("gpib debug: " format, ## args) | ||
#else | ||
#define GPIB_DPRINTK(arg...) | ||
#endif | ||
|
||
#include <linux/io.h> | ||
|
||
void writeb_wrapper(unsigned int value, void *address); | ||
unsigned int readb_wrapper(void *address); | ||
void outb_wrapper(unsigned int value, void *address); | ||
unsigned int inb_wrapper(void *address); | ||
void writew_wrapper(unsigned int value, void *address); | ||
unsigned int readw_wrapper(void *address); | ||
void outw_wrapper(unsigned int value, void *address); | ||
unsigned int inw_wrapper(void *address); | ||
|
||
#endif // _GPIB_P_H | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
#ifndef __GPIB_PCI_IDS_H | ||
#define __GPIB_LINUX_PCI_IDS_H | ||
|
||
#ifndef PCI_VENDOR_ID_AMCC | ||
#define PCI_VENDOR_ID_AMCC 0x10e8 | ||
#endif | ||
|
||
#ifndef PCI_VENDOR_ID_CBOARDS | ||
#define PCI_VENDOR_ID_CBOARDS 0x1307 | ||
#endif | ||
|
||
#ifndef PCI_VENDOR_ID_QUANCOM | ||
#define PCI_VENDOR_ID_QUANCOM 0x8008 | ||
#endif | ||
|
||
#ifndef PCI_DEVICE_ID_QUANCOM_GPIB | ||
#define PCI_DEVICE_ID_QUANCOM_GPIB 0x3302 | ||
#endif | ||
|
||
#endif // __GPIB_PCI_IDS_H | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
#ifndef GPIB_PROTO_INCLUDED | ||
#define GPIB_PROTO_INCLUDED | ||
|
||
#include <linux/fs.h> | ||
|
||
int ibopen(struct inode *inode, struct file *filep); | ||
int ibclose(struct inode *inode, struct file *file); | ||
long ibioctl(struct file *filep, unsigned int cmd, unsigned long arg); | ||
int osInit(void); | ||
void osReset(void); | ||
void os_start_timer(gpib_board_t *board, unsigned int usec_timeout); | ||
void os_remove_timer(gpib_board_t *board); | ||
void osSendEOI(void); | ||
void osSendEOI(void); | ||
void init_gpib_board(gpib_board_t *board); | ||
static inline unsigned long usec_to_jiffies(unsigned int usec) | ||
{ | ||
unsigned long usec_per_jiffy = 1000000 / HZ; | ||
|
||
return 1 + (usec + usec_per_jiffy - 1) / usec_per_jiffy; | ||
}; | ||
|
||
int serial_poll_all(gpib_board_t *board, unsigned int usec_timeout); | ||
void init_gpib_descriptor(gpib_descriptor_t *desc); | ||
int dvrsp(gpib_board_t *board, unsigned int pad, int sad, | ||
unsigned int usec_timeout, uint8_t *result); | ||
int ibAPWait(gpib_board_t *board, int pad); | ||
int ibAPrsp(gpib_board_t *board, int padsad, char *spb); | ||
void ibAPE(gpib_board_t *board, int pad, int v); | ||
int ibcac(gpib_board_t *board, int sync, int fallback_to_async); | ||
int ibcmd(gpib_board_t *board, uint8_t *buf, size_t length, size_t *bytes_written); | ||
int ibgts(gpib_board_t *board); | ||
int ibonline(gpib_board_t *board); | ||
int iboffline(gpib_board_t *board); | ||
int iblines(const gpib_board_t *board, short *lines); | ||
int ibrd(gpib_board_t *board, uint8_t *buf, size_t length, int *end_flag, size_t *bytes_read); | ||
int ibrpp(gpib_board_t *board, uint8_t *buf); | ||
int ibrsv2(gpib_board_t *board, uint8_t status_byte, int new_reason_for_service); | ||
void ibrsc(gpib_board_t *board, int request_control); | ||
int ibsic(gpib_board_t *board, unsigned int usec_duration); | ||
int ibsre(gpib_board_t *board, int enable); | ||
int ibpad(gpib_board_t *board, unsigned int addr); | ||
int ibsad(gpib_board_t *board, int addr); | ||
int ibeos(gpib_board_t *board, int eos, int eosflags); | ||
int ibwait(gpib_board_t *board, int wait_mask, int clear_mask, int set_mask, | ||
int *status, unsigned long usec_timeout, gpib_descriptor_t *desc); | ||
int ibwrt(gpib_board_t *board, uint8_t *buf, size_t cnt, int send_eoi, size_t *bytes_written); | ||
int ibstatus(gpib_board_t *board); | ||
int general_ibstatus(gpib_board_t *board, const gpib_status_queue_t *device, | ||
int clear_mask, int set_mask, gpib_descriptor_t *desc); | ||
int io_timed_out(gpib_board_t *board); | ||
int ibppc(gpib_board_t *board, uint8_t configuration); | ||
|
||
#endif /* GPIB_PROTO_INCLUDED */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
/*************************************************************************** | ||
* copyright : (C) 2006 by Frank Mori Hess | ||
***************************************************************************/ | ||
|
||
#ifndef _GPIB_STATE_MACHINES_H | ||
#define _GPIB_STATE_MACHINES_H | ||
|
||
enum talker_function_state { | ||
talker_idle, | ||
talker_addressed, | ||
talker_active, | ||
serial_poll_active | ||
}; | ||
|
||
enum listener_function_state { | ||
listener_idle, | ||
listener_addressed, | ||
listener_active | ||
}; | ||
|
||
#endif // _GPIB_STATE_MACHINES_H |
Oops, something went wrong.