summaryrefslogtreecommitdiff
path: root/recipes/robostix-module/files/robostix.h
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/robostix-module/files/robostix.h')
-rw-r--r--recipes/robostix-module/files/robostix.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/recipes/robostix-module/files/robostix.h b/recipes/robostix-module/files/robostix.h
new file mode 100644
index 0000000000..0d860bc7a4
--- /dev/null
+++ b/recipes/robostix-module/files/robostix.h
@@ -0,0 +1,114 @@
+/****************************************************************************
+*
+* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 as
+* published by the Free Software Foundation.
+*
+* Alternatively, this software may be distributed under the terms of BSD
+* license.
+*
+* See README and COPYING for more details.
+*
+****************************************************************************/
+/**
+*
+* robostix_drv.h
+*
+* PURPOSE:
+*
+* This implements a driver for using the robostix from the gumstix
+*
+* Initially, this contains the required support to emulate enough of the
+* parallel port interface to allow avrdude to program the ATMega128.
+*
+*****************************************************************************/
+
+#if !defined( LINUX_ROBOSTIX_H )
+#define LINUX_ROBOSTIX_H )
+
+/* ---- Include Files ----------------------------------------------------- */
+
+#include <linux/ioctl.h>
+
+/* ---- Constants and Types ----------------------------------------------- */
+
+#define ROBOSTIX_MAJOR 240
+
+#define ROBOSTIX_IOCTL_MAGIC 'R'
+
+/**
+ * Deefines for each of the commands. Note that since we want to reduce
+ * the possibility that a user mode program gets out of sync with a given
+ * driver, we explicitly assign a value to each enumeration. This makes
+ * it more difficult to stick new ioctl's in the middle of the list.
+ */
+
+typedef enum
+{
+ ROBOSTIX_CMD_FIRST = 0x80,
+
+ ROBOSTIX_CMD_POWER_VCC5 = 0x80,
+ ROBOSTIX_CMD_RESET = 0x81,
+ ROBOSTIX_CMD_245_ENABLE = 0x82,
+ ROBOSTIX_CMD_SET_SCK = 0x83,
+ ROBOSTIX_CMD_SET_SS = 0x84,
+ ROBOSTIX_CMD_SET_IR_TXD = 0x85,
+ ROBOSTIX_CMD_GET_IR_RXD = 0x86,
+ ROBOSTIX_CMD_SET_MOSI = 0x87,
+ ROBOSTIX_CMD_GET_MISO = 0x88,
+ ROBOSTIX_CMD_GET_IRQ = 0x89,
+ ROBOSTIX_CMD_DELAY_USEC = 0x8A, // value is hardocded in uisp DAPA.C
+
+ /* Insert new ioctls here */
+
+ ROBOSTIX_CMD_LAST,
+
+} ROBOSTIX_CMD;
+
+/*
+ * The following are arguments to the various ioctl's
+ */
+
+#define ROBOSTIX_PIN_OFF 0
+#define ROBOSTIX_PIN_ON 1
+#define ROBOSTIX_PIN_PULSE 2 // only used or Reset
+
+/*
+ * Definitions for the actual ioctl commands
+ */
+
+#define ROBOSTIX_IOCTL_POWER_VCC5 _IO( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_POWER_VCC5 ) // arg is int
+#define ROBOSTIX_IOCTL_RESET _IO( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_RESET ) // arg is int
+#define ROBOSTIX_IOCTL_245_ENABLE _IO( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_245_ENABLE ) // arg is int
+#define ROBOSTIX_IOCTL_SET_SCK _IO( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_SET_SCK ) // arg is int
+#define ROBOSTIX_IOCTL_SET_SS _IO( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_SET_SS ) // arg is int
+#define ROBOSTIX_IOCTL_SET_IR_TXD _IO( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_SET_IR_TXD ) // arg is int
+#define ROBOSTIX_IOCTL_GET_IR_RXD _IOR( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_GET_IR_RXD, int ) // arg is int *
+#define ROBOSTIX_IOCTL_SET_MOSI _IO( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_SET_MOSI ) // arg is int
+#define ROBOSTIX_IOCTL_GET_MISO _IOR( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_GET_MISO, int ) // arg is int *
+#define ROBOSTIX_IOCTL_GET_IRQ _IOR( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_GET_IRQ, int ) // arg is int *
+#define ROBOSTIX_IOCTL_DELAY_USEC _IO( ROBOSTIX_IOCTL_MAGIC, ROBOSTIX_CMD_DELAY_USEC ) // arg is int
+
+
+/*
+ * Definitions for sysctl. The top level define has to be unique system wide.
+ * The kernel defines values 1 thru about 10 (see include/linunx/sysctl.h)
+ */
+
+#define CTL_ROBOSTIX 0x526F626F /* 'Robo' in hex form */
+
+/*
+ * The following are for entries in /proc/sys/robostix
+ */
+
+enum
+{
+ CTL_ROBOSTIX_DEBUG_TRACE = 101,
+ CTL_ROBOSTIX_DEBUG_IOCTL = 102,
+ CTL_ROBOSTIX_DEBUG_ERROR = 103
+};
+
+#endif // LINUX_ROBOSTIX_H
+