Lines Matching refs:enc
78 SYSCTL_NODE(_kern_cam, OID_AUTO, enc, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
97 PERIPHDRIVER_DECLARE(enc, encdriver);
129 struct enc_softc *enc; in enc_devgonecb() local
136 enc = (struct enc_softc *)periph->softc; in enc_devgonecb()
143 for (i = 0; i < enc->open_count; i++) in enc_devgonecb()
146 enc->open_count = 0; in enc_devgonecb()
166 struct enc_softc *enc; in enc_oninvalidate() local
168 enc = periph->softc; in enc_oninvalidate()
170 enc->enc_flags |= ENC_FLAG_INVALID; in enc_oninvalidate()
173 if (enc->enc_vec.softc_invalidate != NULL) in enc_oninvalidate()
174 enc->enc_vec.softc_invalidate(enc); in enc_oninvalidate()
184 enc->enc_flags |= ENC_FLAG_SHUTDOWN; in enc_oninvalidate()
185 if (enc->enc_daemon != NULL) { in enc_oninvalidate()
187 wakeup(enc->enc_daemon); in enc_oninvalidate()
189 callout_drain(&enc->status_updater); in enc_oninvalidate()
191 destroy_dev_sched_cb(enc->enc_dev, enc_devgonecb, periph); in enc_oninvalidate()
197 struct enc_softc *enc; in enc_dtor() local
199 enc = periph->softc; in enc_dtor()
202 if (enc->enc_vec.softc_cleanup != NULL) in enc_dtor()
203 enc->enc_vec.softc_cleanup(enc); in enc_dtor()
207 ENC_FREE(enc); in enc_dtor()
313 struct enc_softc *enc; in enc_close() local
320 enc = periph->softc; in enc_close()
321 enc->open_count--; in enc_close()
354 enc_softc_t *enc; in enc_ioctl() local
373 enc = (struct enc_softc *)periph->softc; in enc_ioctl()
374 cache = &enc->enc_cache; in enc_ioctl()
382 if ((enc->enc_flags & ENC_FLAG_INITIALIZED) == 0) { in enc_ioctl()
424 sx_slock(&enc->enc_cache_lock); in enc_ioctl()
456 error = enc->enc_vec.set_enc_status(enc, tmp, 1); in enc_ioctl()
466 if (enc->enc_vec.handle_string == NULL) { in enc_ioctl()
474 error = enc->enc_vec.handle_string(enc, &sstr, cmd); in enc_ioctl()
493 error = enc->enc_vec.get_elm_status(enc, &elms, 1); in enc_ioctl()
510 if (enc->enc_vec.get_elm_desc != NULL) { in enc_ioctl()
511 error = enc->enc_vec.get_elm_desc(enc, &elmd); in enc_ioctl()
522 if (enc->enc_vec.get_elm_devnames == NULL) { in enc_ioctl()
534 error = (*enc->enc_vec.get_elm_devnames)(enc, &elmdn); in enc_ioctl()
553 error = enc->enc_vec.set_elm_status(enc, &elms, 1); in enc_ioctl()
561 error = enc->enc_vec.init_enc(enc); in enc_ioctl()
571 sx_sunlock(&enc->enc_cache_lock); in enc_ioctl()
576 enc_runcmd(struct enc_softc *enc, char *cdb, int cdbl, char *dptr, int *dlenp) in enc_runcmd() argument
582 CAM_DEBUG(enc->periph->path, CAM_DEBUG_TRACE, in enc_runcmd()
600 ccb = cam_periph_getccb(enc->periph, CAM_PRIORITY_NORMAL); in enc_runcmd()
601 if (enc->enc_type == ENC_SEMB_SES || enc->enc_type == ENC_SEMB_SAFT) { in enc_runcmd()
643 CAM_DEBUG(enc->periph->path, CAM_DEBUG_SUBTRACE, in enc_runcmd()
649 enc_log(struct enc_softc *enc, const char *fmt, ...) in enc_log() argument
653 printf("%s%d: ", enc->periph->periph_name, enc->periph->unit_number); in enc_log()
732 enc_update_request(enc_softc_t *enc, uint32_t action) in enc_update_request() argument
734 if ((enc->pending_actions & (0x1 << action)) == 0) { in enc_update_request()
735 enc->pending_actions |= (0x1 << action); in enc_update_request()
736 ENC_DLOG(enc, "%s: queing requested action %d\n", in enc_update_request()
738 if (enc->current_action == ENC_UPDATE_NONE) in enc_update_request()
739 wakeup(enc->enc_daemon); in enc_update_request()
741 ENC_DLOG(enc, "%s: ignoring requested action %d - " in enc_update_request()
753 enc_fsm_step(enc_softc_t *enc) in enc_fsm_step() argument
761 ENC_DLOG(enc, "%s enter %p\n", __func__, enc); in enc_fsm_step()
763 enc->current_action = ffs(enc->pending_actions) - 1; in enc_fsm_step()
764 enc->pending_actions &= ~(0x1 << enc->current_action); in enc_fsm_step()
766 cur_state = &enc->enc_fsm_states[enc->current_action]; in enc_fsm_step()
770 cam_periph_unlock(enc->periph); in enc_fsm_step()
772 cam_periph_lock(enc->periph); in enc_fsm_step()
778 ccb = cam_periph_getccb(enc->periph, CAM_PRIORITY_NORMAL); in enc_fsm_step()
780 error = cur_state->fill(enc, cur_state, ccb, buf); in enc_fsm_step()
797 cam_periph_unlock(enc->periph); in enc_fsm_step()
798 cur_state->done(enc, cur_state, ccb, &buf, error, xfer_len); in enc_fsm_step()
799 cam_periph_lock(enc->periph); in enc_fsm_step()
802 ENC_DLOG(enc, "%s exit - result %d\n", __func__, error); in enc_fsm_step()
814 enc_softc_t *enc; in enc_status_updater() local
816 enc = arg; in enc_status_updater()
817 if (enc->enc_vec.poll_status != NULL) in enc_status_updater()
818 enc->enc_vec.poll_status(enc); in enc_status_updater()
824 enc_softc_t *enc; in enc_daemon() local
826 enc = arg; in enc_daemon()
828 cam_periph_lock(enc->periph); in enc_daemon()
829 while ((enc->enc_flags & ENC_FLAG_SHUTDOWN) == 0) { in enc_daemon()
830 if (enc->pending_actions == 0) { in enc_daemon()
836 enc->current_action = ENC_UPDATE_NONE; in enc_daemon()
842 cam_periph_release_boot(enc->periph); in enc_daemon()
844 callout_reset_sbt(&enc->status_updater, 60 * SBT_1S, 0, in enc_daemon()
845 enc_status_updater, enc, C_PREL(1)); in enc_daemon()
847 cam_periph_sleep(enc->periph, enc->enc_daemon, in enc_daemon()
850 enc_fsm_step(enc); in enc_daemon()
853 enc->enc_daemon = NULL; in enc_daemon()
854 cam_periph_unlock(enc->periph); in enc_daemon()
855 cam_periph_release(enc->periph); in enc_daemon()
860 enc_kproc_init(enc_softc_t *enc) in enc_kproc_init() argument
864 callout_init_mtx(&enc->status_updater, cam_periph_mtx(enc->periph), 0); in enc_kproc_init()
866 if (cam_periph_acquire(enc->periph) != 0) in enc_kproc_init()
869 result = kproc_create(enc_daemon, enc, &enc->enc_daemon, /*flags*/0, in enc_kproc_init()
871 enc->periph->unit_number); in enc_kproc_init()
874 cam_periph_lock(enc->periph); in enc_kproc_init()
875 enc->enc_vec.poll_status(enc); in enc_kproc_init()
876 cam_periph_unlock(enc->periph); in enc_kproc_init()
878 cam_periph_release(enc->periph); in enc_kproc_init()
887 enc_softc_t *enc; in enc_ctor() local
899 enc = ENC_MALLOCZ(sizeof(*enc)); in enc_ctor()
900 if (enc == NULL) { in enc_ctor()
905 enc->periph = periph; in enc_ctor()
906 enc->current_action = ENC_UPDATE_INVALID; in enc_ctor()
908 enc->enc_type = enc_type(cgd); in enc_ctor()
909 sx_init(&enc->enc_cache_lock, "enccache"); in enc_ctor()
911 switch (enc->enc_type) { in enc_ctor()
915 err = ses_softc_init(enc); in enc_ctor()
919 err = safte_softc_init(enc); in enc_ctor()
923 ENC_FREE(enc); in enc_ctor()
937 if (enc->enc_vec.poll_status != NULL) in enc_ctor()
945 periph->softc = enc; in enc_ctor()
948 if (enc->enc_vec.poll_status != NULL) { in enc_ctor()
949 err = enc_kproc_init(enc); in enc_ctor()
977 err = make_dev_s(&args, &enc->enc_dev, "%s%d", periph->periph_name, in enc_ctor()
985 enc->enc_flags |= ENC_FLAG_INITIALIZED; in enc_ctor()
993 switch (enc->enc_type) { in enc_ctor()
1015 sbuf_new(&sb, enc->announce_buf, ENC_ANNOUNCE_SZ, SBUF_FIXEDLEN); in enc_ctor()