summaryrefslogtreecommitdiff
path: root/pfinet.old/linux-src/include/linux/parport_pc.h
diff options
context:
space:
mode:
authorroot <root@(null).(none)>2009-05-03 17:20:00 +0200
committerroot <root@(null).(none)>2009-05-03 17:20:00 +0200
commite0faf22f31c48fb27b43c1825897d26e58feafc4 (patch)
tree65a09372b31e08a3a865bd0a88cd2718bafcd643 /pfinet.old/linux-src/include/linux/parport_pc.h
This is my initial working version.
There is a bug in boot in this version: subhurd sometimes cannot boot.
Diffstat (limited to 'pfinet.old/linux-src/include/linux/parport_pc.h')
-rw-r--r--pfinet.old/linux-src/include/linux/parport_pc.h152
1 files changed, 152 insertions, 0 deletions
diff --git a/pfinet.old/linux-src/include/linux/parport_pc.h b/pfinet.old/linux-src/include/linux/parport_pc.h
new file mode 100644
index 00000000..f7ef3406
--- /dev/null
+++ b/pfinet.old/linux-src/include/linux/parport_pc.h
@@ -0,0 +1,152 @@
+#ifndef __LINUX_PARPORT_PC_H
+#define __LINUX_PARPORT_PC_H
+
+#include <asm/io.h>
+
+/* --- register definitions ------------------------------- */
+
+#define ECONTROL(p) ((p)->base_hi + 0x2)
+#define CONFIGB(p) ((p)->base_hi + 0x1)
+#define CONFIGA(p) ((p)->base_hi + 0x0)
+#define FIFO(p) ((p)->base_hi + 0x0)
+#define EPPDATA(p) ((p)->base + 0x4)
+#define EPPADDR(p) ((p)->base + 0x3)
+#define CONTROL(p) ((p)->base + 0x2)
+#define STATUS(p) ((p)->base + 0x1)
+#define DATA(p) ((p)->base + 0x0)
+
+/* Private data for PC low-level driver. */
+struct parport_pc_private {
+ /* Contents of CTR. */
+ unsigned char ctr;
+};
+
+extern int parport_pc_epp_clear_timeout(struct parport *pb);
+
+extern volatile unsigned char parport_pc_ctr;
+
+extern __inline__ void parport_pc_write_epp(struct parport *p, unsigned char d)
+{
+ outb(d, EPPDATA(p));
+}
+
+extern __inline__ unsigned char parport_pc_read_epp(struct parport *p)
+{
+ return inb(EPPDATA(p));
+}
+
+extern __inline__ void parport_pc_write_epp_addr(struct parport *p, unsigned char d)
+{
+ outb(d, EPPADDR(p));
+}
+
+extern __inline__ unsigned char parport_pc_read_epp_addr(struct parport *p)
+{
+ return inb(EPPADDR(p));
+}
+
+extern __inline__ int parport_pc_check_epp_timeout(struct parport *p)
+{
+ if (!(inb(STATUS(p)) & 1))
+ return 0;
+ parport_pc_epp_clear_timeout(p);
+ return 1;
+}
+
+extern __inline__ unsigned char parport_pc_read_configb(struct parport *p)
+{
+ return inb(CONFIGB(p));
+}
+
+extern __inline__ void parport_pc_write_data(struct parport *p, unsigned char d)
+{
+ outb(d, DATA(p));
+}
+
+extern __inline__ unsigned char parport_pc_read_data(struct parport *p)
+{
+ return inb(DATA(p));
+}
+
+extern __inline__ void parport_pc_write_control(struct parport *p, unsigned char d)
+{
+ struct parport_pc_private *priv = p->private_data;
+ priv->ctr = d;/* update soft copy */
+ outb(d, CONTROL(p));
+}
+
+extern __inline__ unsigned char parport_pc_read_control(struct parport *p)
+{
+ struct parport_pc_private *priv = p->private_data;
+ return priv->ctr;
+}
+
+extern __inline__ unsigned char parport_pc_frob_control(struct parport *p, unsigned char mask, unsigned char val)
+{
+ struct parport_pc_private *priv = p->private_data;
+ unsigned char ctr = priv->ctr;
+ ctr = (ctr & ~mask) ^ val;
+ outb (ctr, CONTROL(p));
+ return priv->ctr = ctr; /* update soft copy */
+}
+
+extern __inline__ void parport_pc_write_status(struct parport *p, unsigned char d)
+{
+ outb(d, STATUS(p));
+}
+
+extern __inline__ unsigned char parport_pc_read_status(struct parport *p)
+{
+ return inb(STATUS(p));
+}
+
+extern __inline__ void parport_pc_write_econtrol(struct parport *p, unsigned char d)
+{
+ outb(d, ECONTROL(p));
+}
+
+extern __inline__ unsigned char parport_pc_read_econtrol(struct parport *p)
+{
+ return inb(ECONTROL(p));
+}
+
+extern __inline__ unsigned char parport_pc_frob_econtrol(struct parport *p, unsigned char mask, unsigned char val)
+{
+ unsigned char old = inb(ECONTROL(p));
+ outb(((old & ~mask) ^ val), ECONTROL(p));
+ return old;
+}
+
+extern void parport_pc_change_mode(struct parport *p, int m);
+
+extern void parport_pc_write_fifo(struct parport *p, unsigned char v);
+
+extern unsigned char parport_pc_read_fifo(struct parport *p);
+
+extern void parport_pc_disable_irq(struct parport *p);
+
+extern void parport_pc_enable_irq(struct parport *p);
+
+extern void parport_pc_release_resources(struct parport *p);
+
+extern int parport_pc_claim_resources(struct parport *p);
+
+extern void parport_pc_init_state(struct parport_state *s);
+
+extern void parport_pc_save_state(struct parport *p, struct parport_state *s);
+
+extern void parport_pc_restore_state(struct parport *p, struct parport_state *s);
+
+extern size_t parport_pc_epp_read_block(struct parport *p, void *buf, size_t length);
+
+extern size_t parport_pc_epp_write_block(struct parport *p, void *buf, size_t length);
+
+extern int parport_pc_ecp_read_block(struct parport *p, void *buf, size_t length, void (*fn)(struct parport *, void *, size_t), void *handle);
+
+extern int parport_pc_ecp_write_block(struct parport *p, void *buf, size_t length, void (*fn)(struct parport *, void *, size_t), void *handle);
+
+extern void parport_pc_inc_use_count(void);
+
+extern void parport_pc_dec_use_count(void);
+
+#endif