Lines Matching refs:ipmi_device

126 	struct acpi_ipmi_device *ipmi_device;  in ipmi_dev_alloc()  local
130 ipmi_device = kzalloc(sizeof(*ipmi_device), GFP_KERNEL); in ipmi_dev_alloc()
131 if (!ipmi_device) in ipmi_dev_alloc()
134 kref_init(&ipmi_device->kref); in ipmi_dev_alloc()
135 INIT_LIST_HEAD(&ipmi_device->head); in ipmi_dev_alloc()
136 INIT_LIST_HEAD(&ipmi_device->tx_msg_list); in ipmi_dev_alloc()
137 spin_lock_init(&ipmi_device->tx_msg_lock); in ipmi_dev_alloc()
138 ipmi_device->handle = handle; in ipmi_dev_alloc()
139 ipmi_device->dev = get_device(dev); in ipmi_dev_alloc()
140 ipmi_device->ipmi_ifnum = iface; in ipmi_dev_alloc()
143 ipmi_device, &user); in ipmi_dev_alloc()
146 kfree(ipmi_device); in ipmi_dev_alloc()
149 ipmi_device->user_interface = user; in ipmi_dev_alloc()
151 return ipmi_device; in ipmi_dev_alloc()
154 static void ipmi_dev_release(struct acpi_ipmi_device *ipmi_device) in ipmi_dev_release() argument
156 ipmi_destroy_user(ipmi_device->user_interface); in ipmi_dev_release()
157 put_device(ipmi_device->dev); in ipmi_dev_release()
158 kfree(ipmi_device); in ipmi_dev_release()
169 static void __ipmi_dev_kill(struct acpi_ipmi_device *ipmi_device) in __ipmi_dev_kill() argument
171 list_del(&ipmi_device->head); in __ipmi_dev_kill()
172 if (driver_data.selected_smi == ipmi_device) in __ipmi_dev_kill()
179 ipmi_device->dead = true; in __ipmi_dev_kill()
184 struct acpi_ipmi_device *ipmi_device = NULL; in acpi_ipmi_dev_get() local
188 ipmi_device = driver_data.selected_smi; in acpi_ipmi_dev_get()
189 kref_get(&ipmi_device->kref); in acpi_ipmi_dev_get()
193 return ipmi_device; in acpi_ipmi_dev_get()
196 static void acpi_ipmi_dev_put(struct acpi_ipmi_device *ipmi_device) in acpi_ipmi_dev_put() argument
198 kref_put(&ipmi_device->kref, ipmi_dev_release_kref); in acpi_ipmi_dev_put()
389 struct acpi_ipmi_device *ipmi_device = user_msg_data; in ipmi_msg_handler() local
392 struct device *dev = ipmi_device->dev; in ipmi_msg_handler()
395 if (msg->user != ipmi_device->user_interface) { in ipmi_msg_handler()
398 msg->user, ipmi_device->user_interface); in ipmi_msg_handler()
402 spin_lock_irqsave(&ipmi_device->tx_msg_lock, flags); in ipmi_msg_handler()
403 list_for_each_entry_safe(tx_msg, temp, &ipmi_device->tx_msg_list, head) { in ipmi_msg_handler()
410 spin_unlock_irqrestore(&ipmi_device->tx_msg_lock, flags); in ipmi_msg_handler()
452 struct acpi_ipmi_device *ipmi_device, *temp; in ipmi_register_bmc() local
467 ipmi_device = ipmi_dev_alloc(iface, smi_data.dev, handle); in ipmi_register_bmc()
468 if (!ipmi_device) { in ipmi_register_bmc()
483 driver_data.selected_smi = ipmi_device; in ipmi_register_bmc()
484 list_add_tail(&ipmi_device->head, &driver_data.ipmi_devices); in ipmi_register_bmc()
492 ipmi_dev_release(ipmi_device); in ipmi_register_bmc()
500 struct acpi_ipmi_device *ipmi_device, *temp; in ipmi_bmc_gone() local
504 list_for_each_entry_safe(ipmi_device, temp, in ipmi_bmc_gone()
506 if (ipmi_device->ipmi_ifnum != iface) { in ipmi_bmc_gone()
508 __ipmi_dev_kill(ipmi_device); in ipmi_bmc_gone()
519 ipmi_flush_tx_msg(ipmi_device); in ipmi_bmc_gone()
520 acpi_ipmi_dev_put(ipmi_device); in ipmi_bmc_gone()
542 struct acpi_ipmi_device *ipmi_device; in acpi_ipmi_space_handler() local
559 ipmi_device = tx_msg->device; in acpi_ipmi_space_handler()
569 if (ipmi_device->dead) { in acpi_ipmi_space_handler()
574 spin_lock_irqsave(&ipmi_device->tx_msg_lock, flags); in acpi_ipmi_space_handler()
575 list_add_tail(&tx_msg->head, &ipmi_device->tx_msg_list); in acpi_ipmi_space_handler()
576 spin_unlock_irqrestore(&ipmi_device->tx_msg_lock, flags); in acpi_ipmi_space_handler()
579 err = ipmi_request_settime(ipmi_device->user_interface, in acpi_ipmi_space_handler()
594 ipmi_cancel_tx_msg(ipmi_device, tx_msg); in acpi_ipmi_space_handler()
624 struct acpi_ipmi_device *ipmi_device; in acpi_ipmi_exit() local
639 ipmi_device = list_first_entry(&driver_data.ipmi_devices, in acpi_ipmi_exit()
642 __ipmi_dev_kill(ipmi_device); in acpi_ipmi_exit()
645 ipmi_flush_tx_msg(ipmi_device); in acpi_ipmi_exit()
646 acpi_ipmi_dev_put(ipmi_device); in acpi_ipmi_exit()