aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ppbus/vpoio.c
diff options
context:
space:
mode:
authorNicolas Souchu <nsouch@FreeBSD.org>1999-01-10 12:04:56 +0000
committerNicolas Souchu <nsouch@FreeBSD.org>1999-01-10 12:04:56 +0000
commitbc35c17446fab005a7e11b67b9004736f1c8498b (patch)
treeaadd909c09b2bf3995afe117f0ac1c21cf5b4163 /sys/dev/ppbus/vpoio.c
parentb7fe2b6dabbaaff554a8aab15e10f521d34894c4 (diff)
downloadsrc-bc35c17446fab005a7e11b67b9004736f1c8498b.tar.gz
src-bc35c17446fab005a7e11b67b9004736f1c8498b.zip
Major ppbus commit with:
+ ECP parallel port chipset FIFO detection + DMA+FIFO parallel I/O handled as chipset specific + nlpt updated in order to use the above enhanced parallel I/O. Use 'lptcontrol -e' to use enhanced I/O + Various options documented in LINT + Full IEEE1284 NIBBLE and BYTE modes support. See ppbus(4) for an overview of the IEEE1284 standard + Detection of PnP parallel devices at boot + Read capability added to nlpt driver to get IEEE1284 compliant printer status with a simple 'cat /dev/lpt0' + IEEE1284 peripheral emulation added to BYTE mode. Two computers may dialog according to IEEE1284 signaling method. See PERIPH_1284 option and /sys/dev/ppbus/ppi.c All this code is supposed to provide basic functions for IEEE1284 programming. ppi.c and nlpt.c may act as examples.
Notes
Notes: svn path=/head/; revision=42475
Diffstat (limited to 'sys/dev/ppbus/vpoio.c')
-rw-r--r--sys/dev/ppbus/vpoio.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/sys/dev/ppbus/vpoio.c b/sys/dev/ppbus/vpoio.c
index e42eca7c5c2d..54791ee44dcc 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.3 1998/09/20 14:41:54 nsouch Exp $
+ * $Id: vpoio.c,v 1.4 1998/12/07 21:58:16 archie Exp $
*
*/
@@ -41,6 +41,8 @@
#include <sys/kernel.h>
#endif /*KERNEL */
+#include "opt_vpo.h"
+
#include <dev/ppbus/ppbconf.h>
#include <dev/ppbus/ppb_msq.h>
#include <dev/ppbus/vpoio.h>
@@ -284,8 +286,13 @@ vpoio_connect(struct vpoio_data *vpo, int how)
int error;
int ret;
- if ((error = ppb_request_bus(&vpo->vpo_dev, how)))
+ if ((error = ppb_request_bus(&vpo->vpo_dev, how))) {
+
+#ifdef VP0_DEBUG
+ printf("%s: can't request bus!\n", __FUNCTION__);
+#endif
return error;
+ }
if (PPB_IN_EPP_MODE(&vpo->vpo_dev))
ppb_MS_microseq(&vpo->vpo_dev, connect_epp_microseq, &ret);
@@ -437,8 +444,8 @@ vpoio_outstr(struct vpoio_data *vpo, char *buffer, int size)
ppb_wctr(&vpo->vpo_dev,
H_AUTO | H_nSELIN | H_INIT | H_STROBE);
}
- /* ppb_ecp_sync(&vpo->vpo_dev); */
#endif
+ ppb_ecp_sync(&vpo->vpo_dev);
return (error);
}
@@ -476,8 +483,8 @@ vpoio_instr(struct vpoio_data *vpo, char *buffer, int size)
ppb_wctr(&vpo->vpo_dev, PCD |
H_AUTO | H_nSELIN | H_INIT | H_STROBE);
}
- /* ppb_ecp_sync(&vpo->vpo_dev); */
#endif
+ ppb_ecp_sync(&vpo->vpo_dev);
return (error);
}
@@ -701,6 +708,10 @@ vpoio_reset_bus(struct vpoio_data *vpo)
{
/* first, connect to the drive */
if (vpoio_connect(vpo, PPB_WAIT|PPB_INTR) || !vpoio_in_disk_mode(vpo)) {
+
+#ifdef VP0_DEBUG
+ printf("%s: not in disk mode!\n", __FUNCTION__);
+#endif
/* release ppbus */
vpoio_disconnect(vpo);
return (1);