Deleted Added
full compact
vpoio.c (158651) vpoio.c (184130)
1/*-
2 * Copyright (c) 1998, 1999 Nicolas Souchu
3 * Copyright (c) 2000 Alcove - Nicolas Souchu
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
27 *
28 */
29
30#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1998, 1999 Nicolas Souchu
3 * Copyright (c) 2000 Alcove - Nicolas Souchu
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
27 *
28 */
29
30#include <sys/cdefs.h>
31__FBSDID("$FreeBSD: head/sys/dev/ppbus/vpoio.c 158651 2006-05-16 14:37:58Z phk $");
31__FBSDID("$FreeBSD: head/sys/dev/ppbus/vpoio.c 184130 2008-10-21 18:30:10Z jhb $");
32
33#ifdef _KERNEL
34#include <sys/param.h>
35#include <sys/systm.h>
36#include <sys/module.h>
37#include <sys/bus.h>
38#include <sys/malloc.h>
39

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

394 vpo->vpo_mode_found = VP0_MODE_NIBBLE;
395 }
396
397 /* Can't know if the interface is capable of PS/2 yet */
398 ppb_MS_microseq(ppbus, vpo->vpo_dev, connect_spp_microseq, &ret);
399 if (!vpoio_in_disk_mode(vpo)) {
400 vpo->vpo_mode_found = VP0_MODE_UNDEFINED;
401 if (bootverbose)
32
33#ifdef _KERNEL
34#include <sys/param.h>
35#include <sys/systm.h>
36#include <sys/module.h>
37#include <sys/bus.h>
38#include <sys/malloc.h>
39

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

394 vpo->vpo_mode_found = VP0_MODE_NIBBLE;
395 }
396
397 /* Can't know if the interface is capable of PS/2 yet */
398 ppb_MS_microseq(ppbus, vpo->vpo_dev, connect_spp_microseq, &ret);
399 if (!vpoio_in_disk_mode(vpo)) {
400 vpo->vpo_mode_found = VP0_MODE_UNDEFINED;
401 if (bootverbose)
402 printf("vpo%d: can't connect to the drive\n",
403 vpo->vpo_unit);
402 device_printf(vpo->vpo_dev,
403 "can't connect to the drive\n");
404
405 /* disconnect and release the bus */
406 ppb_MS_microseq(ppbus, vpo->vpo_dev, disconnect_microseq,
407 &ret);
408 goto error;
409 }
410 } else {
411 vpo->vpo_mode_found = VP0_MODE_EPP;
412 }
413
414 /* send SCSI reset signal */
415 vpoio_reset(vpo);
416
417 ppb_MS_microseq(ppbus, vpo->vpo_dev, disconnect_microseq, &ret);
418
419 /* ensure we are disconnected or daisy chained peripheral
420 * may cause serious problem to the disk */
421 if (vpoio_in_disk_mode(vpo)) {
422 if (bootverbose)
404
405 /* disconnect and release the bus */
406 ppb_MS_microseq(ppbus, vpo->vpo_dev, disconnect_microseq,
407 &ret);
408 goto error;
409 }
410 } else {
411 vpo->vpo_mode_found = VP0_MODE_EPP;
412 }
413
414 /* send SCSI reset signal */
415 vpoio_reset(vpo);
416
417 ppb_MS_microseq(ppbus, vpo->vpo_dev, disconnect_microseq, &ret);
418
419 /* ensure we are disconnected or daisy chained peripheral
420 * may cause serious problem to the disk */
421 if (vpoio_in_disk_mode(vpo)) {
422 if (bootverbose)
423 printf("vpo%d: can't disconnect from the drive\n",
424 vpo->vpo_unit);
423 device_printf(vpo->vpo_dev,
424 "can't disconnect from the drive\n");
425 goto error;
426 }
427
428 ppb_release_bus(ppbus, vpo->vpo_dev);
429 return (0);
430
431error:
432 ppb_release_bus(ppbus, vpo->vpo_dev);

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

612 if ((error = ppb_request_bus(ppbus, vpo->vpo_dev, PPB_WAIT)))
613 goto error;
614
615 /* ppbus sets automatically the last mode entered during detection */
616 switch (vpo->vpo_mode_found) {
617 case VP0_MODE_EPP:
618 ppb_MS_GET_init(ppbus, vpo->vpo_dev, epp17_instr_body);
619 ppb_MS_PUT_init(ppbus, vpo->vpo_dev, epp17_outstr_body);
425 goto error;
426 }
427
428 ppb_release_bus(ppbus, vpo->vpo_dev);
429 return (0);
430
431error:
432 ppb_release_bus(ppbus, vpo->vpo_dev);

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

612 if ((error = ppb_request_bus(ppbus, vpo->vpo_dev, PPB_WAIT)))
613 goto error;
614
615 /* ppbus sets automatically the last mode entered during detection */
616 switch (vpo->vpo_mode_found) {
617 case VP0_MODE_EPP:
618 ppb_MS_GET_init(ppbus, vpo->vpo_dev, epp17_instr_body);
619 ppb_MS_PUT_init(ppbus, vpo->vpo_dev, epp17_outstr_body);
620 printf("vpo%d: EPP mode\n", vpo->vpo_unit);
620 device_printf(vpo->vpo_dev, "EPP mode\n");
621 break;
622 case VP0_MODE_PS2:
623 ppb_MS_GET_init(ppbus, vpo->vpo_dev, ps2_inbyte_submicroseq);
624 ppb_MS_PUT_init(ppbus, vpo->vpo_dev, spp_outbyte_submicroseq);
621 break;
622 case VP0_MODE_PS2:
623 ppb_MS_GET_init(ppbus, vpo->vpo_dev, ps2_inbyte_submicroseq);
624 ppb_MS_PUT_init(ppbus, vpo->vpo_dev, spp_outbyte_submicroseq);
625 printf("vpo%d: PS2 mode\n", vpo->vpo_unit);
625 device_printf(vpo->vpo_dev, "PS2 mode\n");
626 break;
627 case VP0_MODE_NIBBLE:
628 ppb_MS_GET_init(ppbus, vpo->vpo_dev, vpo->vpo_nibble_inbyte_msq);
629 ppb_MS_PUT_init(ppbus, vpo->vpo_dev, spp_outbyte_submicroseq);
626 break;
627 case VP0_MODE_NIBBLE:
628 ppb_MS_GET_init(ppbus, vpo->vpo_dev, vpo->vpo_nibble_inbyte_msq);
629 ppb_MS_PUT_init(ppbus, vpo->vpo_dev, spp_outbyte_submicroseq);
630 printf("vpo%d: NIBBLE mode\n", vpo->vpo_unit);
630 device_printf(vpo->vpo_dev, "NIBBLE mode\n");
631 break;
632 default:
633 panic("vpo: unknown mode %d", vpo->vpo_mode_found);
634 }
635
636 ppb_release_bus(ppbus, vpo->vpo_dev);
637
638error:

--- 143 unchanged lines hidden ---
631 break;
632 default:
633 panic("vpo: unknown mode %d", vpo->vpo_mode_found);
634 }
635
636 ppb_release_bus(ppbus, vpo->vpo_dev);
637
638error:

--- 143 unchanged lines hidden ---