Deleted Added
full compact
vpoio.c (42475) vpoio.c (43433)
1/*-
2 * Copyright (c) 1998 Nicolas Souchu
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 1998 Nicolas Souchu
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $Id: vpoio.c,v 1.4 1998/12/07 21:58:16 archie Exp $
26 * $Id: vpoio.c,v 1.5 1999/01/10 12:04:55 nsouch Exp $
27 *
28 */
29
30#ifdef KERNEL
31#include <sys/param.h>
32#include <sys/systm.h>
33#include <sys/malloc.h>
34#include <sys/buf.h>

--- 146 unchanged lines hidden (view full) ---

181 MS_CASS( H_AUTO | H_SELIN | H_INIT | H_STROBE),
182 MS_DELAY(VP0_PULSE),
183 MS_RFETCH(MS_REG_STR, MS_FETCH_ALL, MS_UNKNOWN /* high nibble */),
184 MS_CASS(H_nAUTO | H_SELIN | H_INIT | H_STROBE),
185 MS_RFETCH(MS_REG_STR, MS_FETCH_ALL, MS_UNKNOWN /* low nibble */),
186
187 /* do a C call to format the received nibbles */
188 MS_C_CALL(MS_UNKNOWN /* C hook */, MS_UNKNOWN /* param */),
27 *
28 */
29
30#ifdef KERNEL
31#include <sys/param.h>
32#include <sys/systm.h>
33#include <sys/malloc.h>
34#include <sys/buf.h>

--- 146 unchanged lines hidden (view full) ---

181 MS_CASS( H_AUTO | H_SELIN | H_INIT | H_STROBE),
182 MS_DELAY(VP0_PULSE),
183 MS_RFETCH(MS_REG_STR, MS_FETCH_ALL, MS_UNKNOWN /* high nibble */),
184 MS_CASS(H_nAUTO | H_SELIN | H_INIT | H_STROBE),
185 MS_RFETCH(MS_REG_STR, MS_FETCH_ALL, MS_UNKNOWN /* low nibble */),
186
187 /* do a C call to format the received nibbles */
188 MS_C_CALL(MS_UNKNOWN /* C hook */, MS_UNKNOWN /* param */),
189 MS_DBRA(-6 /* loop */),
189 MS_DBRA(-7 /* loop */),
190
191 MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
192 MS_RET(0)
193};
194
195/*
196 * This is the sub-microseqence for MS_GET in PS2 mode
197 */
198static struct ppb_microseq ps2_inbyte_submicroseq[] = {
199 MS_CASS(PCD | H_AUTO | H_SELIN | H_INIT | H_nSTROBE),
200
201/* loop: */
202 MS_RFETCH_P(1, MS_REG_DTR, MS_FETCH_ALL),
203 MS_CASS(PCD | H_nAUTO | H_SELIN | H_INIT | H_nSTROBE),
204 MS_CASS(PCD | H_AUTO | H_SELIN | H_INIT | H_nSTROBE),
190
191 MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
192 MS_RET(0)
193};
194
195/*
196 * This is the sub-microseqence for MS_GET in PS2 mode
197 */
198static struct ppb_microseq ps2_inbyte_submicroseq[] = {
199 MS_CASS(PCD | H_AUTO | H_SELIN | H_INIT | H_nSTROBE),
200
201/* loop: */
202 MS_RFETCH_P(1, MS_REG_DTR, MS_FETCH_ALL),
203 MS_CASS(PCD | H_nAUTO | H_SELIN | H_INIT | H_nSTROBE),
204 MS_CASS(PCD | H_AUTO | H_SELIN | H_INIT | H_nSTROBE),
205 MS_DBRA(-3 /* loop */),
205 MS_DBRA(-4 /* loop */),
206
207 MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
208 MS_RET(0)
209};
210
211/*
212 * This is the sub-microsequence for MS_PUT in both NIBBLE and PS2 modes
213 */
214static struct ppb_microseq spp_outbyte_submicroseq[] = {
215
216/* loop: */
217 MS_RASSERT_P(1, MS_REG_DTR),
218 MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
219 MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
220 MS_DELAY(VP0_PULSE),
206
207 MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
208 MS_RET(0)
209};
210
211/*
212 * This is the sub-microsequence for MS_PUT in both NIBBLE and PS2 modes
213 */
214static struct ppb_microseq spp_outbyte_submicroseq[] = {
215
216/* loop: */
217 MS_RASSERT_P(1, MS_REG_DTR),
218 MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
219 MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
220 MS_DELAY(VP0_PULSE),
221 MS_DBRA(-4 /* loop */),
221 MS_DBRA(-5 /* loop */),
222
223 /* return from the put call */
224 MS_RET(0)
225};
226
227/* EPP 1.7 microsequences, ptr and len set at runtime */
228static struct ppb_microseq epp17_outstr_body[] = {
229 MS_CASS(H_AUTO | H_SELIN | H_INIT | H_STROBE),
230
231/* loop: */
222
223 /* return from the put call */
224 MS_RET(0)
225};
226
227/* EPP 1.7 microsequences, ptr and len set at runtime */
228static struct ppb_microseq epp17_outstr_body[] = {
229 MS_CASS(H_AUTO | H_SELIN | H_INIT | H_STROBE),
230
231/* loop: */
232 MS_RASSERT_P(1, MS_REG_EPP),
233 MS_BRSET(TIMEOUT, 4 /* error */), /* EPP timeout? */
234 MS_DBRA(-2 /* loop */),
232 MS_RASSERT_P(1, MS_REG_EPP_D),
233 MS_BRSET(TIMEOUT, 3 /* error */), /* EPP timeout? */
234 MS_DBRA(-3 /* loop */),
235
236 MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
237 MS_RET(0),
238/* error: */
239 MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
240 MS_RET(1)
241};
242
243static struct ppb_microseq epp17_instr_body[] = {
244 MS_CASS(PCD | H_AUTO | H_SELIN | H_INIT | H_STROBE),
245
246/* loop: */
235
236 MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
237 MS_RET(0),
238/* error: */
239 MS_CASS(H_AUTO | H_nSELIN | H_INIT | H_STROBE),
240 MS_RET(1)
241};
242
243static struct ppb_microseq epp17_instr_body[] = {
244 MS_CASS(PCD | H_AUTO | H_SELIN | H_INIT | H_STROBE),
245
246/* loop: */
247 MS_RFETCH_P(1, MS_REG_EPP, MS_FETCH_ALL),
248 MS_BRSET(TIMEOUT, 4 /* error */), /* EPP timeout? */
249 MS_DBRA(-2 /* loop */),
247 MS_RFETCH_P(1, MS_REG_EPP_D, MS_FETCH_ALL),
248 MS_BRSET(TIMEOUT, 3 /* error */), /* EPP timeout? */
249 MS_DBRA(-3 /* loop */),
250
251 MS_CASS(PCD | H_AUTO | H_nSELIN | H_INIT | H_STROBE),
252 MS_RET(0),
253/* error: */
254 MS_CASS(PCD | H_AUTO | H_nSELIN | H_INIT | H_STROBE),
255 MS_RET(1)
256};
257
258static struct ppb_microseq in_disk_mode[] = {
259 MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
260 MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
261
250
251 MS_CASS(PCD | H_AUTO | H_nSELIN | H_INIT | H_STROBE),
252 MS_RET(0),
253/* error: */
254 MS_CASS(PCD | H_AUTO | H_nSELIN | H_INIT | H_STROBE),
255 MS_RET(1)
256};
257
258static struct ppb_microseq in_disk_mode[] = {
259 MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
260 MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
261
262 MS_BRCLEAR(H_FLT, 4 /* error */),
262 MS_BRCLEAR(H_FLT, 3 /* error */),
263 MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
263 MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
264 MS_BRSET(H_FLT, 2 /* error */),
264 MS_BRSET(H_FLT, 1 /* error */),
265
266 MS_RET(1),
267/* error: */
268 MS_RET(0)
269};
270
271static int
272vpoio_disconnect(struct vpoio_data *vpo)

