nidas v1.2.3
Macros | Functions | Variables
gpio_mm.c File Reference
#include <linux/types.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/fs.h>
#include <linux/workqueue.h>
#include <linux/poll.h>
#include <linux/delay.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <asm/io.h>
#include "gpio_mm.h"
#include <nidas/linux/ver_macros.h>
#include <nidas/linux/klog.h>
#include <nidas/linux/util.h>
#include <nidas/linux/isa_bus.h>
#include <nidas/linux/Revision.h>

Macros

#define IRQF_SHARED   SA_SHIRQ
 
#define REPO_REVISION   "unknown"
 
#define BUFFER_POLL
 
#define BUFFER_POLL
 

Functions

 module_param_array (ioports_dio, uint, numboards_dio, 0)
 
 module_param_array (ioports, uint, numboards, 0)
 
 module_param_array (irqa, int, numirqa, 0)
 
 module_param_array (irqb, int, numirqb, 0)
 
 module_param (clockHZ, int, 0)
 
 MODULE_AUTHOR ("Gordon Maclean <maclean@ucar.edu>")
 
 MODULE_LICENSE ("Dual BSD/GPL")
 
 MODULE_DESCRIPTION ("Driver for Diamond GPIO card")
 
 MODULE_VERSION (REPO_REVISION)
 
static int gcd (unsigned int a, unsigned int b)
 
static void gpio_mm_set_master_mode (struct GPIO_MM *brd, int chip)
 
static void gpio_mm_setup_counter (struct GPIO_MM *brd, int icntr, unsigned char lmode, unsigned char hmode)
 
static void gpio_mm_cmd_counter (struct GPIO_MM *brd, int icntr, unsigned char cmd)
 
static void gpio_mm_cmd_counters (struct GPIO_MM *brd, int icntr1, int icntr2, unsigned char cmd)
 
static void gpio_mm_arm_counter (struct GPIO_MM *brd, int icntr)
 
static void gpio_mm_arm_counters (struct GPIO_MM *brd, int icntr1, int icntr2)
 
static void gpio_mm_load_counter (struct GPIO_MM *brd, int icntr)
 
static void gpio_mm_load_arm_counter (struct GPIO_MM *brd, int icntr)
 
static void gpio_mm_load_arm_counters (struct GPIO_MM *brd, int icntr1, int icntr2)
 
static void gpio_mm_disarm_counter (struct GPIO_MM *brd, int icntr)
 
static void gpio_mm_disarm_counters (struct GPIO_MM *brd, int icntr1, int icntr2)
 
static void gpio_mm_disarm_save_counter (struct GPIO_MM *brd, int icntr)
 
static void gpio_mm_disarm_save_counters (struct GPIO_MM *brd, int icntr1, int icntr2)
 
static void gpio_mm_set_reg (struct GPIO_MM *brd, int icntr, unsigned short val, unsigned char reg)
 
static unsigned short gpio_mm_get_reg (struct GPIO_MM *brd, int icntr, unsigned char reg)
 
static void gpio_mm_set_load_reg (struct GPIO_MM *brd, int icntr, unsigned short val)
 
static void gpio_mm_set_hold_reg (struct GPIO_MM *brd, int icntr, unsigned short val)
 
static unsigned short gpio_mm_get_hold_reg (struct GPIO_MM *brd, int icntr)
 
static void gpio_mm_set_toggle_out (struct GPIO_MM *brd, int icntr)
 
static void gpio_mm_clear_toggle_out (struct GPIO_MM *brd, int icntr)
 
static unsigned char gpio_mm_get_output_status (struct GPIO_MM *brd, int icntr)
 
static int compute_timer_ticks (struct list_head *cblist, unsigned int *maxUsecsp)
 
static int check_timer_interval (struct GPIO_MM *brd, unsigned int usecs)
 
static void set_ticks (struct GPIO_MM_timer *timer, unsigned int usecs, unsigned int maxUsecs, unsigned short *initial_ticsp)
 
static void start_gpio_timer (struct GPIO_MM_timer *timer, unsigned int usecs, unsigned int maxUsecs)
 
static void stop_gpio_timer (struct GPIO_MM_timer *timer)
 
static void handlePendingCallbacks (struct GPIO_MM_timer *timer)
 
