Lines Matching refs:debug_info
68 struct cros_ec_debugfs *debug_info = in cros_ec_console_log_work() local
72 struct cros_ec_dev *ec = debug_info->ec; in cros_ec_console_log_work()
73 struct circ_buf *cb = &debug_info->log_buffer; in cros_ec_console_log_work()
79 (struct ec_params_console_read_v1 *)debug_info->read_msg->data; in cros_ec_console_log_work()
80 uint8_t *ec_buffer = (uint8_t *)debug_info->read_msg->data; in cros_ec_console_log_work()
90 mutex_lock(&debug_info->log_mutex); in cros_ec_console_log_work()
103 debug_info->read_msg); in cros_ec_console_log_work()
122 mutex_unlock(&debug_info->log_mutex); in cros_ec_console_log_work()
125 schedule_delayed_work(&debug_info->log_poll_work, in cros_ec_console_log_work()
139 struct cros_ec_debugfs *debug_info = file->private_data; in cros_ec_console_log_read() local
140 struct circ_buf *cb = &debug_info->log_buffer; in cros_ec_console_log_read()
143 mutex_lock(&debug_info->log_mutex); in cros_ec_console_log_read()
151 mutex_unlock(&debug_info->log_mutex); in cros_ec_console_log_read()
158 mutex_lock(&debug_info->log_mutex); in cros_ec_console_log_read()
175 mutex_unlock(&debug_info->log_mutex); in cros_ec_console_log_read()
182 struct cros_ec_debugfs *debug_info = file->private_data; in cros_ec_console_log_poll() local
187 mutex_lock(&debug_info->log_mutex); in cros_ec_console_log_poll()
188 if (CIRC_CNT(debug_info->log_buffer.head, in cros_ec_console_log_poll()
189 debug_info->log_buffer.tail, in cros_ec_console_log_poll()
192 mutex_unlock(&debug_info->log_mutex); in cros_ec_console_log_poll()
208 struct cros_ec_debugfs *debug_info = file->private_data; in cros_ec_pdinfo_read() local
209 struct cros_ec_device *ec_dev = debug_info->ec->ec_dev; in cros_ec_pdinfo_read()
276 struct cros_ec_debugfs *debug_info = file->private_data; in cros_ec_uptime_read() local
277 struct cros_ec_device *ec_dev = debug_info->ec->ec_dev; in cros_ec_uptime_read()
353 static int cros_ec_create_console_log(struct cros_ec_debugfs *debug_info) in cros_ec_create_console_log() argument
355 struct cros_ec_dev *ec = debug_info->ec; in cros_ec_create_console_log()
373 debug_info->read_msg = devm_kzalloc(ec->dev, in cros_ec_create_console_log()
374 sizeof(*debug_info->read_msg) + in cros_ec_create_console_log()
376 if (!debug_info->read_msg) in cros_ec_create_console_log()
379 debug_info->read_msg->version = 1; in cros_ec_create_console_log()
380 debug_info->read_msg->command = EC_CMD_CONSOLE_READ + ec->cmd_offset; in cros_ec_create_console_log()
381 debug_info->read_msg->outsize = read_params_size; in cros_ec_create_console_log()
382 debug_info->read_msg->insize = read_response_size; in cros_ec_create_console_log()
384 debug_info->log_buffer.buf = buf; in cros_ec_create_console_log()
385 debug_info->log_buffer.head = 0; in cros_ec_create_console_log()
386 debug_info->log_buffer.tail = 0; in cros_ec_create_console_log()
388 mutex_init(&debug_info->log_mutex); in cros_ec_create_console_log()
390 debugfs_create_file("console_log", S_IFREG | 0444, debug_info->dir, in cros_ec_create_console_log()
391 debug_info, &cros_ec_console_log_fops); in cros_ec_create_console_log()
393 INIT_DELAYED_WORK(&debug_info->log_poll_work, in cros_ec_create_console_log()
395 schedule_delayed_work(&debug_info->log_poll_work, 0); in cros_ec_create_console_log()
400 static void cros_ec_cleanup_console_log(struct cros_ec_debugfs *debug_info) in cros_ec_cleanup_console_log() argument
402 if (debug_info->log_buffer.buf) { in cros_ec_cleanup_console_log()
403 cancel_delayed_work_sync(&debug_info->log_poll_work); in cros_ec_cleanup_console_log()
404 mutex_destroy(&debug_info->log_mutex); in cros_ec_cleanup_console_log()
438 static int cros_ec_create_panicinfo(struct cros_ec_debugfs *debug_info) in cros_ec_create_panicinfo() argument
440 struct cros_ec_device *ec_dev = debug_info->ec->ec_dev; in cros_ec_create_panicinfo()
444 data = devm_kzalloc(debug_info->ec->dev, ec_dev->max_response, in cros_ec_create_panicinfo()
459 debug_info->panicinfo_blob.data = data; in cros_ec_create_panicinfo()
460 debug_info->panicinfo_blob.size = ret; in cros_ec_create_panicinfo()
462 debugfs_create_blob("panicinfo", 0444, debug_info->dir, in cros_ec_create_panicinfo()
463 &debug_info->panicinfo_blob); in cros_ec_create_panicinfo()
468 devm_kfree(debug_info->ec->dev, data); in cros_ec_create_panicinfo()
475 struct cros_ec_debugfs *debug_info = in cros_ec_debugfs_panic_event() local
478 if (debug_info->log_buffer.buf) { in cros_ec_debugfs_panic_event()
480 mod_delayed_work(debug_info->log_poll_work.wq, &debug_info->log_poll_work, 0); in cros_ec_debugfs_panic_event()
482 flush_delayed_work(&debug_info->log_poll_work); in cros_ec_debugfs_panic_event()
493 struct cros_ec_debugfs *debug_info; in cros_ec_debugfs_probe() local
496 debug_info = devm_kzalloc(ec->dev, sizeof(*debug_info), GFP_KERNEL); in cros_ec_debugfs_probe()
497 if (!debug_info) in cros_ec_debugfs_probe()
500 debug_info->ec = ec; in cros_ec_debugfs_probe()
501 debug_info->dir = debugfs_create_dir(name, NULL); in cros_ec_debugfs_probe()
503 ret = cros_ec_create_panicinfo(debug_info); in cros_ec_debugfs_probe()
507 ret = cros_ec_create_console_log(debug_info); in cros_ec_debugfs_probe()
511 debugfs_create_file("pdinfo", 0444, debug_info->dir, debug_info, in cros_ec_debugfs_probe()
515 debugfs_create_file("uptime", 0444, debug_info->dir, debug_info, in cros_ec_debugfs_probe()
518 debugfs_create_x32("last_resume_result", 0444, debug_info->dir, in cros_ec_debugfs_probe()
521 debugfs_create_u16("suspend_timeout_ms", 0664, debug_info->dir, in cros_ec_debugfs_probe()
524 debug_info->notifier_panic.notifier_call = cros_ec_debugfs_panic_event; in cros_ec_debugfs_probe()
526 &debug_info->notifier_panic); in cros_ec_debugfs_probe()
530 ec->debug_info = debug_info; in cros_ec_debugfs_probe()
537 debugfs_remove_recursive(debug_info->dir); in cros_ec_debugfs_probe()
545 debugfs_remove_recursive(ec->debug_info->dir); in cros_ec_debugfs_remove()
546 cros_ec_cleanup_console_log(ec->debug_info); in cros_ec_debugfs_remove()
553 if (ec->debug_info->log_buffer.buf) in cros_ec_debugfs_suspend()
554 cancel_delayed_work_sync(&ec->debug_info->log_poll_work); in cros_ec_debugfs_suspend()
563 if (ec->debug_info->log_buffer.buf) in cros_ec_debugfs_resume()
564 schedule_delayed_work(&ec->debug_info->log_poll_work, 0); in cros_ec_debugfs_resume()