Lines Matching defs:admp

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