Home | History | Annotate | Download | only in pci

Lines Matching refs:ac

282 	struct amr_ccb *ac;
415 ac = malloc(sizeof(*ac) * AMR_MAX_CMDS, M_DEVBUF, M_WAITOK | M_ZERO);
416 amr->amr_ccbs = ac;
426 for (i = 0; i < AMR_MAX_CMDS; i++, ac++) {
429 BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW, &ac->ac_xfer_map);
433 ac->ac_ident = i;
434 cv_init(&ac->ac_cv, "amr1ccb");
435 mutex_init(&ac->ac_mutex, MUTEX_DEFAULT, IPL_NONE);
436 amr_ccb_free(amr, ac);
546 struct amr_ccb *ac;
563 SLIST_FOREACH(ac, &amr->amr_ccb_freelist, ac_chain.slist) {
564 bus_dmamap_destroy(amr->amr_dmat, ac->ac_xfer_map);
785 struct amr_ccb *ac;
792 if ((rv = amr_ccb_alloc(amr, &ac)) == 0) {
793 ac->ac_cmd.mb_command = AMR_CMD_FLUSH;
794 rv = amr_ccb_poll(amr, ac, 30000);
795 amr_ccb_free(amr, ac);
810 struct amr_ccb *ac;
823 ac = amr->amr_ccbs + idx;
831 if ((ac->ac_flags & AC_ACTIVE) == 0) {
833 device_xname(amr->amr_dv), ac->ac_flags);
837 ac->ac_status = mbox.mb_status;
838 ac->ac_flags = (ac->ac_flags & ~AC_ACTIVE) |
840 TAILQ_REMOVE(&amr->amr_ccb_active, ac, ac_chain.tailq);
842 if ((ac->ac_flags & AC_MOAN) != 0)
844 device_xname(amr->amr_dv), ac->ac_ident);
848 if (ac->ac_handler != NULL) {
849 (*ac->ac_handler)(ac);
851 mutex_enter(&ac->ac_mutex);
852 cv_signal(&ac->ac_cv);
853 mutex_exit(&ac->ac_mutex);
875 struct amr_ccb *ac;
896 ac = TAILQ_FIRST(&amr->amr_ccb_active);
897 while (ac != NULL) {
898 if (ac->ac_start_time + AMR_TIMEOUT > time_uptime)
900 if ((ac->ac_flags & AC_MOAN) == 0) {
902 device_xname(amr->amr_dv), ac->ac_ident);
903 amr_ccb_dump(amr, ac);
904 ac->ac_flags |= AC_MOAN;
906 ac = TAILQ_NEXT(ac, ac_chain.tailq);
916 struct amr_ccb *ac;
941 ac = TAILQ_FIRST(&amr->amr_ccb_active);
942 while (ac != NULL) {
943 if (ac->ac_start_time + AMR_TIMEOUT > time_uptime)
945 if ((ac->ac_flags & AC_MOAN) == 0) {
947 device_xname(amr->amr_dv), ac->ac_ident);
948 amr_ccb_dump(amr, ac);
949 ac->ac_flags |= AC_MOAN;
951 ac = TAILQ_NEXT(ac, ac_chain.tailq);
955 if ((rv = amr_ccb_alloc(amr, &ac)) != 0) {
961 ac->ac_cmd.mb_command = AMR_CMD_ENQUIRY;
963 rv = amr_ccb_map(amr, ac, amr->amr_enqbuf,
968 amr_ccb_free(amr, ac);
972 rv = amr_ccb_wait(amr, ac);
973 amr_ccb_unmap(amr, ac);
976 "enquiry failed (st=%d)\n", ac->ac_status);
979 amr_ccb_free(amr, ac);
1027 struct amr_ccb *ac;
1031 if (amr_ccb_alloc(amr, &ac) != 0)
1035 mb = (u_int8_t *)&ac->ac_cmd;
1040 rv = amr_ccb_map(amr, ac, sbuf, AMR_ENQUIRY_BUFSIZE, AC_XFER_IN);
1042 rv = amr_ccb_poll(amr, ac, 2000);
1043 amr_ccb_unmap(amr, ac);
1045 amr_ccb_free(amr, ac);
1071 amr_ccb_free(struct amr_softc *amr, struct amr_ccb *ac)
1073 memset(&ac->ac_cmd, 0, sizeof(ac->ac_cmd));
1074 ac->ac_cmd.mb_ident = ac->ac_ident + 1;
1075 ac->ac_cmd.mb_busy = 1;
1076 ac->ac_handler = NULL;
1077 ac->ac_flags = 0;
1080 SLIST_INSERT_HEAD(&amr->amr_ccb_freelist, ac, ac_chain.slist);
1090 amr_ccb_enqueue(struct amr_softc *amr, struct amr_ccb *ac)
1092 if (ac != NULL) {
1094 SIMPLEQ_INSERT_TAIL(&amr->amr_ccb_queue, ac, ac_chain.simpleq);
1100 if ((ac = SIMPLEQ_FIRST(&amr->amr_ccb_queue)) != NULL) {
1101 if ((*amr->amr_submit)(amr, ac) != 0) {
1107 TAILQ_INSERT_TAIL(&amr->amr_ccb_active, ac,
1119 amr_ccb_map(struct amr_softc *amr, struct amr_ccb *ac, void *data, int size,
1128 xfer = ac->ac_xfer_map;
1135 mb = &ac->ac_cmd;
1136 ac->ac_xfer_size = size;
1137 ac->ac_flags |= (tflag & (AC_XFER_OUT | AC_XFER_IN));
1138 sgloff = AMR_SGL_SIZE * ac->ac_ident;
1150 ac->ac_flags |= AC_NOSGL;
1162 bus_dmamap_sync(amr->amr_dmat, xfer, 0, ac->ac_xfer_size, dmaflag);
1164 if ((ac->ac_flags & AC_NOSGL) == 0)
1175 amr_ccb_unmap(struct amr_softc *amr, struct amr_ccb *ac)
1179 if (ac->ac_flags & AC_XFER_IN)
1181 if (ac->ac_flags & AC_XFER_OUT)
1184 if ((ac->ac_flags & AC_NOSGL) == 0)
1186 AMR_SGL_SIZE * ac->ac_ident, AMR_SGL_SIZE,
1188 bus_dmamap_sync(amr->amr_dmat, ac->ac_xfer_map, 0, ac->ac_xfer_size,
1190 bus_dmamap_unload(amr->amr_dmat, ac->ac_xfer_map);
1198 amr_ccb_poll(struct amr_softc *amr, struct amr_ccb *ac, int timo)
1203 if ((rv = (*amr->amr_submit)(amr, ac)) != 0) {
1207 TAILQ_INSERT_TAIL(&amr->amr_ccb_active, ac, ac_chain.tailq);
1212 if ((ac->ac_flags & AC_COMPLETE) != 0)
1221 return ((i == 0 || ac->ac_status != 0) ? EIO : 0);
1229 amr_ccb_wait(struct amr_softc *amr, struct amr_ccb *ac)
1231 amr_ccb_enqueue(amr, ac);
1232 mutex_enter(&ac->ac_mutex);
1233 cv_wait(&ac->ac_cv, &ac->ac_mutex);
1234 mutex_exit(&ac->ac_mutex);
1236 return (ac->ac_status != 0 ? EIO : 0);
1268 amr_quartz_submit(struct amr_softc *amr, struct amr_ccb *ac)
1306 memcpy(&amr->amr_mbox->mb_cmd, &ac->ac_cmd, sizeof(ac->ac_cmd));
1310 ac->ac_start_time = time_uptime;
1311 ac->ac_flags |= AC_ACTIVE;
1322 amr_std_submit(struct amr_softc *amr, struct amr_ccb *ac)
1342 memcpy(&amr->amr_mbox->mb_cmd, &ac->ac_cmd, sizeof(ac->ac_cmd));
1347 ac->ac_start_time = time_uptime;
1348 ac->ac_flags |= AC_ACTIVE;
1425 amr_ccb_dump(struct amr_softc *amr, struct amr_ccb *ac)
1431 printf("%08x ", ((u_int32_t *)&ac->ac_cmd)[i]);
1480 struct amr_ccb *ac;
1531 while (amr_ccb_alloc(amr, &ac) != 0) {
1539 mbi = (struct amr_mailbox_ioctl *)&ac->ac_cmd;
1545 error = amr_ccb_map(amr, ac, dp, (int)au_length,
1548 error = amr_ccb_wait(amr, ac);
1549 amr_ccb_unmap(amr, ac);
1554 amr_ccb_free(amr, ac);