Main Page   Compound List   File List   Compound Members   File Members  

bppimpl.h

00001 #ifndef _ALT_BPP_IMPL_H
00002 #define _ALT_BPP_IMPL_H
00003 
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007 
00008 /* Hardware registers for bpp device.
00009    N.B. nothing declared volatile, so we MUST use the DDI access routines.
00010    The original version is in /usr/include/sys/bpp_reg.h */
00011 struct bpp_reg {
00012    uint32_t dma_csr;     /* DMA control and status register */
00013    uint32_t dma_addr;    /* address register */
00014    uint32_t dma_bcnt;    /* byte count register */
00015    uint32_t dma_tst_csr; /* DMA2 test control/status register */
00016 
00017    uint16_t hw_config;   /* hardware configuration register */
00018    uint16_t op_config;   /* operation configuration register */
00019 
00020    uint8_t  data;        /* parallel port data */
00021    uint8_t  trans_cntl;  /* transfer control register */
00022    uint8_t  out_pins;    /* output pins register */
00023    uint8_t  in_pins;     /* input pins register */
00024 
00025    uint16_t int_cntl;    /* interrupt control register */
00026 };
00027 
00028 /* In the bit definitions that follow, some don't apply to the current
00029    hardware, but may go back to a much earlier bpp driver, written by
00030    Deborah Gronke Bennett about ten years ago.
00031 */
00032 
00033 /* Cf. /usr/include/sys/bpp_reg.h  for the original version. */
00034 /* Bits in the dma_csr register */
00035 const uint32_t BPP_INT_PEND        = 1;     /*  -> DMA or control intr. pending */
00036 const uint32_t BPP_ERR_PEND        = 1<< 1; /*  -> SBus error pending */
00037 const uint32_t BPP_DRAINING        = (1<< 3)|(1<< 2); /* -> cache is draining */
00038 const uint32_t BPP_INT_EN          = 1<< 4; /* <-> Enable interrupts */
00039 const uint32_t BPP_FLUSH           = 1<< 5; /* <-  Flush the cache */
00040 const uint32_t BPP_SLAVE_ERR       = 1<< 6; /* <=> Slave cycle size error */
00041 const uint32_t BPP_RESET_BPP       = 1<< 7; /* <-> Hardware reset parallel port */
00042 const uint32_t BPP_READ            = 1<< 8; /*  -> 1 == DMA read, 0 == DMA write */
00043 const uint32_t BPP_ENABLE_DMA      = 1<< 9; /* <-> Enable DMA transfers */
00044 const uint32_t BPP_ENABLE_BCNT     = 1<<13; /* <-> Enable byte counter in DMA */
00045 const uint32_t BPP_TERMINAL_CNT    = 1<<14; /* <=> Terminal count flag */
00046 const uint32_t BPP_BURST_SIZES_MASK= (1<<18)|(1<<19); /* <-> SBus burst sizes */
00047 const uint32_t BPP_DRAIN_DISABLE   = 1<<20; /* <-> Disable draining cache */
00048 const uint32_t BPP_TC_INTR_DISABLE = 1<<23; /* <-> Disable terminal count inter. */
00049 const uint32_t BPP_EN_CHAIN_DMA    = 1<<24; /* <-> Enable chained dma */
00050 const uint32_t BPP_DMA_ON          = 1<<25; /*  -> DMA is on */
00051 const uint32_t BPP_ADDR_VALID      = 1<<26; /*  -> addr and bcnt are valid */
00052 const uint32_t BPP_NEXT_VALID      = 1<<27; /*  -> next addr and bcnt valid */
00053 const uint32_t BPP_DEVICE_ID_MASK  = 0xf0000000;
00054 
00055 /* Cf. /usr/include/sys/bpp_reg.h  for the original version. */
00056 /* Bits in the hw_config register */
00057 const uint16_t BPP_DSS_SIZE = (1<< 6)|(1<< 5)|(1<< 4)|(1<< 3)|(1<< 2)|(1<<1)| 1;
00058 const uint16_t BPP_DSW_SIZE = (1<<14)|(1<<13)|(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8);
00059 const uint16_t BPP_CNTR_TEST= (1<<15);
00060 
00061 /* Cf. /usr/include/sys/bpp_reg.h  for the original version. */
00062 /* Bits in the op_config register */
00063 const uint16_t BPP_EN_VERSATEC       = 1;     /* Enable versatec operation (Zebra) */
00064 const uint16_t BPP_VERSATEC_INTERLOCK= 1<< 1; /* Versatec connector absent (Zebra) */
00065 const uint16_t BPP_IDLE              = 1<< 3; /* data transfer idle */
00066 const uint16_t BPP_SRST              = 1<< 7; /* reset state machines */
00067 const uint16_t BPP_ACK_OP            = 1<< 8; /* Acknowledge handshake op */
00068 const uint16_t BPP_BUSY_OP           = 1<< 9; /* Busy handshake op */
00069 const uint16_t BPP_EN_DIAG           = 1<<10; /* Enable diagnostic mode */
00070 const uint16_t BPP_ACK_BIDIR         = 1<<11; /* Acknowledge is bidirectional */
00071 const uint16_t BPP_BUSY_BIDIR        = 1<<12; /* Busy is bidirectional */
00072 const uint16_t BPP_DS_BIDIR          = 1<<13; /* Data Strobe is bidirectional */
00073 const uint16_t BPP_DMA_DATA          = 1<<14; /* Data value in DMA mem clear */
00074 const uint16_t BPP_EN_MEM_CLR        = 1<<15; /* Enable DMA memory clear op */
00075 
00076 /* Cf. /usr/include/sys/bpp_reg.h  for the original version. */
00077 /* Bits in the trans_cntl register */
00078 const uint8_t BPP_DS_PIN    = 1;      /* ControlerEnable/Data Strobe pin */
00079 const uint8_t BPP_ACK_PIN   = 1<< 1;  /* Input#2/Acknowledge pin */
00080 const uint8_t BPP_BUSY_PIN  = 1<< 2;  /* Input#1/Busy pin */
00081 const uint8_t BPP_DIRECTION = 1<< 3;  /* Direction control, 0 == write */
00082 
00083 /* Cf. /usr/include/sys/bpp_io.h  for the original version. */
00084 /* Bits in the out_pins register */
00085 const uint8_t BPP_SLCTIN_PIN = 1;     /* Output#1/Select in pin */
00086 const uint8_t BPP_AFX_PIN    = 1<< 1; /* Output#2/Auto feed pin */
00087 const uint8_t BPP_INIT_PIN   = 1<< 2; /* Standby/Initialize pin */
00088 
00089 /* Cf. /usr/include/sys/bpp_io.h  for the original version. */
00090 /* Bits in the in_pins register */
00091 const uint8_t BPP_ERR_PIN  = 1;       /* Input#3/Error pin */
00092 const uint8_t BPP_SLCT_PIN = 1<< 1;   /* Switch2/Select pin */
00093 const uint8_t BPP_PE_PIN   = 1<< 2;   /* Switch1/Paper empty pin */
00094 
00095 /* Cf. /usr/include/sys/bpp_reg.h  for the original version. */
00096 /* Bits in the int_cntl register */
00097 const uint16_t BPP_ERR_IRQ_EN = 1;     /* Input#3/ERR interrupt enable */
00098 const uint16_t BPP_ERR_IRP    = 1<< 1; /* Input#3/ERR polarity: 1=rising edge */
00099 const uint16_t BPP_SLCT_IRQ_EN= 1<< 2; /* Switch2/SLCT interrupt enable */
00100 const uint16_t BPP_SLCT_IRP   = 1<< 3; /* Switch2/SLCT polarity: 1=rising edge */
00101 const uint16_t BPP_PE_IRQ_EN  = 1<< 4; /* Switch1/PE interrupt enable */
00102 const uint16_t BPP_PE_IRP     = 1<< 5; /* Switch1/PE polarity: 1=rising edge */
00103 const uint16_t BPP_BUSY_IRQ_EN= 1<< 6; /* Input#1/BUSY interrupt enable */
00104 const uint16_t BPP_BUSY_IRP   = 1<< 7; /* Input#1/BUSY polarity: 1=rising edge */
00105 const uint16_t BPP_ACK_IRQ_EN = 1<< 8; /* Input#2/ACK interrupt enable  */
00106 const uint16_t BPP_DS_IRQ_EN  = 1<< 9; /* ControlerEnable/DS interrupt enable */
00107 const uint16_t BPP_ERR_IRQ    = 1<<10; /* Input#3/ERR interrupt pending */
00108 const uint16_t BPP_SLCT_IRQ   = 1<<11; /* Switch2/SLCT interrupt pending */
00109 const uint16_t BPP_PE_IRQ     = 1<<12; /* Switch1/PE interrupt pending */
00110 const uint16_t BPP_BUSY_IRQ   = 1<<13; /* Input#1/BUSY interrupt pending */
00111 const uint16_t BPP_ACK_IRQ    = 1<<14; /* Input#2/ACK interrupt pending */
00112 const uint16_t BPP_DS_IRQ     = 1<<15; /* ControlerEnable/DS interrupt pending */
00113 #define BPP_ALL_IRQS (BPP_ERR_IRQ | BPP_SLCT_IRQ | BPP_PE_IRQ | BPP_BUSY_IRQ \
00114                                   | BPP_ACK_IRQ | BPP_DS_IRQ)
00115 
00116 #ifdef __cplusplus
00117 }
00118 #endif
00119 
00120 #endif

Generated on Tue Jun 22 14:32:07 2004 for trees by doxygen1.2.18