Lines Matching refs:unitp
149 struct seepromunit *unitp; in seeprom_do_attach() local
162 unitp = ddi_get_soft_state(seepromsoft_statep, instance); in seeprom_do_attach()
164 unitp->seeprom_dip = dip; in seeprom_do_attach()
166 (void) snprintf(unitp->seeprom_name, sizeof (unitp->seeprom_name), in seeprom_do_attach()
172 unitp->seeprom_name, ddi_node_name(dip)); in seeprom_do_attach()
178 if (i2c_client_register(dip, &unitp->seeprom_hdl) != I2C_SUCCESS) { in seeprom_do_attach()
187 unitp->seeprom_addrsize = AT34C02_ADDRSIZE; in seeprom_do_attach()
188 unitp->seeprom_memsize = AT34C02_MEMSIZE; in seeprom_do_attach()
189 unitp->seeprom_pagesize = AT34C02_PAGESIZE; in seeprom_do_attach()
190 unitp->seeprom_pagemask = AT34C02_PAGEMASK; in seeprom_do_attach()
195 unitp->seeprom_addrsize = AT24C64_ADDRSIZE; in seeprom_do_attach()
196 unitp->seeprom_memsize = AT24C64_MEMSIZE; in seeprom_do_attach()
197 unitp->seeprom_pagesize = AT24C64_PAGESIZE; in seeprom_do_attach()
198 unitp->seeprom_pagemask = AT24C64_PAGEMASK; in seeprom_do_attach()
203 (caddr_t)&unitp->seeprom_memsize, sizeof (unitp->seeprom_memsize)); in seeprom_do_attach()
205 mutex_init(&unitp->seeprom_mutex, NULL, MUTEX_DRIVER, NULL); in seeprom_do_attach()
206 cv_init(&unitp->seeprom_cv, NULL, CV_DRIVER, NULL); in seeprom_do_attach()
233 struct seepromunit *unitp; in seeprom_info() local
237 unitp = ddi_get_soft_state(seepromsoft_statep, in seeprom_info()
239 if (unitp == NULL) { in seeprom_info()
243 *result = (void *)unitp->seeprom_dip; in seeprom_info()
259 struct seepromunit *unitp; in seeprom_do_detach() local
263 unitp = ddi_get_soft_state(seepromsoft_statep, instance); in seeprom_do_detach()
264 i2c_client_unregister(unitp->seeprom_hdl); in seeprom_do_detach()
266 mutex_destroy(&unitp->seeprom_mutex); in seeprom_do_detach()
267 cv_destroy(&unitp->seeprom_cv); in seeprom_do_detach()
296 struct seepromunit *unitp; in seeprom_open() local
307 unitp = (struct seepromunit *) in seeprom_open()
310 if (unitp == NULL) { in seeprom_open()
315 mutex_enter(&unitp->seeprom_mutex); in seeprom_open()
318 if (unitp->seeprom_oflag != 0) { in seeprom_open()
321 unitp->seeprom_oflag = FEXCL; in seeprom_open()
324 if (unitp->seeprom_oflag == FEXCL) { in seeprom_open()
327 unitp->seeprom_oflag = FOPEN; in seeprom_open()
331 mutex_exit(&unitp->seeprom_mutex); in seeprom_open()
340 struct seepromunit *unitp; in seeprom_close() local
345 unitp = (struct seepromunit *) in seeprom_close()
348 if (unitp == NULL) { in seeprom_close()
353 mutex_enter(&unitp->seeprom_mutex); in seeprom_close()
355 unitp->seeprom_oflag = 0; in seeprom_close()
357 mutex_exit(&unitp->seeprom_mutex); in seeprom_close()
379 struct seepromunit *unitp; in seeprom_io() local
388 unitp = (struct seepromunit *) in seeprom_io()
392 if (unitp == NULL) { in seeprom_io()
396 if (uiop->uio_offset >= unitp->seeprom_memsize) { in seeprom_io()
411 unitp->seeprom_memsize - uiop->uio_offset); in seeprom_io()
416 mutex_enter(&unitp->seeprom_mutex); in seeprom_io()
417 while ((unitp->seeprom_flags & SEEPROM_BUSY) == SEEPROM_BUSY) { in seeprom_io()
418 if (cv_wait_sig(&unitp->seeprom_cv, in seeprom_io()
419 &unitp->seeprom_mutex) <= 0) { in seeprom_io()
420 mutex_exit(&unitp->seeprom_mutex); in seeprom_io()
425 unitp->seeprom_flags |= SEEPROM_BUSY; in seeprom_io()
426 mutex_exit(&unitp->seeprom_mutex); in seeprom_io()
429 current_xfer_len = min(bytes_to_rw, unitp->seeprom_pagesize - in seeprom_io()
430 (seeprom_addr & unitp->seeprom_pagemask)); in seeprom_io()
434 (void) i2c_transfer_alloc(unitp->seeprom_hdl, in seeprom_io()
436 unitp->seeprom_addrsize + current_xfer_len, in seeprom_io()
441 unitp->seeprom_addrsize], in seeprom_io()
443 i2c_transfer_free(unitp->seeprom_hdl, in seeprom_io()
461 if (unitp->seeprom_addrsize == 2) { in seeprom_io()
468 if ((err = i2c_transfer(unitp->seeprom_hdl, i2ctp)) != in seeprom_io()
470 i2c_transfer_free(unitp->seeprom_hdl, i2ctp); in seeprom_io()
475 i2ctp->i2c_w_resid - unitp->seeprom_addrsize; in seeprom_io()
478 i2c_transfer_free(unitp->seeprom_hdl, i2ctp); in seeprom_io()
491 (void) i2c_transfer_alloc(unitp->seeprom_hdl, &i2ctp, in seeprom_io()
492 unitp->seeprom_addrsize, current_xfer_len, in seeprom_io()
496 if (unitp->seeprom_addrsize == 2) { in seeprom_io()
505 if ((err = i2c_transfer(unitp->seeprom_hdl, i2ctp)) != in seeprom_io()
507 i2c_transfer_free(unitp->seeprom_hdl, i2ctp); in seeprom_io()
515 i2c_transfer_free(unitp->seeprom_hdl, i2ctp); in seeprom_io()
522 mutex_enter(&unitp->seeprom_mutex); in seeprom_io()
523 unitp->seeprom_flags = 0; in seeprom_io()
524 cv_signal(&unitp->seeprom_cv); in seeprom_io()
525 mutex_exit(&unitp->seeprom_mutex); in seeprom_io()