static void free_timer_callbacks (struct GPIO_MM_timer *timer)
 
static void gpio_mm_timer_bottom_half (unsigned long dev)
 
static irqreturn_t gpio_mm_timer_irq_handler (int irq, void *dev_id)
 
static irqreturn_t gpio_mm_event_irq_handler (int irq, void *dev_id)
 
static int gpio_mm_set_irq_user (struct GPIO_MM *brd, int irq_ab, irq_handler_t handler)
 
static int gpio_mm_remove_irq_user (struct GPIO_MM *brd, int irq_ab)
 
static int gpio_mm_set_timer_irq_user (struct GPIO_MM *brd)
 
static int gpio_mm_remove_timer_irq_user (struct GPIO_MM *brd)
 
static int gpio_mm_reserve_cntrs (struct GPIO_MM *brd, int ic1, int icn)
 
static int gpio_mm_free_cntrs (struct GPIO_MM *brd, int ic0, int icn)
 
static int get_pulse_counter (struct GPIO_MM_fcntr *fcntr)
 
static int gpio_mm_setup_fcntr (struct GPIO_MM_fcntr *fcntr)
 
static int gpio_mm_stop_fcntr (struct GPIO_MM_fcntr *fcntr)
 
static void fcntr_timer_callback_func (void *privateData)
 
static int start_fcntr (struct GPIO_MM_fcntr *fcntr, struct GPIO_MM_fcntr_config *cfg)
 
static int stop_fcntr (struct GPIO_MM_fcntr *fcntr)
 
static int gpio_mm_open_fcntr (struct inode *inode, struct file *filp)
 
static int gpio_mm_release_fcntr (struct inode *inode, struct file *filp)
 
