xref: /netbsd-src/sys/dev/ppbus/ppbus_1284.h (revision 56ce1b94f8e42a1a249e9651d529f6d0e3f096ec)
1*56ce1b94Scegger /* $NetBSD: ppbus_1284.h,v 1.8 2009/04/05 09:56:16 cegger Exp $ */
2f7820334Sbjh21 
3e23cd1a7Sjdolecek /*-
4e23cd1a7Sjdolecek  * Copyright (c) 1997 Nicolas Souchu
5e23cd1a7Sjdolecek  * All rights reserved.
6e23cd1a7Sjdolecek  *
7e23cd1a7Sjdolecek  * Redistribution and use in source and binary forms, with or without
8e23cd1a7Sjdolecek  * modification, are permitted provided that the following conditions
9e23cd1a7Sjdolecek  * are met:
10e23cd1a7Sjdolecek  * 1. Redistributions of source code must retain the above copyright
11e23cd1a7Sjdolecek  *    notice, this list of conditions and the following disclaimer.
12e23cd1a7Sjdolecek  * 2. Redistributions in binary form must reproduce the above copyright
13e23cd1a7Sjdolecek  *    notice, this list of conditions and the following disclaimer in the
14e23cd1a7Sjdolecek  *    documentation and/or other materials provided with the distribution.
15e23cd1a7Sjdolecek  *
16e23cd1a7Sjdolecek  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17e23cd1a7Sjdolecek  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18e23cd1a7Sjdolecek  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19e23cd1a7Sjdolecek  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20e23cd1a7Sjdolecek  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21e23cd1a7Sjdolecek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22e23cd1a7Sjdolecek  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23e23cd1a7Sjdolecek  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24e23cd1a7Sjdolecek  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25e23cd1a7Sjdolecek  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26e23cd1a7Sjdolecek  * SUCH DAMAGE.
27e23cd1a7Sjdolecek  *
281c34707aSbjh21  * FreeBSD: src/sys/dev/ppbus/ppb_1284.h,v 1.7 2000/01/14 08:03:14 nsouch Exp
29e23cd1a7Sjdolecek  *
30e23cd1a7Sjdolecek  */
31e23cd1a7Sjdolecek #ifndef __PPBUS_1284_H
32e23cd1a7Sjdolecek #define __PPBUS_1284_H
33e23cd1a7Sjdolecek 
34*56ce1b94Scegger #include <sys/device.h>	/* for device_t */
35*56ce1b94Scegger 
36e23cd1a7Sjdolecek /*
37e23cd1a7Sjdolecek  * IEEE1284 signals
38e23cd1a7Sjdolecek  */
39e23cd1a7Sjdolecek 
40e23cd1a7Sjdolecek /* host driven signals */
41e23cd1a7Sjdolecek 
42e23cd1a7Sjdolecek #define nHostClk	STROBE
43e23cd1a7Sjdolecek #define Write		STROBE
44e23cd1a7Sjdolecek 
45e23cd1a7Sjdolecek #define nHostBusy	AUTOFEED
46e23cd1a7Sjdolecek #define nHostAck	AUTOFEED
47e23cd1a7Sjdolecek #define DStrb		AUTOFEED
48e23cd1a7Sjdolecek 
49e23cd1a7Sjdolecek #define nReveseRequest	nINIT
50e23cd1a7Sjdolecek 
51e23cd1a7Sjdolecek #define nActive1284	SELECTIN
52e23cd1a7Sjdolecek #define AStrb		SELECTIN
53e23cd1a7Sjdolecek 
54e23cd1a7Sjdolecek /* peripheral driven signals */
55e23cd1a7Sjdolecek 
56e23cd1a7Sjdolecek #define nDataAvail	nFAULT
57e23cd1a7Sjdolecek #define nPeriphRequest	nFAULT
58e23cd1a7Sjdolecek 
59e23cd1a7Sjdolecek #define Xflag		SELECT
60e23cd1a7Sjdolecek 
61e23cd1a7Sjdolecek #define AckDataReq	PERROR
62e23cd1a7Sjdolecek #define nAckReverse	PERROR
63e23cd1a7Sjdolecek 
64e23cd1a7Sjdolecek #define nPtrBusy	nBUSY
65e23cd1a7Sjdolecek #define nPeriphAck	nBUSY
66e23cd1a7Sjdolecek #define Wait		nBUSY
67e23cd1a7Sjdolecek 
68e23cd1a7Sjdolecek #define PtrClk		nACK
69e23cd1a7Sjdolecek #define PeriphClk	nACK
70e23cd1a7Sjdolecek #define Intr		nACK
71e23cd1a7Sjdolecek 
72e23cd1a7Sjdolecek /* request mode values */
73e23cd1a7Sjdolecek #define NIBBLE_1284_NORMAL	0x0
74e23cd1a7Sjdolecek #define NIBBLE_1284_REQUEST_ID	0x4
75e23cd1a7Sjdolecek #define BYTE_1284_NORMAL	0x1
76e23cd1a7Sjdolecek #define BYTE_1284_REQUEST_ID	0x5
77e23cd1a7Sjdolecek #define ECP_1284_NORMAL		0x10
78e23cd1a7Sjdolecek #define ECP_1284_REQUEST_ID	0x14
79e23cd1a7Sjdolecek #define ECP_1284_RLE		0x30
80e23cd1a7Sjdolecek #define ECP_1284_RLE_REQUEST_ID	0x34
81e23cd1a7Sjdolecek #define EPP_1284_NORMAL		0x40
82e23cd1a7Sjdolecek #define EXT_LINK_1284_NORMAL	0x80
83e23cd1a7Sjdolecek 
84e23cd1a7Sjdolecek /* ieee1284 mode options */
85e23cd1a7Sjdolecek #define PPBUS_REQUEST_ID		0x1
86e23cd1a7Sjdolecek #define PPBUS_USE_RLE		0x2
87e23cd1a7Sjdolecek #define PPBUS_EXTENSIBILITY_LINK	0x4
88e23cd1a7Sjdolecek 
89e23cd1a7Sjdolecek /* ieee1284 errors */
90e23cd1a7Sjdolecek #define PPBUS_NO_ERROR		0
91e23cd1a7Sjdolecek #define PPBUS_MODE_UNSUPPORTED	1	/* mode not supported by peripheral */
92e23cd1a7Sjdolecek #define PPBUS_NOT_IEEE1284	2	/* not an IEEE1284 compliant periph. */
93e23cd1a7Sjdolecek #define PPBUS_TIMEOUT		3	/* timeout */
94e23cd1a7Sjdolecek #define PPBUS_INVALID_MODE	4	/* current mode is incorrect */
95e23cd1a7Sjdolecek 
96e23cd1a7Sjdolecek /* ieee1284 host side states */
97e23cd1a7Sjdolecek #define PPBUS_ERROR			0
98e23cd1a7Sjdolecek #define PPBUS_FORWARD_IDLE		1
991f725099Sbjh21 #define PPBUS_NEGOTIATION			2
100e23cd1a7Sjdolecek #define PPBUS_SETUP			3
101e23cd1a7Sjdolecek #define PPBUS_ECP_FORWARD_IDLE		4
102e23cd1a7Sjdolecek #define PPBUS_FWD_TO_REVERSE		5
103e23cd1a7Sjdolecek #define PPBUS_REVERSE_IDLE		6
104e23cd1a7Sjdolecek #define PPBUS_REVERSE_TRANSFER		7
105e23cd1a7Sjdolecek #define PPBUS_REVERSE_TO_FWD		8
106e23cd1a7Sjdolecek #define PPBUS_EPP_IDLE			9
107e23cd1a7Sjdolecek #define PPBUS_TERMINATION			10
108e23cd1a7Sjdolecek 
109e23cd1a7Sjdolecek /* peripheral side states */
1101f725099Sbjh21 #define PPBUS_PERIPHERAL_NEGOTIATION	11
111e23cd1a7Sjdolecek #define PPBUS_PERIPHERAL_IDLE		12
112e23cd1a7Sjdolecek #define PPBUS_PERIPHERAL_TRANSFER		13
113e23cd1a7Sjdolecek #define PPBUS_PERIPHERAL_TERMINATION	14
114e23cd1a7Sjdolecek 
115e23cd1a7Sjdolecek /* Function prototypes */
116e23cd1a7Sjdolecek 
117e23cd1a7Sjdolecek /* Host functions */
118b849cd90Scegger int ppbus_1284_negotiate(device_t, int, int);
119b849cd90Scegger int ppbus_1284_terminate(device_t);
120b849cd90Scegger int ppbus_1284_read_id(device_t, int, char **, size_t *, size_t *);
121b849cd90Scegger int ppbus_1284_get_state(device_t);
122b849cd90Scegger int ppbus_1284_set_state(device_t, int state);
123e23cd1a7Sjdolecek 
124e23cd1a7Sjdolecek /* Peripheral functions */
125b849cd90Scegger int ppbus_peripheral_terminate(device_t, int);
126b849cd90Scegger int ppbus_peripheral_negotiate(device_t, int, int);
127b849cd90Scegger int byte_peripheral_write(device_t, char *, int, int *);
128e23cd1a7Sjdolecek 
129e23cd1a7Sjdolecek #endif /* __PPBUS_1284_H */
130