Lines Matching refs:unitp

163 	struct tda8444_unit *unitp;  in tda8444_do_resume()  local
167 unitp = (struct tda8444_unit *) in tda8444_do_resume()
170 if (unitp == NULL) { in tda8444_do_resume()
176 unitp->tda8444_transfer->i2c_wbuf[0] = TDA8444_REGBASE | in tda8444_do_resume()
178 unitp->tda8444_transfer->i2c_wbuf[1] = in tda8444_do_resume()
179 unitp->tda8444_output[channel]; in tda8444_do_resume()
181 channel, unitp->tda8444_output[channel])); in tda8444_do_resume()
182 if (i2c_transfer(unitp->tda8444_hdl, in tda8444_do_resume()
183 unitp->tda8444_transfer) != I2C_SUCCESS) { in tda8444_do_resume()
188 mutex_enter(&unitp->tda8444_mutex); in tda8444_do_resume()
189 unitp->tda8444_flags = 0; in tda8444_do_resume()
190 cv_signal(&unitp->tda8444_cv); in tda8444_do_resume()
191 mutex_exit(&unitp->tda8444_mutex); in tda8444_do_resume()
199 struct tda8444_unit *unitp; in tda8444_do_attach() local
214 unitp = ddi_get_soft_state(tda8444_soft_statep, instance); in tda8444_do_attach()
216 if (unitp == NULL) { in tda8444_do_attach()
220 (void) snprintf(unitp->tda8444_name, sizeof (unitp->tda8444_name), in tda8444_do_attach()
230 unitp->tda8444_name); in tda8444_do_attach()
236 unitp->tda8444_output[i] = TDA8444_UNKNOWN_OUT; in tda8444_do_attach()
242 if (i2c_transfer_alloc(unitp->tda8444_hdl, &unitp->tda8444_transfer, in tda8444_do_attach()
250 unitp->tda8444_transfer->i2c_flags = I2C_WR; in tda8444_do_attach()
251 unitp->tda8444_transfer->i2c_version = I2C_XFER_REV; in tda8444_do_attach()
253 if (i2c_client_register(dip, &unitp->tda8444_hdl) != I2C_SUCCESS) { in tda8444_do_attach()
257 i2c_transfer_free(unitp->tda8444_hdl, unitp->tda8444_transfer); in tda8444_do_attach()
262 mutex_init(&unitp->tda8444_mutex, NULL, MUTEX_DRIVER, NULL); in tda8444_do_attach()
263 cv_init(&unitp->tda8444_cv, NULL, CV_DRIVER, NULL); in tda8444_do_attach()
287 struct tda8444_unit *unitp; in tda8444_do_detach() local
291 unitp = ddi_get_soft_state(tda8444_soft_statep, instance); in tda8444_do_detach()
293 i2c_transfer_free(unitp->tda8444_hdl, unitp->tda8444_transfer); in tda8444_do_detach()
294 i2c_client_unregister(unitp->tda8444_hdl); in tda8444_do_detach()
296 mutex_destroy(&unitp->tda8444_mutex); in tda8444_do_detach()
297 cv_destroy(&unitp->tda8444_cv); in tda8444_do_detach()
306 struct tda8444_unit *unitp; in tda8444_do_suspend() local
310 unitp = ddi_get_soft_state(tda8444_soft_statep, instance); in tda8444_do_suspend()
316 mutex_enter(&unitp->tda8444_mutex); in tda8444_do_suspend()
317 while (unitp->tda8444_flags == TDA8444_BUSY) { in tda8444_do_suspend()
318 if (cv_wait_sig(&unitp->tda8444_cv, in tda8444_do_suspend()
319 &unitp->tda8444_mutex) <= 0) { in tda8444_do_suspend()
320 mutex_exit(&unitp->tda8444_mutex); in tda8444_do_suspend()
325 unitp->tda8444_flags = TDA8444_SUSPENDED; in tda8444_do_suspend()
326 mutex_exit(&unitp->tda8444_mutex); in tda8444_do_suspend()
350 struct tda8444_unit *unitp; in tda8444_open() local
360 unitp = (struct tda8444_unit *) in tda8444_open()
363 if (unitp == NULL) { in tda8444_open()
373 mutex_enter(&unitp->tda8444_mutex); in tda8444_open()
376 if (unitp->tda8444_oflag[channel] != 0) { in tda8444_open()
379 unitp->tda8444_oflag[channel] = FEXCL; in tda8444_open()
382 if (unitp->tda8444_oflag[channel] == FEXCL) { in tda8444_open()
385 unitp->tda8444_oflag[channel] = (uint16_t)FOPEN; in tda8444_open()
389 mutex_exit(&unitp->tda8444_mutex); in tda8444_open()
398 struct tda8444_unit *unitp; in tda8444_close() local
407 unitp = (struct tda8444_unit *) in tda8444_close()
410 if (unitp == NULL) { in tda8444_close()
415 mutex_enter(&unitp->tda8444_mutex); in tda8444_close()
417 unitp->tda8444_oflag[channel] = 0; in tda8444_close()
419 mutex_exit(&unitp->tda8444_mutex); in tda8444_close()
441 struct tda8444_unit *unitp; in tda8444_io() local
457 unitp = (struct tda8444_unit *) in tda8444_io()
460 if (unitp == NULL) { in tda8444_io()
466 if (unitp->tda8444_output[channel] != TDA8444_UNKNOWN_OUT) { in tda8444_io()
467 return (uiomove(&unitp->tda8444_output[channel], 1, in tda8444_io()
480 mutex_enter(&unitp->tda8444_mutex); in tda8444_io()
481 if (unitp->tda8444_flags == TDA8444_SUSPENDED) { in tda8444_io()
482 mutex_exit(&unitp->tda8444_mutex); in tda8444_io()
487 while (unitp->tda8444_flags == TDA8444_BUSY) { in tda8444_io()
488 if (cv_wait_sig(&unitp->tda8444_cv, in tda8444_io()
489 &unitp->tda8444_mutex) <= 0) { in tda8444_io()
490 mutex_exit(&unitp->tda8444_mutex); in tda8444_io()
495 unitp->tda8444_flags = TDA8444_BUSY; in tda8444_io()
496 mutex_exit(&unitp->tda8444_mutex); in tda8444_io()
498 unitp->tda8444_transfer->i2c_wbuf[0] = (TDA8444_REGBASE | channel); in tda8444_io()
509 unitp->tda8444_transfer->i2c_wbuf[1] = in tda8444_io()
512 unitp->tda8444_transfer->i2c_wbuf[1])); in tda8444_io()
514 if (i2c_transfer(unitp->tda8444_hdl, in tda8444_io()
515 unitp->tda8444_transfer) != I2C_SUCCESS) { in tda8444_io()
518 unitp->tda8444_output[channel] = out_value; in tda8444_io()
525 mutex_enter(&unitp->tda8444_mutex); in tda8444_io()
526 unitp->tda8444_flags = 0; in tda8444_io()
527 cv_signal(&unitp->tda8444_cv); in tda8444_io()
528 mutex_exit(&unitp->tda8444_mutex); in tda8444_io()