Symbol: ipmb_dev
drivers/char/ipmi/ipmb_dev_int.c
100
queue_elem = list_first_entry(&ipmb_dev->request_queue,
drivers/char/ipmi/ipmb_dev_int.c
105
atomic_dec(&ipmb_dev->request_queue_len);
drivers/char/ipmi/ipmb_dev_int.c
107
spin_unlock_irq(&ipmb_dev->lock);
drivers/char/ipmi/ipmb_dev_int.c
138
struct ipmb_dev *ipmb_dev = to_ipmb_dev(file);
drivers/char/ipmi/ipmb_dev_int.c
157
if (ipmb_dev->is_i2c_protocol) {
drivers/char/ipmi/ipmb_dev_int.c
158
ret = ipmb_i2c_write(ipmb_dev->client, msg, rq_sa);
drivers/char/ipmi/ipmb_dev_int.c
167
temp_client = kmemdup(ipmb_dev->client, sizeof(*temp_client), GFP_KERNEL);
drivers/char/ipmi/ipmb_dev_int.c
182
struct ipmb_dev *ipmb_dev = to_ipmb_dev(file);
drivers/char/ipmi/ipmb_dev_int.c
185
mutex_lock(&ipmb_dev->file_mutex);
drivers/char/ipmi/ipmb_dev_int.c
186
poll_wait(file, &ipmb_dev->wait_queue, wait);
drivers/char/ipmi/ipmb_dev_int.c
188
if (atomic_read(&ipmb_dev->request_queue_len))
drivers/char/ipmi/ipmb_dev_int.c
190
mutex_unlock(&ipmb_dev->file_mutex);
drivers/char/ipmi/ipmb_dev_int.c
203
static void ipmb_handle_request(struct ipmb_dev *ipmb_dev)
drivers/char/ipmi/ipmb_dev_int.c
207
if (atomic_read(&ipmb_dev->request_queue_len) >=
drivers/char/ipmi/ipmb_dev_int.c
215
memcpy(&queue_elem->request, &ipmb_dev->request,
drivers/char/ipmi/ipmb_dev_int.c
217
list_add(&queue_elem->list, &ipmb_dev->request_queue);
drivers/char/ipmi/ipmb_dev_int.c
218
atomic_inc(&ipmb_dev->request_queue_len);
drivers/char/ipmi/ipmb_dev_int.c
219
wake_up_all(&ipmb_dev->wait_queue);
drivers/char/ipmi/ipmb_dev_int.c
222
static u8 ipmb_verify_checksum1(struct ipmb_dev *ipmb_dev, u8 rs_sa)
drivers/char/ipmi/ipmb_dev_int.c
225
return (rs_sa + ipmb_dev->request.netfn_rs_lun +
drivers/char/ipmi/ipmb_dev_int.c
226
ipmb_dev->request.checksum1);
drivers/char/ipmi/ipmb_dev_int.c
233
static bool is_ipmb_msg(struct ipmb_dev *ipmb_dev, u8 rs_sa)
drivers/char/ipmi/ipmb_dev_int.c
235
if ((ipmb_dev->msg_idx >= IPMB_REQUEST_LEN_MIN) &&
drivers/char/ipmi/ipmb_dev_int.c
236
(!ipmb_verify_checksum1(ipmb_dev, rs_sa)))
drivers/char/ipmi/ipmb_dev_int.c
252
struct ipmb_dev *ipmb_dev = i2c_get_clientdata(client);
drivers/char/ipmi/ipmb_dev_int.c
253
u8 *buf = (u8 *)&ipmb_dev->request;
drivers/char/ipmi/ipmb_dev_int.c
256
spin_lock_irqsave(&ipmb_dev->lock, flags);
drivers/char/ipmi/ipmb_dev_int.c
259
memset(&ipmb_dev->request, 0, sizeof(ipmb_dev->request));
drivers/char/ipmi/ipmb_dev_int.c
260
ipmb_dev->msg_idx = 0;
drivers/char/ipmi/ipmb_dev_int.c
278
buf[++ipmb_dev->msg_idx] = GET_8BIT_ADDR(client->addr);
drivers/char/ipmi/ipmb_dev_int.c
282
if (ipmb_dev->msg_idx >= sizeof(struct ipmb_msg) - 1)
drivers/char/ipmi/ipmb_dev_int.c
285
buf[++ipmb_dev->msg_idx] = *val;
drivers/char/ipmi/ipmb_dev_int.c
289
ipmb_dev->request.len = ipmb_dev->msg_idx;
drivers/char/ipmi/ipmb_dev_int.c
290
if (is_ipmb_msg(ipmb_dev, GET_8BIT_ADDR(client->addr)))
drivers/char/ipmi/ipmb_dev_int.c
291
ipmb_handle_request(ipmb_dev);
drivers/char/ipmi/ipmb_dev_int.c
297
spin_unlock_irqrestore(&ipmb_dev->lock, flags);
drivers/char/ipmi/ipmb_dev_int.c
304
struct ipmb_dev *ipmb_dev;
drivers/char/ipmi/ipmb_dev_int.c
307
ipmb_dev = devm_kzalloc(&client->dev, sizeof(*ipmb_dev),
drivers/char/ipmi/ipmb_dev_int.c
309
if (!ipmb_dev)
drivers/char/ipmi/ipmb_dev_int.c
312
spin_lock_init(&ipmb_dev->lock);
drivers/char/ipmi/ipmb_dev_int.c
313
init_waitqueue_head(&ipmb_dev->wait_queue);
drivers/char/ipmi/ipmb_dev_int.c
314
atomic_set(&ipmb_dev->request_queue_len, 0);
drivers/char/ipmi/ipmb_dev_int.c
315
INIT_LIST_HEAD(&ipmb_dev->request_queue);
drivers/char/ipmi/ipmb_dev_int.c
317
mutex_init(&ipmb_dev->file_mutex);
drivers/char/ipmi/ipmb_dev_int.c
319
ipmb_dev->miscdev.minor = MISC_DYNAMIC_MINOR;
drivers/char/ipmi/ipmb_dev_int.c
321
ipmb_dev->miscdev.name = devm_kasprintf(&client->dev, GFP_KERNEL,
drivers/char/ipmi/ipmb_dev_int.c
324
if (!ipmb_dev->miscdev.name)
drivers/char/ipmi/ipmb_dev_int.c
327
ipmb_dev->miscdev.fops = &ipmb_fops;
drivers/char/ipmi/ipmb_dev_int.c
328
ipmb_dev->miscdev.parent = &client->dev;
drivers/char/ipmi/ipmb_dev_int.c
329
ret = misc_register(&ipmb_dev->miscdev);
drivers/char/ipmi/ipmb_dev_int.c
333
ipmb_dev->is_i2c_protocol
drivers/char/ipmi/ipmb_dev_int.c
336
ipmb_dev->client = client;
drivers/char/ipmi/ipmb_dev_int.c
337
i2c_set_clientdata(client, ipmb_dev);
drivers/char/ipmi/ipmb_dev_int.c
340
misc_deregister(&ipmb_dev->miscdev);
drivers/char/ipmi/ipmb_dev_int.c
349
struct ipmb_dev *ipmb_dev = i2c_get_clientdata(client);
drivers/char/ipmi/ipmb_dev_int.c
352
misc_deregister(&ipmb_dev->miscdev);
drivers/char/ipmi/ipmb_dev_int.c
69
static inline struct ipmb_dev *to_ipmb_dev(struct file *file)
drivers/char/ipmi/ipmb_dev_int.c
71
return container_of(file->private_data, struct ipmb_dev, miscdev);
drivers/char/ipmi/ipmb_dev_int.c
77
struct ipmb_dev *ipmb_dev = to_ipmb_dev(file);
drivers/char/ipmi/ipmb_dev_int.c
84
spin_lock_irq(&ipmb_dev->lock);
drivers/char/ipmi/ipmb_dev_int.c
86
while (list_empty(&ipmb_dev->request_queue)) {
drivers/char/ipmi/ipmb_dev_int.c
87
spin_unlock_irq(&ipmb_dev->lock);
drivers/char/ipmi/ipmb_dev_int.c
92
ret = wait_event_interruptible(ipmb_dev->wait_queue,
drivers/char/ipmi/ipmb_dev_int.c
93
!list_empty(&ipmb_dev->request_queue));
drivers/char/ipmi/ipmb_dev_int.c
97
spin_lock_irq(&ipmb_dev->lock);