Lines Matching refs:unitp

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