--- 232 unchanged lines hidden (view full) ---

505 MS_DASS(MS_UNKNOWN),
506 MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
507 MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
508 MS_DASS(MS_UNKNOWN),
509 MS_CASS( H_AUTO | H_nSELIN | H_nINIT | H_STROBE),
510
511 /* now, wait until the drive is ready */
512 MS_SET(VP0_SELTMO),
265
266 MS_RET(1),
267/* error: */
268 MS_RET(0)
269};
270
271static int
272vpoio_disconnect(struct vpoio_data *vpo)

--- 232 unchanged lines hidden (view full) ---

505 MS_DASS(MS_UNKNOWN),
506 MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
507 MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
508 MS_DASS(MS_UNKNOWN),
509 MS_CASS( H_AUTO | H_nSELIN | H_nINIT | H_STROBE),
510
511 /* now, wait until the drive is ready */
512 MS_SET(VP0_SELTMO),
513/* loop: */ MS_BRSET(H_ACK, 3 /* ready */),
514 MS_DBRA(-1 /* loop */),
513/* loop: */ MS_BRSET(H_ACK, 2 /* ready */),
514 MS_DBRA(-2 /* loop */),
515/* error: */ MS_RET(1),
516/* ready: */ MS_RET(0)
517 };
518
519 /* initialize the select microsequence */
520 ppb_MS_init_msq(select_microseq, 2,
521 SELECT_TARGET, 1 << target,
522 SELECT_INITIATOR, 1 << initiator);

--- 319 unchanged lines hidden ---
515/* error: */ MS_RET(1),
516/* ready: */ MS_RET(0)
517 };
518
519 /* initialize the select microsequence */
520 ppb_MS_init_msq(select_microseq, 2,
521 SELECT_TARGET, 1 << target,
522 SELECT_INITIATOR, 1 << initiator);

--- 319 unchanged lines hidden ---