Lines Matching refs:rfc_sc
280 rfcprobedens(struct rfc_softc *rfc_sc, int dnum) in rfcprobedens() argument
287 bus_space_write_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS, in rfcprobedens()
295 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS) in rfcprobedens()
298 device_xname(rfc_sc->sc_dev)); in rfcprobedens()
301 bus_space_write_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2SA, 1); in rfcprobedens()
304 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS) in rfcprobedens()
307 device_xname(rfc_sc->sc_dev)); in rfcprobedens()
310 bus_space_write_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2TA, 1); in rfcprobedens()
313 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, in rfcprobedens()
320 device_xname(rfc_sc->sc_dev)); in rfcprobedens()
323 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS) in rfcprobedens()
326 } while (rfc_sc->type == 2 && dens_flag++ == 0); in rfcprobedens()
336 struct rfc_softc *rfc_sc = device_private(self); in rfc_attach() local
341 rfc_sc->sc_dev = self; in rfc_attach()
342 rfc_sc->sc_iot = ua->ua_iot; in rfc_attach()
343 rfc_sc->sc_ioh = ua->ua_ioh; in rfc_attach()
344 rfc_sc->sc_dmat = ua->ua_dmat; in rfc_attach()
345 rfc_sc->sc_curbuf = NULL; in rfc_attach()
347 uba_intr_establish(ua->ua_icookie, ua->ua_cvec, rfc_intr, rfc_sc, in rfc_attach()
348 &rfc_sc->sc_intr_count); in rfc_attach()
350 evcnt_attach_dynamic(&rfc_sc->sc_intr_count, EVCNT_TYPE_INTR, in rfc_attach()
351 ua->ua_evcnt, device_xname(rfc_sc->sc_dev), "intr"); in rfc_attach()
353 i = bus_dmamap_create(rfc_sc->sc_dmat, RX2_BYTE_DD, 1, RX2_BYTE_DD, 0, in rfc_attach()
354 BUS_DMA_ALLOCNOW, &rfc_sc->sc_dmam); in rfc_attach()
361 bus_space_write_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS, RX2CS_INIT); in rfc_attach()
367 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS) in rfc_attach()
369 && (bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2ES) in rfc_attach()
383 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS) in rfc_attach()
385 rfc_sc->type = 2; in rfc_attach()
388 rfc_sc->type = 1; in rfc_attach()
391 printf(": RX0%d\n", rfc_sc->type); in rfc_attach()
400 rfc_sc->sc_childs[0] = config_found(rfc_sc->sc_dev, &rfc_aa, rf_print, in rfc_attach()
403 rfc_sc->sc_childs[1] = config_found(rfc_sc->sc_dev, &rfc_aa, rf_print, in rfc_attach()
415 if (rfcprobedens(rfc_sc, 0) >= 0) { in rfc_attach()
417 rfc_sc->sc_childs[0] = config_found(rfc_sc->sc_dev, &rfc_aa, in rfc_attach()
420 rfc_sc->sc_childs[0] = NULL; in rfc_attach()
421 if (rfcprobedens(rfc_sc, 1) >= 0) { in rfc_attach()
423 rfc_sc->sc_childs[1] = config_found(rfc_sc->sc_dev, &rfc_aa, in rfc_attach()
426 rfc_sc->sc_childs[1] = NULL; in rfc_attach()
454 struct rfc_softc *rfc_sc = device_private(parent); in rf_attach() local
459 rf_sc->sc_rfc = rfc_sc; in rf_attach()
471 dl->d_typename[3] = rfc_sc->type == 1 ? '1' : '2'; /* type name */ in rf_attach()
527 rfc_sendcmd(struct rfc_softc *rfc_sc, int cmd, int data1, int data2) in rfc_sendcmd() argument
531 bus_space_write_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS, cmd); in rfc_sendcmd()
537 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS) in rfc_sendcmd()
540 device_xname(rfc_sc->sc_dev), cmd); in rfc_sendcmd()
543 bus_space_write_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2DB, in rfc_sendcmd()
552 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2CS) in rfc_sendcmd()
555 device_xname(rfc_sc->sc_dev), cmd); in rfc_sendcmd()
558 bus_space_write_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, RX2DB, in rfc_sendcmd()
570 struct rfc_softc *rfc_sc; in rfstrategy() local
578 rfc_sc = rf_sc->sc_rfc; in rfstrategy()
601 if (rfc_sc->sc_curbuf == NULL) { in rfstrategy()
602 rfc_sc->sc_curchild = rf_sc->sc_dnum; in rfstrategy()
603 rfc_sc->sc_curbuf = buf; in rfstrategy()
604 rfc_sc->sc_bufidx = buf->b_data; in rfstrategy()
605 rfc_sc->sc_bytesleft = buf->b_bcount; in rfstrategy()
606 rfc_intr(rfc_sc); in rfstrategy()
625 get_new_buf( struct rfc_softc *rfc_sc) in get_new_buf() argument
630 rf_sc = device_private(rfc_sc->sc_childs[rfc_sc->sc_curchild]); in get_new_buf()
631 rfc_sc->sc_curbuf = bufq_get(rf_sc->sc_bufq); in get_new_buf()
632 if (rfc_sc->sc_curbuf != NULL) { in get_new_buf()
633 rfc_sc->sc_bufidx = rfc_sc->sc_curbuf->b_data; in get_new_buf()
634 rfc_sc->sc_bytesleft = rfc_sc->sc_curbuf->b_bcount; in get_new_buf()
638 rfc_sc->sc_childs[ rfc_sc->sc_curchild == 0 ? 1 : 0]); in get_new_buf()
641 rfc_sc->sc_curchild = rfc_sc->sc_curchild == 0 ? 1 : 0; in get_new_buf()
643 rfc_sc->sc_curbuf = bufq_get(rf_sc->sc_bufq); in get_new_buf()
644 rfc_sc->sc_bufidx = rfc_sc->sc_curbuf->b_data; in get_new_buf()
645 rfc_sc->sc_bytesleft = rfc_sc->sc_curbuf->b_bcount; in get_new_buf()
657 struct rfc_softc *rfc_sc = intarg; in rfc_intr() local
661 rf_sc = device_private(rfc_sc->sc_childs[rfc_sc->sc_curchild]); in rfc_intr()
669 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, in rfc_intr()
674 if (rfc_sc->type == 2 in rfc_intr()
680 if (rfc_sendcmd(rfc_sc, RX2CS_RSEC in rfc_intr()
699 if (rfc_sc->sc_curbuf->b_bcount in rfc_intr()
706 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
708 RFS_SETCMD(rf_sc->sc_state, (rfc_sc->sc_curbuf->b_flags in rfc_intr()
714 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, in rfc_intr()
718 bus_space_read_2(rfc_sc->sc_iot, in rfc_intr()
719 rfc_sc->sc_ioh, RX2ES) ); in rfc_intr()
720 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
729 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, in rfc_intr()
733 bus_space_read_2(rfc_sc->sc_iot, in rfc_intr()
734 rfc_sc->sc_ioh, RX2ES) ); in rfc_intr()
735 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
738 if (rfc_sc->sc_bytesleft > i) { in rfc_intr()
739 rfc_sc->sc_bytesleft -= i; in rfc_intr()
740 rfc_sc->sc_bufidx = in rfc_intr()
741 (char *)rfc_sc->sc_bufidx + i; in rfc_intr()
743 biodone(rfc_sc->sc_curbuf); in rfc_intr()
744 rf_sc = get_new_buf( rfc_sc); in rfc_intr()
749 (rfc_sc->sc_curbuf->b_flags & B_READ) != 0 in rfc_intr()
754 bus_dmamap_unload(rfc_sc->sc_dmat, rfc_sc->sc_dmam); in rfc_intr()
756 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, in rfc_intr()
760 bus_space_read_2(rfc_sc->sc_iot, in rfc_intr()
761 rfc_sc->sc_ioh, RX2ES)); in rfc_intr()
762 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
770 bus_dmamap_unload(rfc_sc->sc_dmat, rfc_sc->sc_dmam); in rfc_intr()
772 if ((bus_space_read_2(rfc_sc->sc_iot, rfc_sc->sc_ioh, in rfc_intr()
776 bus_space_read_2(rfc_sc->sc_iot, in rfc_intr()
777 rfc_sc->sc_ioh, RX2ES)); in rfc_intr()
778 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
781 if (rfc_sc->sc_bytesleft > i) { in rfc_intr()
782 rfc_sc->sc_bytesleft -= i; in rfc_intr()
783 rfc_sc->sc_bufidx = in rfc_intr()
784 (char *)rfc_sc->sc_bufidx + i; in rfc_intr()
786 biodone(rfc_sc->sc_curbuf); in rfc_intr()
787 rf_sc = get_new_buf( rfc_sc); in rfc_intr()
792 (rfc_sc->sc_curbuf->b_flags & B_READ) != 0 in rfc_intr()
805 if (rfc_sc->sc_curbuf->b_error != 0) { in rfc_intr()
813 rfc_sc->sc_curbuf->b_resid = rfc_sc->sc_bytesleft; in rfc_intr()
814 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
815 biodone(rfc_sc->sc_curbuf); in rfc_intr()
816 rf_sc = get_new_buf( rfc_sc); in rfc_intr()
827 i = bus_dmamap_load(rfc_sc->sc_dmat, rfc_sc->sc_dmam, in rfc_intr()
828 rfc_sc->sc_bufidx, (rf_sc->sc_state & RFS_DENS) == 0 in rfc_intr()
830 rfc_sc->sc_curbuf->b_proc, BUS_DMA_NOWAIT); in rfc_intr()
834 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
838 if (rfc_sendcmd(rfc_sc, RX2CS_EBUF | RX2CS_IE in rfc_intr()
841 | ((rfc_sc->sc_dmam->dm_segs[0].ds_addr in rfc_intr()
844 rfc_sc->sc_dmam->dm_segs[0].ds_addr & 0xffff) < 0) { in rfc_intr()
846 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
847 bus_dmamap_unload(rfc_sc->sc_dmat, in rfc_intr()
848 rfc_sc->sc_dmam); in rfc_intr()
852 i = bus_dmamap_load(rfc_sc->sc_dmat, rfc_sc->sc_dmam, in rfc_intr()
853 rfc_sc->sc_bufidx, (rf_sc->sc_state & RFS_DENS) == 0 in rfc_intr()
855 rfc_sc->sc_curbuf->b_proc, BUS_DMA_NOWAIT); in rfc_intr()
859 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
863 if (rfc_sendcmd(rfc_sc, RX2CS_FBUF | RX2CS_IE in rfc_intr()
866 | ((rfc_sc->sc_dmam->dm_segs[0].ds_addr in rfc_intr()
869 rfc_sc->sc_dmam->dm_segs[0].ds_addr & 0xffff) < 0) { in rfc_intr()
871 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
872 bus_dmamap_unload(rfc_sc->sc_dmat, in rfc_intr()
873 rfc_sc->sc_dmam); in rfc_intr()
877 i = (rfc_sc->sc_curbuf->b_bcount - rfc_sc->sc_bytesleft in rfc_intr()
878 + rfc_sc->sc_curbuf->b_blkno * DEV_BSIZE) / in rfc_intr()
882 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
886 if (rfc_sendcmd(rfc_sc, RX2CS_WSEC | RX2CS_IE in rfc_intr()
891 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
895 i = (rfc_sc->sc_curbuf->b_bcount - rfc_sc->sc_bytesleft in rfc_intr()
896 + rfc_sc->sc_curbuf->b_blkno * DEV_BSIZE) / in rfc_intr()
900 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
904 if (rfc_sendcmd(rfc_sc, RX2CS_RSEC | RX2CS_IE in rfc_intr()
909 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
924 if (rfc_sc->sc_curbuf->b_error != 0) { in rfc_intr()
932 rfc_sc->sc_curbuf->b_resid = rfc_sc->sc_bytesleft; in rfc_intr()
933 rfc_sc->sc_curbuf->b_error = EIO; in rfc_intr()
934 biodone(rfc_sc->sc_curbuf); in rfc_intr()
935 rf_sc = get_new_buf( rfc_sc); in rfc_intr()
970 struct rfc_softc *rfc_sc; in rfopen() local
976 rfc_sc = rf_sc->sc_rfc; in rfopen()
993 if (rfc_sc->type == 1 in rfopen()
1009 rfc_sc->sc_curchild = rf_sc->sc_dnum; in rfopen()
1020 if (rfc_sendcmd(rfc_sc, RX2CS_RSEC | RX2CS_IE in rfopen()