summaryrefslogtreecommitdiff
path: root/sys/dev/ppbus
diff options
context:
space:
mode:
authorNicolas Souchu <nsouch@FreeBSD.org>1999-01-30 15:35:39 +0000
committerNicolas Souchu <nsouch@FreeBSD.org>1999-01-30 15:35:39 +0000
commit20240fa3ad284d37c77b569550834ff75be7e589 (patch)
tree01a33e1f93b9df1298023453f674ba352a0e641a /sys/dev/ppbus
parent88ec80ed82e4d7c1fee8a938b641bc4c1bd2a575 (diff)
Notes
Diffstat (limited to 'sys/dev/ppbus')
-rw-r--r--sys/dev/ppbus/if_plip.c9
-rw-r--r--sys/dev/ppbus/immio.c24
-rw-r--r--sys/dev/ppbus/ppb_msq.h5
-rw-r--r--sys/dev/ppbus/ppbconf.h18
-rw-r--r--sys/dev/ppbus/ppi.c17
-rw-r--r--sys/dev/ppbus/ppi.h9
-rw-r--r--sys/dev/ppbus/pps.c8
-rw-r--r--sys/dev/ppbus/vpoio.c28
8 files changed, 72 insertions, 46 deletions
diff --git a/sys/dev/ppbus/if_plip.c b/sys/dev/ppbus/if_plip.c
index d3b85a4b421a..886158cc844e 100644
--- a/sys/dev/ppbus/if_plip.c
+++ b/sys/dev/ppbus/if_plip.c
@@ -24,7 +24,7 @@
* SUCH DAMAGE.
*
* From Id: lpt.c,v 1.55.2.1 1996/11/12 09:08:38 phk Exp
- * $Id: if_plip.c,v 1.7 1999/01/09 18:10:37 nsouch Exp $
+ * $Id: if_plip.c,v 1.8 1999/01/23 17:07:49 nsouch Exp $
*/
/*
@@ -131,11 +131,12 @@
#define LPIPTBLSIZE 256 /* Size of octet translation table */
-#ifndef PLIP_DEBUG
-#define lprintf (void)
-#else
#define lprintf if (lptflag) printf
+
+#ifdef PLIP_DEBUG
static int volatile lptflag = 1;
+#else
+static int volatile lptflag = 0;
#endif
struct lpt_softc {
diff --git a/sys/dev/ppbus/immio.c b/sys/dev/ppbus/immio.c
index 67054f79bea2..c02202924b02 100644
--- a/sys/dev/ppbus/immio.c
+++ b/sys/dev/ppbus/immio.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: immio.c,v 1.4 1998/10/31 11:35:21 nsouch Exp $
+ * $Id: immio.c,v 1.5 1999/01/10 12:04:54 nsouch Exp $
*
*/
@@ -72,8 +72,8 @@ struct ppb_microseq select_microseq[] = { \
/* first, check there is nothing holding onto the bus */ \
MS_SET(VP0_SELTMO), \
/* _loop: */ \
- MS_BRCLEAR(0x8, 3 /* _ready */), \
- MS_DBRA(-1 /* _loop */), \
+ MS_BRCLEAR(0x8, 2 /* _ready */), \
+ MS_DBRA(-2 /* _loop */), \
MS_RET(2), /* bus busy */ \
/* _ready: */ \
MS_CASS(0x4), \
@@ -84,8 +84,8 @@ struct ppb_microseq select_microseq[] = { \
/* now, wait until the drive is ready */ \
MS_SET(VP0_SELTMO), \
/* loop: */ \
- MS_BRSET(0x8, 4 /* ready */), \
- MS_DBRA(-1 /* loop */), \
+ MS_BRSET(0x8, 3 /* ready */), \
+ MS_DBRA(-2 /* loop */), \
/* error: */ \
MS_CASS(0xc), \
MS_RET(VP0_ESELECT_TIMEOUT), \
@@ -138,7 +138,7 @@ static struct ppb_microseq negociate_microseq[] = { \
MS_DELAY(100), \
MS_CASS(0x6), \
MS_DELAY(5), \
- MS_BRSET(0x20, 6 /* continue */), \
+ MS_BRSET(0x20, 5 /* continue */), \
MS_DELAY(5), \
MS_CASS(0x7), \
MS_DELAY(5), \
@@ -217,7 +217,7 @@ static struct ppb_microseq nibble_inbyte_submicroseq[] = {
/* do a C call to format the received nibbles */
MS_C_CALL(MS_UNKNOWN /* C hook */, MS_UNKNOWN /* param */),
- MS_DBRA(-6 /* loop */),
+ MS_DBRA(-7 /* loop */),
MS_RET(0)
};
@@ -231,7 +231,7 @@ static struct ppb_microseq ps2_inbyte_submicroseq[] = {
MS_CASS(PCD | 0x6),
MS_RFETCH_P(1, MS_REG_DTR, MS_FETCH_ALL),
MS_CASS(PCD | 0x5),
- MS_DBRA(-3 /* loop */),
+ MS_DBRA(-4 /* loop */),
MS_RET(0)
};
@@ -245,10 +245,10 @@ static struct ppb_microseq spp_outbyte_submicroseq[] = {
/* loop: */
MS_RASSERT_P(1, MS_REG_DTR),
MS_CASS(0x5),
- MS_DBRA(1), /* decrement counter */
+ MS_DBRA(0), /* decrement counter */
MS_RASSERT_P(1, MS_REG_DTR),
MS_CASS(0x0),
- MS_DBRA(-5 /* loop */),
+ MS_DBRA(-6 /* loop */),
/* return from the put call */
MS_CASS(0x4),
@@ -258,14 +258,14 @@ static struct ppb_microseq spp_outbyte_submicroseq[] = {
/* EPP 1.7 microsequences, ptr and len set at runtime */
static struct ppb_microseq epp17_outstr[] = {
MS_CASS(0x4),
- MS_RASSERT_P(MS_ACCUM, MS_REG_EPP),
+ MS_RASSERT_P(MS_ACCUM, MS_REG_EPP_D),
MS_CASS(0xc),
MS_RET(0),
};
static struct ppb_microseq epp17_instr[] = {
MS_CASS(PCD | 0x4),
- MS_RFETCH_P(MS_ACCUM, MS_REG_EPP, MS_FETCH_ALL),
+ MS_RFETCH_P(MS_ACCUM, MS_REG_EPP_D, MS_FETCH_ALL),
MS_CASS(PCD | 0xc),
MS_RET(0),
};
diff --git a/sys/dev/ppbus/ppb_msq.h b/sys/dev/ppbus/ppb_msq.h
index 7de698bf37dc..ff43a3634bad 100644
--- a/sys/dev/ppbus/ppb_msq.h
+++ b/sys/dev/ppbus/ppb_msq.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppb_msq.h,v 1.3 1999/01/10 12:04:54 nsouch Exp $
+ * $Id: ppb_msq.h,v 1.4 1999/01/27 21:49:53 dillon Exp $
*
*/
#ifndef __PPB_MSQ_H
@@ -98,7 +98,8 @@
#define MS_REG_DTR 0x0
#define MS_REG_STR 0x1
#define MS_REG_CTR 0x2
-#define MS_REG_EPP 0x4
+#define MS_REG_EPP_A 0x3
+#define MS_REG_EPP_D 0x4
/*
* Microsequence macro abstraction level
diff --git a/sys/dev/ppbus/ppbconf.h b/sys/dev/ppbus/ppbconf.h
index be0ff33f75e1..af08c5df72a4 100644
--- a/sys/dev/ppbus/ppbconf.h
+++ b/sys/dev/ppbus/ppbconf.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppbconf.h,v 1.11 1999/01/10 16:41:14 nsouch Exp $
+ * $Id: ppbconf.h,v 1.12 1999/01/27 19:44:05 dillon Exp $
*
*/
#ifndef __PPBCONF_H
@@ -204,14 +204,16 @@ struct ppb_adapter {
u_char (*r_dtr)(int);
u_char (*r_str)(int);
u_char (*r_ctr)(int);
- u_char (*r_epp)(int);
+ u_char (*r_epp_A)(int);
+ u_char (*r_epp_D)(int);
u_char (*r_ecr)(int);
u_char (*r_fifo)(int);
void (*w_dtr)(int, char);
void (*w_str)(int, char);
void (*w_ctr)(int, char);
- void (*w_epp)(int, char);
+ void (*w_epp_A)(int, char);
+ void (*w_epp_D)(int, char);
void (*w_ecr)(int, char);
void (*w_fifo)(int, char);
};
@@ -315,6 +317,8 @@ extern int ppb_write(struct ppb_device *, char *, int, int);
#define ppb_get_mode(dev) ((dev)->mode)
+/* This set of function access only to the EPP _data_ registers
+ * in 8, 16 and 32 bit modes */
#define ppb_outsb_epp(dev,buf,cnt) \
(*(dev)->ppb->ppb_link->adapter->outsb_epp) \
((dev)->ppb->ppb_link->adapter_unit, buf, cnt)
@@ -334,13 +338,17 @@ extern int ppb_write(struct ppb_device *, char *, int, int);
(*(dev)->ppb->ppb_link->adapter->insl_epp) \
((dev)->ppb->ppb_link->adapter_unit, buf, cnt)
-#define ppb_repp(dev) (*(dev)->ppb->ppb_link->adapter->r_epp) \
+#define ppb_repp_A(dev) (*(dev)->ppb->ppb_link->adapter->r_epp_A) \
+ ((dev)->ppb->ppb_link->adapter_unit)
+#define ppb_repp_D(dev) (*(dev)->ppb->ppb_link->adapter->r_epp_D) \
((dev)->ppb->ppb_link->adapter_unit)
#define ppb_recr(dev) (*(dev)->ppb->ppb_link->adapter->r_ecr) \
((dev)->ppb->ppb_link->adapter_unit)
#define ppb_rfifo(dev) (*(dev)->ppb->ppb_link->adapter->r_fifo) \
((dev)->ppb->ppb_link->adapter_unit)
-#define ppb_wepp(dev,byte) (*(dev)->ppb->ppb_link->adapter->w_epp) \
+#define ppb_wepp_A(dev,byte) (*(dev)->ppb->ppb_link->adapter->w_epp_A) \
+ ((dev)->ppb->ppb_link->adapter_unit, byte)
+#define ppb_wepp_D(dev,byte) (*(dev)->ppb->ppb_link->adapter->w_epp_D) \
((dev)->ppb->ppb_link->adapter_unit, byte)
#define ppb_wecr(dev,byte) (*(dev)->ppb->ppb_link->adapter->w_ecr) \
((dev)->ppb->ppb_link->adapter_unit, byte)
diff --git a/sys/dev/ppbus/ppi.c b/sys/dev/ppbus/ppi.c
index 95d7644f7516..7b04ce4fd629 100644
--- a/sys/dev/ppbus/ppi.c
+++ b/sys/dev/ppbus/ppi.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppi.c,v 1.9 1999/01/10 12:04:55 nsouch Exp $
+ * $Id: ppi.c,v 1.10 1999/01/27 21:49:53 dillon Exp $
*
*/
#include "ppi.h"
@@ -487,8 +487,8 @@ ppiioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
case PPIGCTRL: /* get control bits */
*val = ppb_rctr(&ppi->ppi_dev);
break;
- case PPIGEPP: /* get EPP bits */
- *val = ppb_repp(&ppi->ppi_dev);
+ case PPIGEPPD: /* get EPP data bits */
+ *val = ppb_repp_D(&ppi->ppi_dev);
break;
case PPIGECR: /* get ECP bits */
*val = ppb_recr(&ppi->ppi_dev);
@@ -506,8 +506,8 @@ ppiioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
case PPISCTRL: /* set control bits */
ppb_wctr(&ppi->ppi_dev, *val);
break;
- case PPISEPP: /* set EPP bits */
- ppb_wepp(&ppi->ppi_dev, *val);
+ case PPISEPPD: /* set EPP data bits */
+ ppb_wepp_D(&ppi->ppi_dev, *val);
break;
case PPISECR: /* set ECP bits */
ppb_wecr(&ppi->ppi_dev, *val);
@@ -515,6 +515,13 @@ ppiioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
case PPISFIFO: /* write FIFO */
ppb_wfifo(&ppi->ppi_dev, *val);
break;
+
+ case PPIGEPPA: /* get EPP address bits */
+ *val = ppb_repp_A(&ppi->ppi_dev);
+ break;
+ case PPISEPPA: /* set EPP address bits */
+ ppb_wepp_A(&ppi->ppi_dev, *val);
+ break;
default:
error = ENOTTY;
break;
diff --git a/sys/dev/ppbus/ppi.h b/sys/dev/ppbus/ppi.h
index f20416ff72e7..243c87fa63c7 100644
--- a/sys/dev/ppbus/ppi.h
+++ b/sys/dev/ppbus/ppi.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppi.h,v 1.1 1997/08/14 13:57:43 msmith Exp $
+ * $Id: ppi.h,v 1.2 1998/01/02 09:30:39 msmith Exp $
*
*/
#ifndef __PPI_H
@@ -37,15 +37,18 @@
#define PPIGDATA _IOR('P', 10, u_int8_t)
#define PPIGSTATUS _IOR('P', 11, u_int8_t)
#define PPIGCTRL _IOR('P', 12, u_int8_t)
-#define PPIGEPP _IOR('P', 13, u_int8_t)
+#define PPIGEPPD _IOR('P', 13, u_int8_t)
#define PPIGECR _IOR('P', 14, u_int8_t)
#define PPIGFIFO _IOR('P', 15, u_int8_t)
#define PPISDATA _IOW('P', 16, u_int8_t)
#define PPISSTATUS _IOW('P', 17, u_int8_t)
#define PPISCTRL _IOW('P', 18, u_int8_t)
-#define PPISEPP _IOW('P', 19, u_int8_t)
+#define PPISEPPD _IOW('P', 19, u_int8_t)
#define PPISECR _IOW('P', 20, u_int8_t)
#define PPISFIFO _IOW('P', 21, u_int8_t)
+#define PPIGEPPA _IOR('P', 22, u_int8_t)
+#define PPISEPPA _IOR('P', 23, u_int8_t)
+
#endif
diff --git a/sys/dev/ppbus/pps.c b/sys/dev/ppbus/pps.c
index 95b255cb1bb3..24be094eaf04 100644
--- a/sys/dev/ppbus/pps.c
+++ b/sys/dev/ppbus/pps.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: pps.c,v 1.11 1998/08/24 16:31:27 phk Exp $
+ * $Id: pps.c,v 1.12 1998/12/07 21:58:16 archie Exp $
*
* This driver implements a draft-mogul-pps-api-02.txt PPS source.
*
@@ -16,6 +16,7 @@
*/
#include "opt_devfs.h"
+#include "opt_ntp.h"
#include <sys/param.h>
#include <sys/kernel.h>
@@ -133,6 +134,7 @@ ppsopen(dev_t dev, int flags, int fmt, struct proc *p)
if (ppb_request_bus(&sc->pps_dev, PPB_WAIT|PPB_INTR))
return (EINTR);
+ ppb_wctr(&sc->pps_dev, 0);
ppb_wctr(&sc->pps_dev, IRQENABLE);
return(0);
@@ -144,6 +146,10 @@ ppsclose(dev_t dev, int flags, int fmt, struct proc *p)
struct pps_data *sc = softc[minor(dev)];
sc->ppsparam.mode = 0;
+
+ ppb_wdtr(&sc->pps_dev, 0);
+ ppb_wctr(&sc->pps_dev, 0);
+
ppb_release_bus(&sc->pps_dev);
return(0);
}
diff --git a/sys/dev/ppbus/vpoio.c b/sys/dev/ppbus/vpoio.c
index 54791ee44dcc..17c25dd03469 100644
--- a/sys/dev/ppbus/vpoio.c
+++ b/sys/dev/ppbus/vpoio.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: vpoio.c,v 1.4 1998/12/07 21:58:16 archie Exp $
+ * $Id: vpoio.c,v 1.5 1999/01/10 12:04:55 nsouch Exp $
*
*/
@@ -186,7 +186,7 @@ static struct ppb_microseq nibble_inbyte_submicroseq[] = {
/* do a C call to format the received nibbles */
MS_C_CALL(MS_UNKNOWN /* C hook */, MS_UNKNOWN /* param */),
- MS_DBRA(-6 /* loop */),
+ MS_DBRA(-7 /* loop */),
MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
MS_RET(0)
@@ -202,7 +202,7 @@ static struct ppb_microseq ps2_inbyte_submicroseq[] = {
MS_RFETCH_P(1, MS_REG_DTR, MS_FETCH_ALL),
MS_CASS(PCD | H_nAUTO | H_SELIN | H_INIT | H_nSTROBE),
MS_CASS(PCD | H_AUTO | H_SELIN | H_INIT | H_nSTROBE),
- MS_DBRA(-3 /* loop */),
+ MS_DBRA(-4 /* loop */),
MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
MS_RET(0)
@@ -218,7 +218,7 @@ static struct ppb_microseq spp_outbyte_submicroseq[] = {
MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
MS_DELAY(VP0_PULSE),
- MS_DBRA(-4 /* loop */),
+ MS_DBRA(-5 /* loop */),
/* return from the put call */
MS_RET(0)
@@ -229,9 +229,9 @@ static struct ppb_microseq epp17_outstr_body[] = {
MS_CASS(H_AUTO | H_SELIN | H_INIT | H_STROBE),
/* loop: */
- MS_RASSERT_P(1, MS_REG_EPP),
- MS_BRSET(TIMEOUT, 4 /* error */), /* EPP timeout? */
- MS_DBRA(-2 /* loop */),
+ MS_RASSERT_P(1, MS_REG_EPP_D),
+ MS_BRSET(TIMEOUT, 3 /* error */), /* EPP timeout? */
+ MS_DBRA(-3 /* loop */),
MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
MS_RET(0),
@@ -244,9 +244,9 @@ static struct ppb_microseq epp17_instr_body[] = {
MS_CASS(PCD | H_AUTO | H_SELIN | H_INIT | H_STROBE),
/* loop: */
- MS_RFETCH_P(1, MS_REG_EPP, MS_FETCH_ALL),
- MS_BRSET(TIMEOUT, 4 /* error */), /* EPP timeout? */
- MS_DBRA(-2 /* loop */),
+ MS_RFETCH_P(1, MS_REG_EPP_D, MS_FETCH_ALL),
+ MS_BRSET(TIMEOUT, 3 /* error */), /* EPP timeout? */
+ MS_DBRA(-3 /* loop */),
MS_CASS(PCD | H_AUTO | H_nSELIN | H_INIT | H_STROBE),
MS_RET(0),
@@ -259,9 +259,9 @@ static struct ppb_microseq in_disk_mode[] = {
MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
- MS_BRCLEAR(H_FLT, 4 /* error */),
+ MS_BRCLEAR(H_FLT, 3 /* error */),
MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
- MS_BRSET(H_FLT, 2 /* error */),
+ MS_BRSET(H_FLT, 1 /* error */),
MS_RET(1),
/* error: */
@@ -510,8 +510,8 @@ vpoio_select(struct vpoio_data *vpo, int initiator, int target)
/* now, wait until the drive is ready */
MS_SET(VP0_SELTMO),
-/* loop: */ MS_BRSET(H_ACK, 3 /* ready */),
- MS_DBRA(-1 /* loop */),
+/* loop: */ MS_BRSET(H_ACK, 2 /* ready */),
+ MS_DBRA(-2 /* loop */),
/* error: */ MS_RET(1),
/* ready: */ MS_RET(0)
};