Lines Matching refs:ipmi_device

130 	struct acpi_ipmi_device *ipmi_device;  in ipmi_dev_alloc()  local
134 ipmi_device = kzalloc(sizeof(*ipmi_device), GFP_KERNEL); in ipmi_dev_alloc()
135 if (!ipmi_device) in ipmi_dev_alloc()
138 kref_init(&ipmi_device->kref); in ipmi_dev_alloc()
139 INIT_LIST_HEAD(&ipmi_device->head); in ipmi_dev_alloc()
140 INIT_LIST_HEAD(&ipmi_device->tx_msg_list); in ipmi_dev_alloc()
141 spin_lock_init(&ipmi_device->tx_msg_lock); in ipmi_dev_alloc()
142 ipmi_device->handle = handle; in ipmi_dev_alloc()
143 ipmi_device->dev = get_device(dev); in ipmi_dev_alloc()
144 ipmi_device->ipmi_ifnum = iface; in ipmi_dev_alloc()
147 ipmi_device, &user); in ipmi_dev_alloc()
150 kfree(ipmi_device); in ipmi_dev_alloc()
153 ipmi_device->user_interface = user; in ipmi_dev_alloc()
155 return ipmi_device; in ipmi_dev_alloc()
158 static void ipmi_dev_release(struct acpi_ipmi_device *ipmi_device) in ipmi_dev_release() argument
160 ipmi_destroy_user(ipmi_device->user_interface); in ipmi_dev_release()
161 put_device(ipmi_device->dev); in ipmi_dev_release()
162 kfree(ipmi_device); in ipmi_dev_release()
173 static void __ipmi_dev_kill(struct acpi_ipmi_device *ipmi_device) in __ipmi_dev_kill() argument
175 list_del(&ipmi_device->head); in __ipmi_dev_kill()
176 if (driver_data.selected_smi == ipmi_device) in __ipmi_dev_kill()
183 ipmi_device->dead = true; in __ipmi_dev_kill()
188 struct acpi_ipmi_device *ipmi_device = NULL; in acpi_ipmi_dev_get() local
192 ipmi_device = driver_data.selected_smi; in acpi_ipmi_dev_get()
193 kref_get(&ipmi_device->kref); in acpi_ipmi_dev_get()
197 return ipmi_device; in acpi_ipmi_dev_get()
200 static void acpi_ipmi_dev_put(struct acpi_ipmi_device *ipmi_device) in acpi_ipmi_dev_put() argument
202 kref_put(&ipmi_device->kref, ipmi_dev_release_kref); in acpi_ipmi_dev_put()
393 struct acpi_ipmi_device *ipmi_device = user_msg_data; in ipmi_msg_handler() local
396 struct device *dev = ipmi_device->dev; in ipmi_msg_handler()
399 if (msg->user != ipmi_device->user_interface) { in ipmi_msg_handler()
402 msg->user, ipmi_device->user_interface); in ipmi_msg_handler()
406 spin_lock_irqsave(&ipmi_device->tx_msg_lock, flags); in ipmi_msg_handler()
407 list_for_each_entry_safe(tx_msg, temp, &ipmi_device->tx_msg_list, head) { in ipmi_msg_handler()
414 spin_unlock_irqrestore(&ipmi_device->tx_msg_lock, flags); in ipmi_msg_handler()
456 struct acpi_ipmi_device *ipmi_device, *temp; in ipmi_register_bmc() local
471 ipmi_device = ipmi_dev_alloc(iface, smi_data.dev, handle); in ipmi_register_bmc()
472 if (!ipmi_device) { in ipmi_register_bmc()
487 driver_data.selected_smi = ipmi_device; in ipmi_register_bmc()
488 list_add_tail(&ipmi_device->head, &driver_data.ipmi_devices); in ipmi_register_bmc()
496 ipmi_dev_release(ipmi_device); in ipmi_register_bmc()
504 struct acpi_ipmi_device *ipmi_device, *temp; in ipmi_bmc_gone() local
508 list_for_each_entry_safe(ipmi_device, temp, in ipmi_bmc_gone()
510 if (ipmi_device->ipmi_ifnum != iface) { in ipmi_bmc_gone()
512 __ipmi_dev_kill(ipmi_device); in ipmi_bmc_gone()
523 ipmi_flush_tx_msg(ipmi_device); in ipmi_bmc_gone()
524 acpi_ipmi_dev_put(ipmi_device); in ipmi_bmc_gone()
546 struct acpi_ipmi_device *ipmi_device; in acpi_ipmi_space_handler() local
563 ipmi_device = tx_msg->device; in acpi_ipmi_space_handler()
573 if (ipmi_device->dead) { in acpi_ipmi_space_handler()
578 spin_lock_irqsave(&ipmi_device->tx_msg_lock, flags); in acpi_ipmi_space_handler()
579 list_add_tail(&tx_msg->head, &ipmi_device->tx_msg_list); in acpi_ipmi_space_handler()
580 spin_unlock_irqrestore(&ipmi_device->tx_msg_lock, flags); in acpi_ipmi_space_handler()
583 err = ipmi_request_settime(ipmi_device->user_interface, in acpi_ipmi_space_handler()
598 ipmi_cancel_tx_msg(ipmi_device, tx_msg); in acpi_ipmi_space_handler()
628 struct acpi_ipmi_device *ipmi_device; in acpi_ipmi_exit() local
643 ipmi_device = list_first_entry(&driver_data.ipmi_devices, in acpi_ipmi_exit()
646 __ipmi_dev_kill(ipmi_device); in acpi_ipmi_exit()
649 ipmi_flush_tx_msg(ipmi_device); in acpi_ipmi_exit()
650 acpi_ipmi_dev_put(ipmi_device); in acpi_ipmi_exit()