Lines Matching defs:device

103 static int heci_initialize(dev_info_t *dip, struct iamt_heci_device *device);
221 struct iamt_heci_device *device;
240 device = ddi_get_soft_state(heci_soft_state_p, instance);
241 ASSERT(device != NULL); /* can't fail - we only just allocated it */
243 device->dip = dip;
245 status = heci_initialize(dip, device);
270 heci_initialize(dev_info_t *dip, struct iamt_heci_device *device)
275 err = ddi_get_iblock_cookie(dip, 0, &device->sc_iblk);
281 /* initializes the heci device structure */
282 init_heci_device(dip, device);
288 if (ddi_regs_map_setup(dip, 1, (caddr_t *)&device->mem_addr, 0, 0,
289 &attr, &device->io_handle) != DDI_SUCCESS) {
295 err = ddi_add_intr(dip, 0, &device->sc_iblk, NULL,
296 heci_isr_interrupt, (caddr_t)device);
302 if (heci_hw_init(device)) {
307 (void) heci_initialize_clients(device);
308 if (device->heci_state != HECI_ENABLED) {
312 if (device->wd_timeout)
313 device->wd_timer = timeout(heci_wd_timer, device, 1);
320 device->host_hw_state = read_heci_register(device, H_CSR);
321 heci_csr_disable_interrupts(device);
324 ddi_remove_intr(dip, 0, device->sc_iblk);
326 if (device->mem_addr)
327 ddi_regs_map_free(&device->io_handle);
329 fini_heci_device(device);
357 * @pdev: PCI device information struct
360 * that it should release a PCI device.
482 struct iamt_heci_device *device;
491 if (!(device = ddi_get_soft_state(heci_soft_state_p, instance)))
494 *result = device->dip;
556 * @dev: device information struct
1329 struct iamt_heci_device *device = NULL;
1339 device = ddi_get_soft_state(heci_soft_state_p, instance);
1341 file = &device->files[if_num];
1344 if ((if_num < HECI_MINOR_NUMBER) || (!device) || (!file_extension))
1347 mutex_enter(&device->device_lock);
1348 if (device->heci_state != HECI_ENABLED) {
1349 mutex_exit(&device->device_lock);
1354 mutex_exit(&device->device_lock);
1356 if (file_extension == &device->iamthif_file_ext) {
1358 mutex_enter(&device->iamthif_file_ext.file_lock);
1360 if (device->iamthif_state == HECI_IAMTHIF_READ_COMPLETE &&
1361 device->iamthif_file_object == file) {
1363 mutex_enter(&device->device_lock);
1365 run_next_iamthif_cmd(device);
1366 mutex_exit(&device->device_lock);
1371 *phpp = &device->iamthif_file_ext.pollwait;
1373 mutex_exit(&device->iamthif_file_ext.file_lock);
1443 struct iamt_heci_device *device;
1446 device = ddi_get_soft_state(heci_soft_state_p, ddi_get_instance(dip));
1448 if (device->reinit_tsk)
1449 ddi_taskq_wait(device->reinit_tsk);
1452 if (device->wd_timer)
1453 (void) untimeout(device->wd_timer);
1455 mutex_enter(&device->device_lock);
1457 if (device->wd_file_ext.state == HECI_FILE_CONNECTED &&
1458 device->wd_timeout) {
1459 g_sus_wd_timeout = device->wd_timeout;
1460 device->wd_timeout = 0;
1461 device->wd_due_counter = 0;
1462 (void) memcpy(device->wd_data, stop_wd_params,
1464 device->stop = 1;
1465 if (device->host_buffer_is_empty &&
1466 flow_ctrl_creds(device, &device->wd_file_ext)) {
1467 device->host_buffer_is_empty = 0;
1468 if (!heci_send_wd(device)) {
1472 flow_ctrl_reduce(device, &device->wd_file_ext);
1474 device->wd_pending = 0;
1476 device->wd_pending = 1;
1478 device->wd_stoped = 0;
1481 while (!device->wd_stoped && err != -1) {
1482 err = cv_reltimedwait(&device->wait_stop_wd,
1483 &device->device_lock, 10*HZ, TR_CLOCK_TICK);
1486 if (!device->wd_stoped) {
1494 if (device->heci_state == HECI_ENABLED ||
1495 device->heci_state == HECI_RECOVERING_FROM_RESET) {
1496 device->heci_state = HECI_POWER_DOWN;
1497 heci_reset(device, 0);
1502 mutex_exit(&device->device_lock);
1511 struct iamt_heci_device *device;
1513 device = ddi_get_soft_state(heci_soft_state_p, ddi_get_instance(dip));
1515 mutex_enter(&device->device_lock);
1516 device->heci_state = HECI_POWER_UP;
1517 heci_reset(device, 1);
1518 mutex_exit(&device->device_lock);
1522 device->wd_timeout = g_sus_wd_timeout;
1524 (void) memcpy(device->wd_data, start_wd_params,
1526 (void) memcpy(device->wd_data + HECI_WD_PARAMS_SIZE,
1527 &device->wd_timeout, sizeof (uint16_t));
1528 device->wd_due_counter = 1;
1530 if (device->wd_timeout)
1531 device->wd_timer = timeout(heci_wd_timer, device, 1);