Lines Matching refs:bus

42 #include <sys/bus.h>
60 do_1284_wait(device_t bus, char mask, char status)
62 return (ppb_poll_bus(bus, 4, mask, status, PPB_NOINTR | PPB_POLL));
66 do_peripheral_wait(device_t bus, char mask, char status)
68 return (ppb_poll_bus(bus, 100, mask, status, PPB_NOINTR | PPB_POLL));
79 ppb_1284_reset_error(device_t bus, int state)
81 struct ppb_data *ppb = DEVTOSOFTC(bus);
95 ppb_1284_get_state(device_t bus)
97 struct ppb_data *ppb = DEVTOSOFTC(bus);
109 ppb_1284_set_state(device_t bus, int state)
111 struct ppb_data *ppb = DEVTOSOFTC(bus);
126 ppb_1284_set_error(device_t bus, int error, int event)
128 struct ppb_data *ppb = DEVTOSOFTC(bus);
139 ppb_rstr(bus) & 0xff, event);
197 ppb_peripheral_negociate(device_t bus, int mode, int options)
202 ppb_set_mode(bus, PPB_COMPATIBLE);
203 ppb_1284_set_state(bus, PPB_PERIPHERAL_NEGOCIATION);
210 while (spin-- && (ppb_rstr(bus) & nBUSY))
214 if (!(ppb_rstr(bus) & SELECT) || !spin) {
220 r = ppb_rdtr(bus);
227 ppb_wctr(bus, (STROBE | nINIT) & ~(SELECTIN));
231 ppb_wctr(bus, (nINIT) & ~(SELECTIN | STROBE));
237 ppb_1284_set_error(bus, PPB_MODE_UNSUPPORTED, 4);
241 ppb_1284_set_state(bus, PPB_PERIPHERAL_IDLE);
244 ppb_set_mode(bus, PPB_BYTE);
256 ppb_wctr(bus, SELECTIN);
260 ppb_wctr(bus, (SELECTIN) & ~(STROBE | nINIT));
261 ppb_1284_set_error(bus, PPB_MODE_UNSUPPORTED, 4);
273 ppb_peripheral_terminate(bus, PPB_WAIT);
285 ppb_peripheral_terminate(device_t bus, int how)
293 ppb_1284_set_state(bus, PPB_PERIPHERAL_TERMINATION);
296 if ((error = do_peripheral_wait(bus, SELECT | nBUSY, 0))) {
297 ppb_1284_set_error(bus, PPB_TIMEOUT, 22);
302 ppb_wctr(bus, (nINIT | STROBE) & ~(AUTOFEED | SELECTIN));
305 if ((error = do_peripheral_wait(bus, nBUSY, nBUSY))) {
306 ppb_1284_set_error(bus, PPB_TIMEOUT, 25);
311 ppb_wctr(bus, (SELECTIN | nINIT | STROBE) & ~(AUTOFEED));
314 ppb_wctr(bus, (SELECTIN | nINIT) & ~(STROBE | AUTOFEED));
317 if ((error = do_peripheral_wait(bus, nBUSY, 0))) {
318 ppb_1284_set_error(bus, PPB_TIMEOUT, 28);
323 ppb_set_mode(bus, PPB_COMPATIBLE);
324 ppb_1284_set_state(bus, PPB_FORWARD_IDLE);
335 byte_peripheral_outbyte(device_t bus, char *buffer, int last)
340 if ((error = do_1284_wait(bus, nBUSY, nBUSY))) {
341 ppb_1284_set_error(bus, PPB_TIMEOUT, 7);
346 if (!(ppb_rstr(bus) & SELECT)) {
347 ppb_peripheral_terminate(bus, PPB_WAIT);
355 ppb_wdtr(bus, *buffer);
358 ppb_wctr(bus, (AUTOFEED | STROBE) & ~(nINIT | SELECTIN));
361 if ((error = do_peripheral_wait(bus, nBUSY, 0))) {
362 ppb_1284_set_error(bus, PPB_TIMEOUT, 16);
368 ppb_wctr(bus, (AUTOFEED) & ~(nINIT | STROBE | SELECTIN));
370 ppb_wctr(bus, (nINIT) & ~(STROBE | SELECTIN | AUTOFEED));
375 if ((error = do_peripheral_wait(bus, nACK | nBUSY, 0))) {
376 ppb_1284_set_error(bus, PPB_TIMEOUT, 16);
382 if (!(ppb_rstr(bus) & SELECT)) {
383 ppb_peripheral_terminate(bus, PPB_WAIT);
397 byte_peripheral_write(device_t bus, char *buffer, int len, int *sent)
402 ppb_1284_set_state(bus, PPB_PERIPHERAL_TRANSFER);
411 r = ppb_rctr(bus);
412 ppb_wctr(bus, r & ~nINIT);
418 error = ppb_poll_bus(bus, PPB_FOREVER, nBUSY, nBUSY,
427 if ((error = byte_peripheral_outbyte(bus, buffer+i, (i == len-1))))
432 ppb_1284_set_state(bus, PPB_PERIPHERAL_IDLE);
444 byte_1284_inbyte(device_t bus, char *buffer)
449 ppb_wctr(bus, (PCD | nINIT | AUTOFEED) & ~(STROBE | SELECTIN));
452 if ((error = do_1284_wait(bus, nACK, 0))) {
453 ppb_1284_set_error(bus, PPB_TIMEOUT, 9);
458 *buffer = ppb_rdtr(bus);
461 ppb_wctr(bus, (nINIT) & ~(AUTOFEED | STROBE | SELECTIN));
464 if ((error = do_1284_wait(bus, nACK, nACK))) {
465 ppb_1284_set_error(bus, PPB_TIMEOUT, 11);
470 ppb_wctr(bus, (nINIT | STROBE) & ~(AUTOFEED | SELECTIN));
472 ppb_wctr(bus, (nINIT) & ~(AUTOFEED | STROBE | SELECTIN));
484 nibble_1284_inbyte(device_t bus, char *buffer)
492 ppb_wctr(bus, (nINIT | AUTOFEED) & ~(STROBE | SELECTIN));
497 if ((error = do_1284_wait(bus, nACK, 0))) {
498 ppb_1284_set_error(bus, PPB_TIMEOUT, 9);
503 nibble[i] = ppb_rstr(bus);
506 ppb_wctr(bus, nINIT & ~(AUTOFEED | STROBE | SELECTIN));
509 if ((error = do_1284_wait(bus, nACK, nACK))) {
510 ppb_1284_set_error(bus, PPB_TIMEOUT, 11);
528 spp_1284_read(device_t bus, int mode, char *buffer, int max, int *read)
536 state = ppb_1284_get_state(bus);
540 if ((error = ppb_1284_negociate(bus, mode, 0)))
549 ppb_1284_terminate(bus);
550 if ((error = ppb_1284_negociate(bus, mode, 0)))
555 while ((len < max) && !(ppb_rstr(bus) & (nFAULT))) {
557 ppb_1284_set_state(bus, PPB_REVERSE_TRANSFER);
566 if (nibble_1284_inbyte(bus, buffer+len))
570 if (byte_1284_inbyte(bus, buffer+len))
582 ppb_1284_set_state(bus, PPB_REVERSE_IDLE);
587 ppb_1284_terminate(bus);
597 ppb_1284_read_id(device_t bus, int mode, char *buffer,
608 if ((error = ppb_1284_negociate(bus, PPB_NIBBLE, PPB_REQUEST_ID)))
610 error = spp_1284_read(bus, PPB_NIBBLE, buffer, max, read);
613 if ((error = ppb_1284_negociate(bus, PPB_BYTE, PPB_REQUEST_ID)))
615 error = spp_1284_read(bus, PPB_BYTE, buffer, max, read);
621 ppb_1284_terminate(bus);
631 ppb_1284_read(device_t bus, int mode, char *buffer,
639 error = spp_1284_read(bus, mode, buffer, max, read);
658 ppb_1284_negociate(device_t bus, int mode, int options)
667 if (ppb_1284_get_state(bus) >= PPB_PERIPHERAL_NEGOCIATION)
668 ppb_peripheral_terminate(bus, PPB_WAIT);
670 if (ppb_1284_get_state(bus) != PPB_FORWARD_IDLE)
671 ppb_1284_terminate(bus);
678 ppb_set_mode(bus, PPB_COMPATIBLE);
681 ppb_1284_reset_error(bus, PPB_FORWARD_IDLE);
687 ppb_wctr(bus, (nINIT | SELECTIN) & ~(STROBE | AUTOFEED));
691 ppb_1284_set_state(bus, PPB_NEGOCIATION);
694 ppb_wdtr(bus, request_mode);
698 ppb_wctr(bus, (nINIT | STROBE) & ~(AUTOFEED | SELECTIN));
700 ppb_wctr(bus, (nINIT) & ~(STROBE | AUTOFEED | SELECTIN));
707 ppb_wctr(bus, (nINIT | AUTOFEED) & ~(STROBE | SELECTIN));
712 if (ppb_poll_bus(bus, 40, nACK | SELECT | nFAULT,
714 ppb_1284_set_error(bus, PPB_NOT_IEEE1284, 2);
720 if (do_1284_wait(bus, nACK | PERROR | SELECT | nFAULT,
722 ppb_1284_set_error(bus, PPB_NOT_IEEE1284, 2);
729 ppb_wctr(bus, (nINIT | STROBE | AUTOFEED) & ~SELECTIN);
733 ppb_wctr(bus, nINIT & ~(SELECTIN | AUTOFEED | STROBE));
736 if (do_1284_wait(bus, nACK, nACK)) {
737 ppb_1284_set_error(bus, PPB_TIMEOUT, 6);
747 ppb_1284_terminate(bus);
752 if (do_1284_wait(bus, nACK | SELECT, nACK)) {
753 ppb_1284_set_error(bus, PPB_MODE_UNSUPPORTED, 7);
758 if (do_1284_wait(bus, nACK | SELECT, SELECT | nACK)) {
759 ppb_1284_set_error(bus, PPB_MODE_UNSUPPORTED, 7);
769 ppb_1284_set_state(bus, PPB_REVERSE_IDLE);
773 ppb_1284_set_state(bus, PPB_SETUP);
774 ppb_wctr(bus, (nINIT | AUTOFEED) & ~(SELECTIN | STROBE));
778 if (do_1284_wait(bus, nACK | SELECT | nBUSY,
780 ppb_1284_set_error(bus, PPB_TIMEOUT, 30);
785 if (do_1284_wait(bus, nACK | SELECT | PERROR | nBUSY,
787 ppb_1284_set_error(bus, PPB_TIMEOUT, 30);
794 ppb_1284_set_state(bus, PPB_ECP_FORWARD_IDLE);
797 ppb_1284_set_state(bus, PPB_EPP_IDLE);
803 ppb_set_mode(bus, mode);
808 ppb_1284_terminate(bus);
820 ppb_1284_terminate(device_t bus)
829 ppb_1284_set_state(bus, PPB_TERMINATION);
833 ppb_wctr(bus, (nINIT | STROBE | SELECTIN) & ~(AUTOFEED));
838 ppb_wctr(bus, (nINIT | SELECTIN) & ~(STROBE | AUTOFEED));
841 if (do_1284_wait(bus, nACK | nBUSY | nFAULT, nFAULT)) {
842 ppb_1284_set_error(bus, PPB_TIMEOUT, 24);
847 ppb_wctr(bus, (nINIT | SELECTIN | AUTOFEED) & ~STROBE);
852 if (do_1284_wait(bus, nACK, nACK)) {
853 ppb_1284_set_error(bus, PPB_TIMEOUT, 27);
857 ppb_wctr(bus, (nINIT | SELECTIN) & ~(STROBE | AUTOFEED));
861 ppb_set_mode(bus, PPB_COMPATIBLE);
862 ppb_1284_set_state(bus, PPB_FORWARD_IDLE);