static ssize_t gpio_mm_read_fcntr (struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
 
static long gpio_mm_ioctl_fcntr (struct file *filp, unsigned int cmd, unsigned long arg)
 
unsigned int gpio_mm_poll_fcntr (struct file *filp, poll_table *wait)
 
static int gpio_mm_setup_event (struct GPIO_MM_event *event)
 
static int gpio_mm_stop_event (struct GPIO_MM_event *event)
 
static int start_event (struct GPIO_MM_event *event, struct GPIO_MM_event_config *cfg)
 
static int stop_event (struct GPIO_MM_event *event)
 
static int gpio_mm_open_event (struct inode *inode, struct file *filp)
 
static int gpio_mm_release_event (struct inode *inode, struct file *filp)
 
static ssize_t gpio_mm_read_event (struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
 
static long gpio_mm_ioctl_event (struct file *filp, unsigned int cmd, unsigned long arg)
 
unsigned int gpio_mm_poll_event (struct file *filp, poll_table *wait)
 
static int cleanup_fcntrs (struct GPIO_MM *brd)
 
static int init_fcntrs (struct GPIO_MM *brd)
 
static int cleanup_event (struct GPIO_MM *brd)
 
static int init_event (struct GPIO_MM *brd)
 
static struct gpio_timer_callback * register_gpio_timer_callback_priv (struct GPIO_MM_timer *timer, gpio_timer_callback_func_t callback, unsigned int usecs, void *privateData, int *errp)
 
static long unregister_gpio_timer_callback_priv (struct GPIO_MM_timer *timer, struct gpio_timer_callback *cb, int wait)
 
struct gpio_timer_callback * register_gpio_timer_callback (gpio_timer_callback_func_t callback, unsigned int usecs, void *privateData, int *errp)
 
 EXPORT_SYMBOL (register_gpio_timer_callback)
 
long unregister_gpio_timer_callback (struct gpio_timer_callback *cb, int wait)
 
 EXPORT_SYMBOL (unregister_gpio_timer_callback)
 
static void cleanup_gpio_timer (struct GPIO_MM_timer *timer)
 
static struct GPIO_MM_timer * init_gpio_timer (struct GPIO_MM *brd)
 
static void gpio_mm_cleanup (void)
 
static int __init gpio_mm_init (void)
 
 module_init (gpio_mm_init)
 
 module_exit (gpio_mm_cleanup)
 

Variables

static const char * driver_name = "gpio_mm"
 
static unsigned int ioports [MAX_GPIO_MM_BOARDS] ={ 0x080, 0, 0, 0 , 0}
 
static unsigned int ioports_dio [MAX_GPIO_MM_BOARDS] = { 0x040, 0, 0, 0, 0 }
 
static int numboards = 0
 
static int numboards_alloc = 0
 
static int numboards_dio = 0
 
static int irqa [MAX_GPIO_MM_BOARDS] = { 3, 0, 0, 0, 0 }
 
static int irqb [MAX_GPIO_MM_BOARDS] = { 0, 0, 0, 0, 0 }
 
static int numirqa = 0
 
static int numirqb = 0
 
static int clockHZ = GPIO_MM_CT_CLOCK_HZ
 
static dev_t gpio_mm_device = MKDEV(0,0)
 
static struct GPIO_MM * board = 0
 
static struct class * gpio_mm_class
 
static struct file_operations fcntr_fops
 
static struct file_operations event_fops
 

Macro Definition Documentation

◆ BUFFER_POLL [1/2]

#define BUFFER_POLL

◆ BUFFER_POLL [2/2]

#define BUFFER_POLL

◆ IRQF_SHARED

#define IRQF_SHARED   SA_SHIRQ

Referenced by gpio_mm_set_irq_user().

◆ REPO_REVISION

#define REPO_REVISION   "unknown"

Referenced by gpio_mm_init().

Function Documentation

◆ check_timer_interval()

static int check_timer_interval ( struct GPIO_MM * brd,
unsigned int usecs )
static

◆ cleanup_event()

static int cleanup_event ( struct GPIO_MM * brd)
static

◆ cleanup_fcntrs()

static int cleanup_fcntrs ( struct GPIO_MM * brd)
static

◆ cleanup_gpio_timer()

static void cleanup_gpio_timer ( struct GPIO_MM_timer * timer)
static

◆ compute_timer_ticks()

static int compute_timer_ticks ( struct list_head * cblist,
unsigned int * maxUsecsp )
static

References gcd().

Referenced by handlePendingCallbacks().

◆ EXPORT_SYMBOL() [1/2]

EXPORT_SYMBOL ( register_gpio_timer_callback )

◆ EXPORT_SYMBOL() [2/2]

EXPORT_SYMBOL ( unregister_gpio_timer_callback )

◆ fcntr_timer_callback_func()

static void fcntr_timer_callback_func ( void * privateData)
static

◆ free_timer_callbacks()

static void free_timer_callbacks ( struct GPIO_MM_timer * timer)
static

Referenced by cleanup_gpio_timer().

◆ gcd()

static int gcd ( unsigned int a,
unsigned int b )
static

References gcd().

Referenced by compute_timer_ticks(), and gcd().

◆ get_pulse_counter()

static int get_pulse_counter ( struct GPIO_MM_fcntr * fcntr)
static

◆ gpio_mm_arm_counter()

static void gpio_mm_arm_counter ( struct GPIO_MM * brd,
int icntr )
inlinestatic

References CTS9513_ARM, and gpio_mm_cmd_counter().

Referenced by start_gpio_timer().

◆ gpio_mm_arm_counters()

static void gpio_mm_arm_counters ( struct GPIO_MM * brd,
int icntr1,
int icntr2 )
inlinestatic

◆ gpio_mm_cleanup()

static void gpio_mm_cleanup ( void )
static

◆ gpio_mm_clear_toggle_out()

static void gpio_mm_clear_toggle_out ( struct GPIO_MM * brd,
int icntr )
static

◆ gpio_mm_cmd_counter()

static void gpio_mm_cmd_counter ( struct GPIO_MM * brd,
int icntr,
unsigned char cmd )
static

◆ gpio_mm_cmd_counters()

static void gpio_mm_cmd_counters ( struct GPIO_MM * brd,
int icntr1,
int icntr2,
unsigned char cmd )
static

◆ gpio_mm_disarm_counter()

static void gpio_mm_disarm_counter ( struct GPIO_MM * brd,
int icntr )
inlinestatic

◆ gpio_mm_disarm_counters()

static void gpio_mm_disarm_counters ( struct GPIO_MM * brd,
int icntr1,
int icntr2 )
inlinestatic

◆ gpio_mm_disarm_save_counter()

static void gpio_mm_disarm_save_counter ( struct GPIO_MM * brd,
int icntr )
static

◆ gpio_mm_disarm_save_counters()

static void gpio_mm_disarm_save_counters ( struct GPIO_MM * brd,
int icntr1,
int icntr2 )
inlinestatic

◆ gpio_mm_event_irq_handler()

static irqreturn_t gpio_mm_event_irq_handler ( int irq,
void * dev_id )
static

References GPIO_MM_IRQ_CTL_STATUS.

Referenced by gpio_mm_setup_event().

◆ gpio_mm_free_cntrs()

static int gpio_mm_free_cntrs ( struct GPIO_MM * brd,
int ic0,
int icn )
static

Referenced by gpio_mm_stop_fcntr().

◆ gpio_mm_get_hold_reg()

static unsigned short gpio_mm_get_hold_reg ( struct GPIO_MM * brd,
int icntr )
inlinestatic

◆ gpio_mm_get_output_status()

static unsigned char gpio_mm_get_output_status ( struct GPIO_MM * brd,
int icntr )
static

◆ gpio_mm_get_reg()

static unsigned short gpio_mm_get_reg ( struct GPIO_MM * brd,
int icntr,
unsigned char reg )
static

◆ gpio_mm_init()

static int __init gpio_mm_init ( void )
static

◆ gpio_mm_ioctl_event()

static long gpio_mm_ioctl_event ( struct file * filp,
unsigned int cmd,
unsigned long arg )
static

◆ gpio_mm_ioctl_fcntr()

static long gpio_mm_ioctl_fcntr ( struct file * filp,
unsigned int cmd,
unsigned long arg )
static

◆ gpio_mm_load_arm_counter()

static void gpio_mm_load_arm_counter ( struct GPIO_MM * brd,
int icntr )
inlinestatic

◆ gpio_mm_load_arm_counters()

static void gpio_mm_load_arm_counters ( struct GPIO_MM * brd,
int icntr1,
int icntr2 )
inlinestatic

◆ gpio_mm_load_counter()

static void gpio_mm_load_counter ( struct GPIO_MM * brd,
int icntr )
static

References CTS9513_LOAD, and gpio_mm_cmd_counter().

Referenced by start_gpio_timer().

◆ gpio_mm_open_event()

static int gpio_mm_open_event ( struct inode * inode,
struct file * filp )
static

References board, and numboards.

◆ gpio_mm_open_fcntr()

static int gpio_mm_open_fcntr ( struct inode * inode,
struct file * filp )
static

References board, and numboards.

◆ gpio_mm_poll_event()

unsigned int gpio_mm_poll_event ( struct file * filp,
poll_table * wait )

◆ gpio_mm_poll_fcntr()

unsigned int gpio_mm_poll_fcntr ( struct file * filp,
poll_table * wait )

◆ gpio_mm_read_event()

static ssize_t gpio_mm_read_event ( struct file * filp,
char __user * buf,
size_t count,
loff_t * f_pos )
static

References nidas_circbuf_read().

◆ gpio_mm_read_fcntr()

static ssize_t gpio_mm_read_fcntr ( struct file * filp,
char __user * buf,
size_t count,
loff_t * f_pos )
static

References nidas_circbuf_read().

◆ gpio_mm_release_event()

static int gpio_mm_release_event ( struct inode * inode,
struct file * filp )
static

References board, numboards, and stop_event().

◆ gpio_mm_release_fcntr()

static int gpio_mm_release_fcntr ( struct inode * inode,
struct file * filp )
static

References board, numboards, and stop_fcntr().

◆ gpio_mm_remove_irq_user()

static int gpio_mm_remove_irq_user ( struct GPIO_MM * brd,
int irq_ab )
static

◆ gpio_mm_remove_timer_irq_user()

static int gpio_mm_remove_timer_irq_user ( struct GPIO_MM * brd)
static

References gpio_mm_remove_irq_user().

Referenced by cleanup_gpio_timer().

◆ gpio_mm_reserve_cntrs()

static int gpio_mm_reserve_cntrs ( struct GPIO_MM * brd,
int ic1,
int icn )
static

◆ gpio_mm_set_hold_reg()

static void gpio_mm_set_hold_reg ( struct GPIO_MM * brd,
int icntr,
unsigned short val )
inlinestatic

◆ gpio_mm_set_irq_user()

static int gpio_mm_set_irq_user ( struct GPIO_MM * brd,
int irq_ab,
irq_handler_t handler )
static

◆ gpio_mm_set_load_reg()

static void gpio_mm_set_load_reg ( struct GPIO_MM * brd,
int icntr,
unsigned short val )
inlinestatic

◆ gpio_mm_set_master_mode()

static void gpio_mm_set_master_mode ( struct GPIO_MM * brd,
int chip )
static

◆ gpio_mm_set_reg()

static void gpio_mm_set_reg ( struct GPIO_MM * brd,
int icntr,
unsigned short val,
unsigned char reg )
static

◆ gpio_mm_set_timer_irq_user()

static int gpio_mm_set_timer_irq_user ( struct GPIO_MM * brd)
static

◆ gpio_mm_set_toggle_out()

static void gpio_mm_set_toggle_out ( struct GPIO_MM * brd,
int icntr )
static

◆ gpio_mm_setup_counter()

static void gpio_mm_setup_counter ( struct GPIO_MM * brd,
int icntr,
unsigned char lmode,
unsigned char hmode )
static

◆ gpio_mm_setup_event()

static int gpio_mm_setup_event ( struct GPIO_MM_event * event)
static

◆ gpio_mm_setup_fcntr()

static int gpio_mm_setup_fcntr ( struct GPIO_MM_fcntr * fcntr)
static

◆ gpio_mm_stop_event()

static int gpio_mm_stop_event ( struct GPIO_MM_event * event)
static

◆ gpio_mm_stop_fcntr()

static int gpio_mm_stop_fcntr ( struct GPIO_MM_fcntr * fcntr)
static

◆ gpio_mm_timer_bottom_half()

static void gpio_mm_timer_bottom_half ( unsigned long dev)
static

References handlePendingCallbacks().

Referenced by init_gpio_timer().

◆ gpio_mm_timer_irq_handler()

static irqreturn_t gpio_mm_timer_irq_handler ( int irq,
void * dev_id )
static

◆ handlePendingCallbacks()

static void handlePendingCallbacks ( struct GPIO_MM_timer * timer)
static

◆ init_event()

static int init_event ( struct GPIO_MM * brd)
static

◆ init_fcntrs()

static int init_fcntrs ( struct GPIO_MM * brd)
static

◆ init_gpio_timer()

static struct GPIO_MM_timer * init_gpio_timer ( struct GPIO_MM * brd)
static

◆ MODULE_AUTHOR()

MODULE_AUTHOR ( "Gordon Maclean <maclean@ucar.edu>" )

◆ MODULE_DESCRIPTION()

MODULE_DESCRIPTION ( "Driver for Diamond GPIO card" )

◆ module_exit()

module_exit ( gpio_mm_cleanup )

◆ module_init()

module_init ( gpio_mm_init )

◆ MODULE_LICENSE()

MODULE_LICENSE ( "Dual BSD/GPL" )

◆ module_param()

module_param ( clockHZ ,
int ,
0  )

◆ module_param_array() [1/4]

module_param_array ( ioports ,
uint ,
numboards ,
0  )

◆ module_param_array() [2/4]

module_param_array ( ioports_dio ,
uint ,
numboards_dio ,
0  )

◆ module_param_array() [3/4]

module_param_array ( irqa ,
int ,
numirqa ,
0  )

◆ module_param_array() [4/4]

module_param_array ( irqb ,
int ,
numirqb ,
0  )

◆ MODULE_VERSION()

MODULE_VERSION ( REPO_REVISION )

◆ register_gpio_timer_callback()

struct gpio_timer_callback * register_gpio_timer_callback ( gpio_timer_callback_func_t callback,
unsigned int usecs,
void * privateData,
int * errp )

◆ register_gpio_timer_callback_priv()

static struct gpio_timer_callback * register_gpio_timer_callback_priv ( struct GPIO_MM_timer * timer,
gpio_timer_callback_func_t callback,
unsigned int usecs,
void * privateData,
int * errp )
static

◆ set_ticks()

static void set_ticks ( struct GPIO_MM_timer * timer,
unsigned int usecs,
unsigned int maxUsecs,
unsigned short * initial_ticsp )
static

◆ start_event()

static int start_event ( struct GPIO_MM_event * event,
struct GPIO_MM_event_config * cfg )
static

◆ start_fcntr()

static int start_fcntr ( struct GPIO_MM_fcntr * fcntr,
struct GPIO_MM_fcntr_config * cfg )
static

◆ start_gpio_timer()

static void start_gpio_timer ( struct GPIO_MM_timer * timer,
unsigned int usecs,
unsigned int maxUsecs )
static

◆ stop_event()

static int stop_event ( struct GPIO_MM_event * event)
static

◆ stop_fcntr()

static int stop_fcntr ( struct GPIO_MM_fcntr * fcntr)
static

◆ stop_gpio_timer()

static void stop_gpio_timer ( struct GPIO_MM_timer * timer)
static

◆ unregister_gpio_timer_callback()

long unregister_gpio_timer_callback ( struct gpio_timer_callback * cb,
int wait )

◆ unregister_gpio_timer_callback_priv()

static long unregister_gpio_timer_callback_priv ( struct GPIO_MM_timer * timer,
struct gpio_timer_callback * cb,
int wait )
static

Variable Documentation

◆ board

struct GPIO_MM* board = 0
static

◆ clockHZ

int clockHZ = GPIO_MM_CT_CLOCK_HZ
static

◆ driver_name

const char* driver_name = "gpio_mm"
static

◆ event_fops

struct file_operations event_fops
static
Initial value:
= {
.owner = THIS_MODULE,
.unlocked_ioctl = gpio_mm_ioctl_event,
.llseek = no_llseek,
}
static long gpio_mm_ioctl_event(struct file *filp, unsigned int cmd, unsigned long arg)
Definition gpio_mm.c:1696
static ssize_t gpio_mm_read_event(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
Definition gpio_mm.c:1685
unsigned int gpio_mm_poll_event(struct file *filp, poll_table *wait)
Definition gpio_mm.c:1746
static int gpio_mm_release_event(struct inode *inode, struct file *filp)
Definition gpio_mm.c:1662
static int gpio_mm_open_event(struct inode *inode, struct file *filp)
Definition gpio_mm.c:1632

Referenced by init_event().

◆ fcntr_fops

struct file_operations fcntr_fops
static
Initial value:
= {
.owner = THIS_MODULE,
.unlocked_ioctl = gpio_mm_ioctl_fcntr,
.llseek = no_llseek,
}
static ssize_t gpio_mm_read_fcntr(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
Definition gpio_mm.c:1451
static int gpio_mm_open_fcntr(struct inode *inode, struct file *filp)
Definition gpio_mm.c:1395
static long gpio_mm_ioctl_fcntr(struct file *filp, unsigned int cmd, unsigned long arg)
Definition gpio_mm.c:1462
unsigned int gpio_mm_poll_fcntr(struct file *filp, poll_table *wait)
Definition gpio_mm.c:1512
static int gpio_mm_release_fcntr(struct inode *inode, struct file *filp)
Definition gpio_mm.c:1426

Referenced by init_fcntrs().

◆ gpio_mm_class

struct class* gpio_mm_class
static

◆ gpio_mm_device

dev_t gpio_mm_device = MKDEV(0,0)
static

◆ ioports

unsigned int ioports[MAX_GPIO_MM_BOARDS] ={ 0x080, 0, 0, 0 , 0}
static

Referenced by gpio_mm_init().

◆ ioports_dio

unsigned int ioports_dio[MAX_GPIO_MM_BOARDS] = { 0x040, 0, 0, 0, 0 }
static

Referenced by gpio_mm_init().

◆ irqa

int irqa[MAX_GPIO_MM_BOARDS] = { 3, 0, 0, 0, 0 }
static

Referenced by gpio_mm_init().

◆ irqb

int irqb[MAX_GPIO_MM_BOARDS] = { 0, 0, 0, 0, 0 }
static

Referenced by gpio_mm_init().

◆ numboards

int numboards = 0
static

◆ numboards_alloc

int numboards_alloc = 0
static

Referenced by gpio_mm_cleanup(), and gpio_mm_init().

◆ numboards_dio

int numboards_dio = 0
static

Referenced by gpio_mm_init().

◆ numirqa

int numirqa = 0
static

◆ numirqb

int numirqb = 0
static