Lines Matching refs:ipmi_device
113 struct acpi_ipmi_device *ipmi_device;
117 ipmi_device = kzalloc(sizeof(*ipmi_device), GFP_KERNEL);
118 if (!ipmi_device)
121 kref_init(&ipmi_device->kref);
122 INIT_LIST_HEAD(&ipmi_device->head);
123 INIT_LIST_HEAD(&ipmi_device->tx_msg_list);
124 spin_lock_init(&ipmi_device->tx_msg_lock);
125 ipmi_device->handle = handle;
126 ipmi_device->dev = get_device(dev);
127 ipmi_device->ipmi_ifnum = iface;
130 ipmi_device, &user);
133 kfree(ipmi_device);
136 ipmi_device->user_interface = user;
138 return ipmi_device;
141 static void ipmi_dev_release(struct acpi_ipmi_device *ipmi_device)
143 ipmi_destroy_user(ipmi_device->user_interface);
144 put_device(ipmi_device->dev);
145 kfree(ipmi_device);
156 static void __ipmi_dev_kill(struct acpi_ipmi_device *ipmi_device)
158 list_del(&ipmi_device->head);
159 if (driver_data.selected_smi == ipmi_device)
166 ipmi_device->dead = true;
171 struct acpi_ipmi_device *ipmi_device = NULL;
175 ipmi_device = driver_data.selected_smi;
176 kref_get(&ipmi_device->kref);
180 return ipmi_device;
183 static void acpi_ipmi_dev_put(struct acpi_ipmi_device *ipmi_device)
185 kref_put(&ipmi_device->kref, ipmi_dev_release_kref);
376 struct acpi_ipmi_device *ipmi_device = user_msg_data;
379 struct device *dev = ipmi_device->dev;
382 if (msg->user != ipmi_device->user_interface) {
385 msg->user, ipmi_device->user_interface);
389 spin_lock_irqsave(&ipmi_device->tx_msg_lock, flags);
390 list_for_each_entry_safe(tx_msg, temp, &ipmi_device->tx_msg_list, head) {
397 spin_unlock_irqrestore(&ipmi_device->tx_msg_lock, flags);
438 struct acpi_ipmi_device *ipmi_device, *temp;
453 ipmi_device = ipmi_dev_alloc(iface, smi_data.dev, handle);
454 if (!ipmi_device) {
469 driver_data.selected_smi = ipmi_device;
470 list_add_tail(&ipmi_device->head, &driver_data.ipmi_devices);
478 ipmi_dev_release(ipmi_device);
486 struct acpi_ipmi_device *ipmi_device, *temp;
490 list_for_each_entry_safe(ipmi_device, temp,
492 if (ipmi_device->ipmi_ifnum != iface) {
494 __ipmi_dev_kill(ipmi_device);
505 ipmi_flush_tx_msg(ipmi_device);
506 acpi_ipmi_dev_put(ipmi_device);
528 struct acpi_ipmi_device *ipmi_device;
545 ipmi_device = tx_msg->device;
555 if (ipmi_device->dead) {
560 spin_lock_irqsave(&ipmi_device->tx_msg_lock, flags);
561 list_add_tail(&tx_msg->head, &ipmi_device->tx_msg_list);
562 spin_unlock_irqrestore(&ipmi_device->tx_msg_lock, flags);
565 err = ipmi_request_settime(ipmi_device->user_interface,
580 ipmi_cancel_tx_msg(ipmi_device, tx_msg);
610 struct acpi_ipmi_device *ipmi_device;
625 ipmi_device = list_first_entry(&driver_data.ipmi_devices,
628 __ipmi_dev_kill(ipmi_device);
631 ipmi_flush_tx_msg(ipmi_device);
632 acpi_ipmi_dev_put(ipmi_device);