Lines Matching refs:admp
214 adm1031_unit_t *admp; in adm1031_resume() local
217 admp = (adm1031_unit_t *) in adm1031_resume()
220 if (admp == NULL) { in adm1031_resume()
227 admp->adm1031_transfer->i2c_flags = I2C_WR; in adm1031_resume()
228 admp->adm1031_transfer->i2c_wlen = 2; in adm1031_resume()
229 admp->adm1031_transfer->i2c_rlen = 0; in adm1031_resume()
231 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_CONFIG_REG_1; in adm1031_resume()
232 admp->adm1031_transfer->i2c_wbuf[1] = in adm1031_resume()
233 admp->adm1031_cpr_state.config_reg_1; in adm1031_resume()
234 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_resume()
239 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_CONFIG_REG_2; in adm1031_resume()
240 admp->adm1031_transfer->i2c_wbuf[1] = in adm1031_resume()
241 admp->adm1031_cpr_state.config_reg_2; in adm1031_resume()
242 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_resume()
247 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_FAN_SPEED_CONFIG_REG; in adm1031_resume()
248 admp->adm1031_transfer->i2c_wbuf[1] = in adm1031_resume()
249 admp->adm1031_cpr_state.fan_speed_reg; in adm1031_resume()
250 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_resume()
259 mutex_enter(&admp->adm1031_mutex); in adm1031_resume()
260 admp->adm1031_flags = admp->adm1031_flags & ~ADM1031_BUSYFLAG; in adm1031_resume()
261 cv_signal(&admp->adm1031_cv); in adm1031_resume()
262 mutex_exit(&admp->adm1031_mutex); in adm1031_resume()
267 admp->adm1031_name, instance); in adm1031_resume()
275 adm1031_unit_t *admp; in adm1031_detach() local
278 admp = ddi_get_soft_state(adm1031_soft_statep, instance); in adm1031_detach()
280 if (admp->adm1031_flags & ADM1031_REGFLAG) { in adm1031_detach()
281 i2c_client_unregister(admp->adm1031_hdl); in adm1031_detach()
283 if (admp->adm1031_flags & ADM1031_TBUFFLAG) { in adm1031_detach()
284 i2c_transfer_free(admp->adm1031_hdl, admp->adm1031_transfer); in adm1031_detach()
286 if (admp->adm1031_flags & ADM1031_INTRFLAG) { in adm1031_detach()
287 ddi_remove_intr(dip, 0, admp->adm1031_icookie); in adm1031_detach()
288 cv_destroy(&admp->adm1031_icv); in adm1031_detach()
289 mutex_destroy(&admp->adm1031_imutex); in adm1031_detach()
294 cv_destroy(&admp->adm1031_cv); in adm1031_detach()
295 mutex_destroy(&admp->adm1031_mutex); in adm1031_detach()
303 adm1031_unit_t *admp = (adm1031_unit_t *)arg; in adm1031_intr() local
306 if (admp->adm1031_cvwaiting == 0) in adm1031_intr()
309 mutex_enter(&admp->adm1031_imutex); in adm1031_intr()
310 cv_broadcast(&admp->adm1031_icv); in adm1031_intr()
311 admp->adm1031_cvwaiting = 0; in adm1031_intr()
312 mutex_exit(&admp->adm1031_imutex); in adm1031_intr()
320 adm1031_unit_t *admp; in adm1031_attach() local
332 admp = ddi_get_soft_state(adm1031_soft_statep, instance); in adm1031_attach()
333 if (admp == NULL) { in adm1031_attach()
336 admp->adm1031_dip = dip; in adm1031_attach()
337 mutex_init(&admp->adm1031_mutex, NULL, MUTEX_DRIVER, NULL); in adm1031_attach()
338 cv_init(&admp->adm1031_cv, NULL, CV_DRIVER, NULL); in adm1031_attach()
340 (void) snprintf(admp->adm1031_name, sizeof (admp->adm1031_name), in adm1031_attach()
356 admp->adm1031_name, instance); in adm1031_attach()
375 admp->adm1031_name, instance); in adm1031_attach()
391 admp->adm1031_name, instance); in adm1031_attach()
399 if (i2c_transfer_alloc(admp->adm1031_hdl, &admp->adm1031_transfer, in adm1031_attach()
402 admp->adm1031_name, instance); in adm1031_attach()
406 admp->adm1031_flags |= ADM1031_TBUFFLAG; in adm1031_attach()
407 admp->adm1031_transfer->i2c_version = I2C_XFER_REV; in adm1031_attach()
409 if (i2c_client_register(dip, &admp->adm1031_hdl) != I2C_SUCCESS) { in adm1031_attach()
411 admp->adm1031_name, instance); in adm1031_attach()
415 admp->adm1031_flags |= ADM1031_REGFLAG; in adm1031_attach()
424 err = ddi_get_iblock_cookie(dip, 0, &admp->adm1031_icookie); in adm1031_attach()
426 mutex_init(&admp->adm1031_imutex, NULL, MUTEX_DRIVER, in adm1031_attach()
427 (void *)admp->adm1031_icookie); in adm1031_attach()
428 cv_init(&admp->adm1031_icv, NULL, CV_DRIVER, NULL); in adm1031_attach()
430 (caddr_t)admp) == DDI_SUCCESS) { in adm1031_attach()
431 admp->adm1031_flags |= ADM1031_INTRFLAG; in adm1031_attach()
434 admp->adm1031_name, instance); in adm1031_attach()
441 admp->adm1031_flags |= ADM1031_AUTOFLAG; in adm1031_attach()
462 adm1031_unit_t *admp; in adm1031_suspend() local
466 admp = ddi_get_soft_state(adm1031_soft_statep, instance); in adm1031_suspend()
472 mutex_enter(&admp->adm1031_mutex); in adm1031_suspend()
473 while (admp->adm1031_flags & ADM1031_BUSYFLAG) { in adm1031_suspend()
474 if (cv_wait_sig(&admp->adm1031_cv, in adm1031_suspend()
475 &admp->adm1031_mutex) <= 0) { in adm1031_suspend()
476 mutex_exit(&admp->adm1031_mutex); in adm1031_suspend()
480 admp->adm1031_flags |= ADM1031_BUSYFLAG; in adm1031_suspend()
481 mutex_exit(&admp->adm1031_mutex); in adm1031_suspend()
486 admp->adm1031_transfer->i2c_flags = I2C_WR_RD; in adm1031_suspend()
487 admp->adm1031_transfer->i2c_wlen = 1; in adm1031_suspend()
488 admp->adm1031_transfer->i2c_rlen = 1; in adm1031_suspend()
490 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_CONFIG_REG_1; in adm1031_suspend()
491 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_suspend()
496 admp->adm1031_cpr_state.config_reg_1 = in adm1031_suspend()
497 admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_suspend()
499 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_CONFIG_REG_2; in adm1031_suspend()
500 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_suspend()
505 admp->adm1031_cpr_state.config_reg_2 = in adm1031_suspend()
506 admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_suspend()
508 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_FAN_SPEED_CONFIG_REG; in adm1031_suspend()
509 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_suspend()
514 admp->adm1031_cpr_state.fan_speed_reg = in adm1031_suspend()
515 admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_suspend()
518 mutex_enter(&admp->adm1031_mutex); in adm1031_suspend()
519 admp->adm1031_flags = admp->adm1031_flags & ~ADM1031_BUSYFLAG; in adm1031_suspend()
520 cv_broadcast(&admp->adm1031_cv); in adm1031_suspend()
521 mutex_exit(&admp->adm1031_mutex); in adm1031_suspend()
523 unable to save registers", admp->adm1031_name, instance); in adm1031_suspend()
547 adm1031_unit_t *admp; in adm1031_open() local
562 admp = (adm1031_unit_t *) in adm1031_open()
564 if (admp == NULL) { in adm1031_open()
571 mutex_enter(&admp->adm1031_mutex); in adm1031_open()
573 if (admp->adm1031_oflag == 0) { in adm1031_open()
574 admp->adm1031_oflag = FEXCL; in adm1031_open()
577 } else if (admp->adm1031_oflag != FEXCL) { in adm1031_open()
578 admp->adm1031_oflag = FOPEN; in adm1031_open()
581 mutex_exit(&admp->adm1031_mutex); in adm1031_open()
589 adm1031_unit_t *admp; in adm1031_close() local
594 admp = (adm1031_unit_t *) in adm1031_close()
596 if (admp == NULL) { in adm1031_close()
600 mutex_enter(&admp->adm1031_mutex); in adm1031_close()
601 admp->adm1031_oflag = 0; in adm1031_close()
602 mutex_exit(&admp->adm1031_mutex); in adm1031_close()
609 adm1031_unit_t *admp; in adm1031_s_ioctl() local
618 admp = (adm1031_unit_t *) in adm1031_s_ioctl()
624 mutex_enter(&admp->adm1031_mutex); in adm1031_s_ioctl()
625 while (admp->adm1031_flags & ADM1031_BUSYFLAG) { in adm1031_s_ioctl()
626 if (cv_wait_sig(&admp->adm1031_cv, in adm1031_s_ioctl()
627 &admp->adm1031_mutex) <= 0) { in adm1031_s_ioctl()
628 mutex_exit(&admp->adm1031_mutex); in adm1031_s_ioctl()
632 admp->adm1031_flags |= ADM1031_BUSYFLAG; in adm1031_s_ioctl()
633 mutex_exit(&admp->adm1031_mutex); in adm1031_s_ioctl()
638 admp->adm1031_transfer->i2c_wbuf[0] = in adm1031_s_ioctl()
650 admp->adm1031_transfer->i2c_wbuf[0] = in adm1031_s_ioctl()
659 admp->adm1031_transfer->i2c_wbuf[0] = in adm1031_s_ioctl()
663 admp->adm1031_transfer->i2c_wbuf[0] = in adm1031_s_ioctl()
674 if ((admp->adm1031_flags & ADM1031_AUTOFLAG)) { in adm1031_s_ioctl()
682 admp->adm1031_transfer->i2c_wbuf[0] = in adm1031_s_ioctl()
684 admp->adm1031_transfer->i2c_flags = I2C_WR_RD; in adm1031_s_ioctl()
685 admp->adm1031_transfer->i2c_wlen = 1; in adm1031_s_ioctl()
686 admp->adm1031_transfer->i2c_rlen = 1; in adm1031_s_ioctl()
687 if (i2c_transfer(admp->adm1031_hdl, in adm1031_s_ioctl()
688 admp->adm1031_transfer) != I2C_SUCCESS) { in adm1031_s_ioctl()
692 f_set = admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_s_ioctl()
696 admp->adm1031_transfer->i2c_wbuf[1] = f_set; in adm1031_s_ioctl()
697 admp->adm1031_transfer->i2c_flags = I2C_WR; in adm1031_s_ioctl()
698 admp->adm1031_transfer->i2c_wlen = 2; in adm1031_s_ioctl()
699 if (i2c_transfer(admp->adm1031_hdl, in adm1031_s_ioctl()
700 admp->adm1031_transfer) != I2C_SUCCESS) { in adm1031_s_ioctl()
713 admp->adm1031_transfer->i2c_wbuf[0] = in adm1031_s_ioctl()
724 admp->adm1031_transfer->i2c_wbuf[0] = in adm1031_s_ioctl()
726 admp->adm1031_transfer->i2c_flags = I2C_WR_RD; in adm1031_s_ioctl()
727 admp->adm1031_transfer->i2c_wlen = 1; in adm1031_s_ioctl()
728 admp->adm1031_transfer->i2c_rlen = 1; in adm1031_s_ioctl()
729 if (i2c_transfer(admp->adm1031_hdl, in adm1031_s_ioctl()
730 admp->adm1031_transfer) != I2C_SUCCESS) { in adm1031_s_ioctl()
737 admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_s_ioctl()
752 admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_s_ioctl()
753 admp->adm1031_flags |= ADM1031_AUTOFLAG; in adm1031_s_ioctl()
755 temp = admp->adm1031_transfer->i2c_rbuf[0] & in adm1031_s_ioctl()
757 admp->adm1031_flags &= ~ADM1031_AUTOFLAG; in adm1031_s_ioctl()
762 admp->adm1031_transfer->i2c_wbuf[1] = temp; in adm1031_s_ioctl()
763 admp->adm1031_transfer->i2c_flags = I2C_WR; in adm1031_s_ioctl()
764 admp->adm1031_transfer->i2c_wlen = 2; in adm1031_s_ioctl()
765 if (i2c_transfer(admp->adm1031_hdl, in adm1031_s_ioctl()
766 admp->adm1031_transfer) != I2C_SUCCESS) { in adm1031_s_ioctl()
783 admp->adm1031_transfer->i2c_wbuf[0] = in adm1031_s_ioctl()
789 admp->adm1031_transfer->i2c_wbuf[0] = adm1031_control_regs[cmd_c]; in adm1031_s_ioctl()
809 admp->adm1031_transfer->i2c_flags = I2C_WR; in adm1031_s_ioctl()
810 admp->adm1031_transfer->i2c_wlen = 2; in adm1031_s_ioctl()
811 admp->adm1031_transfer->i2c_rlen = 0; in adm1031_s_ioctl()
812 admp->adm1031_transfer->i2c_wbuf[1] = write_value; in adm1031_s_ioctl()
813 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_s_ioctl()
821 admp->adm1031_transfer->i2c_flags = I2C_WR_RD; in adm1031_s_ioctl()
822 admp->adm1031_transfer->i2c_wlen = 1; in adm1031_s_ioctl()
823 admp->adm1031_transfer->i2c_rlen = 1; in adm1031_s_ioctl()
824 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_s_ioctl()
830 temp = admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_s_ioctl()
853 mutex_enter(&admp->adm1031_mutex); in adm1031_s_ioctl()
854 admp->adm1031_flags = admp->adm1031_flags & (~ADM1031_BUSYFLAG); in adm1031_s_ioctl()
855 cv_signal(&admp->adm1031_cv); in adm1031_s_ioctl()
856 mutex_exit(&admp->adm1031_mutex); in adm1031_s_ioctl()
883 adm1031_unit_t *admp; in adm1031_i_ioctl()
896 admp = (adm1031_unit_t *) in adm1031_i_ioctl()
899 if (!(admp->adm1031_flags & ADM1031_INTRFLAG)) { in adm1031_i_ioctl()
901 admp->adm1031_name, instance); in adm1031_i_ioctl()
905 admp->adm1031_transfer->i2c_flags = I2C_WR_RD; in adm1031_i_ioctl()
906 admp->adm1031_transfer->i2c_wlen = 1; in adm1031_i_ioctl()
907 admp->adm1031_transfer->i2c_rlen = 1; in adm1031_i_ioctl()
914 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_STAT_1_REG; in adm1031_i_ioctl()
915 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) in adm1031_i_ioctl()
919 temp[0] = admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_i_ioctl()
920 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_STAT_2_REG; in adm1031_i_ioctl()
921 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) in adm1031_i_ioctl()
926 temp[1] = admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_i_ioctl()
935 mutex_enter(&admp->adm1031_mutex); in adm1031_i_ioctl()
936 while (admp->adm1031_flags & ADM1031_BUSYFLAG) { in adm1031_i_ioctl()
937 if (cv_wait_sig(&admp->adm1031_cv, in adm1031_i_ioctl()
938 &admp->adm1031_mutex) <= 0) { in adm1031_i_ioctl()
939 mutex_exit(&admp->adm1031_mutex); in adm1031_i_ioctl()
943 admp->adm1031_flags |= ADM1031_BUSYFLAG; in adm1031_i_ioctl()
945 mutex_exit(&admp->adm1031_mutex); in adm1031_i_ioctl()
947 admp->adm1031_transfer->i2c_flags = I2C_WR_RD; in adm1031_i_ioctl()
948 admp->adm1031_transfer->i2c_wlen = 1; in adm1031_i_ioctl()
949 admp->adm1031_transfer->i2c_rlen = 1; in adm1031_i_ioctl()
950 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_CONFIG_REG_1; in adm1031_i_ioctl()
951 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_i_ioctl()
957 temp1 = admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_i_ioctl()
959 admp->adm1031_transfer->i2c_flags = I2C_WR; in adm1031_i_ioctl()
960 admp->adm1031_transfer->i2c_wlen = 2; in adm1031_i_ioctl()
961 admp->adm1031_transfer->i2c_wbuf[1] = (temp1 | 0x12); in adm1031_i_ioctl()
963 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_i_ioctl()
970 mutex_enter(&admp->adm1031_mutex); in adm1031_i_ioctl()
971 admp->adm1031_flags = admp->adm1031_flags & (~ADM1031_BUSYFLAG); in adm1031_i_ioctl()
972 cv_signal(&admp->adm1031_cv); in adm1031_i_ioctl()
973 mutex_exit(&admp->adm1031_mutex); in adm1031_i_ioctl()
977 mutex_enter(&admp->adm1031_imutex); in adm1031_i_ioctl()
978 admp->adm1031_cvwaiting = 1; in adm1031_i_ioctl()
979 (void) cv_wait_sig(&admp->adm1031_icv, &admp->adm1031_imutex); in adm1031_i_ioctl()
980 mutex_exit(&admp->adm1031_imutex); in adm1031_i_ioctl()
986 mutex_enter(&admp->adm1031_mutex); in adm1031_i_ioctl()
988 while (admp->adm1031_flags & ADM1031_BUSYFLAG) { in adm1031_i_ioctl()
989 if (cv_wait_sig(&admp->adm1031_cv, in adm1031_i_ioctl()
990 &admp->adm1031_mutex) <= 0) { in adm1031_i_ioctl()
991 mutex_exit(&admp->adm1031_mutex); in adm1031_i_ioctl()
995 admp->adm1031_flags |= ADM1031_BUSYFLAG; in adm1031_i_ioctl()
997 admp->adm1031_transfer->i2c_flags = I2C_WR_RD; in adm1031_i_ioctl()
998 admp->adm1031_transfer->i2c_wlen = 1; in adm1031_i_ioctl()
999 admp->adm1031_transfer->i2c_rlen = 1; in adm1031_i_ioctl()
1000 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_CONFIG_REG_1; in adm1031_i_ioctl()
1002 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_i_ioctl()
1009 temp1 = admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_i_ioctl()
1010 admp->adm1031_transfer->i2c_flags = I2C_WR; in adm1031_i_ioctl()
1011 admp->adm1031_transfer->i2c_wlen = 2; in adm1031_i_ioctl()
1012 admp->adm1031_transfer->i2c_wbuf[1] = (temp1 & (~0x12)); in adm1031_i_ioctl()
1014 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_i_ioctl()
1020 admp->adm1031_flags = admp->adm1031_flags & (~ADM1031_BUSYFLAG); in adm1031_i_ioctl()
1021 cv_signal(&admp->adm1031_cv); in adm1031_i_ioctl()
1022 mutex_exit(&admp->adm1031_mutex); in adm1031_i_ioctl()
1024 admp->adm1031_transfer->i2c_flags = I2C_WR_RD; in adm1031_i_ioctl()
1025 admp->adm1031_transfer->i2c_wlen = 1; in adm1031_i_ioctl()
1026 admp->adm1031_transfer->i2c_rlen = 1; in adm1031_i_ioctl()
1027 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_STAT_1_REG; in adm1031_i_ioctl()
1028 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_i_ioctl()
1033 temp[0] = admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_i_ioctl()
1035 admp->adm1031_transfer->i2c_wbuf[0] = ADM1031_STAT_2_REG; in adm1031_i_ioctl()
1036 if (i2c_transfer(admp->adm1031_hdl, admp->adm1031_transfer) != in adm1031_i_ioctl()
1041 temp[1] = admp->adm1031_transfer->i2c_rbuf[0]; in adm1031_i_ioctl()
1053 mutex_enter(&admp->adm1031_mutex); in adm1031_i_ioctl()
1054 admp->adm1031_flags = admp->adm1031_flags & (~ADM1031_BUSYFLAG); in adm1031_i_ioctl()
1055 cv_signal(&admp->adm1031_cv); in adm1031_i_ioctl()
1056 mutex_exit(&admp->adm1031_mutex); in adm1031_i_ioctl()