本文整理汇总了C++中debugfs_create_file函数的典型用法代码示例。如果您正苦于以下问题:C++ debugfs_create_file函数的具体用法?C++ debugfs_create_file怎么用?C++ debugfs_create_file使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了debugfs_create_file函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rk616_hdmi_probe
static int __devinit rk616_hdmi_probe (struct platform_device *pdev)
{
int ret = -1;
struct rkdisplay_platform_data *hdmi_data;
RK616DBG("%s\n", __FUNCTION__);
rk616_hdmi = kmalloc(sizeof(struct rk616_hdmi), GFP_KERNEL);
if(!rk616_hdmi)
{
dev_err(&pdev->dev, ">>rk30 hdmi kmalloc fail!");
return -ENOMEM;
}
memset(rk616_hdmi, 0, sizeof(struct rk616_hdmi));
platform_set_drvdata(pdev, rk616_hdmi);
rk616_hdmi->pwr_mode = NORMAL;
rk616_hdmi->rk616_drv = dev_get_drvdata(pdev->dev.parent);
if(rk616_hdmi->rk616_drv == NULL) {
goto failed;
}
hdmi_data = rk616_hdmi->rk616_drv->pdata->pdata;
if(hdmi_data == NULL) {
goto failed;
}
// Register HDMI device
if(hdmi_data) {
rk616_hdmi_property.videosrc = hdmi_data->video_source;
rk616_hdmi_property.display = hdmi_data->property;
}
rk616_hdmi_property.name = (char*)pdev->name;
rk616_hdmi_property.priv = rk616_hdmi;
rk616_hdmi->hdmi = hdmi_register(&rk616_hdmi_property, &rk616_hdmi_ops);
if(rk616_hdmi->hdmi == NULL) {
dev_err(&pdev->dev, "register hdmi device failed\n");
ret = -ENOMEM;
goto failed;
}
rk616_hdmi->hdmi->dev = &pdev->dev;
rk616_hdmi->hdmi->xscale = 95;
rk616_hdmi->hdmi->yscale = 95;
rk616_hdmi->enable = 1;
rk616_hdmi_initial(rk616_hdmi);
#ifdef CONFIG_HAS_EARLYSUSPEND
rk616_hdmi->early_suspend.suspend = rk616_hdmi_early_suspend;
rk616_hdmi->early_suspend.resume = rk616_hdmi_early_resume;
rk616_hdmi->early_suspend.level = EARLY_SUSPEND_LEVEL_DISABLE_FB - 10;
register_early_suspend(&rk616_hdmi->early_suspend);
#endif
#if defined(CONFIG_DEBUG_FS)
if(rk616_hdmi->rk616_drv && rk616_hdmi->rk616_drv->debugfs_dir) {
debugfs_create_file("hdmi", S_IRUSR, rk616_hdmi->rk616_drv->debugfs_dir, rk616_hdmi->rk616_drv, &rk616_hdmi_reg_fops);
} else {
rk616_hdmi->debugfs_dir = debugfs_create_dir("rk616", NULL);
if (IS_ERR(rk616_hdmi->debugfs_dir)) {
dev_err(rk616_hdmi->hdmi->dev,"failed to create debugfs dir for rk616!\n");
} else {
debugfs_create_file("hdmi", S_IRUSR, rk616_hdmi->debugfs_dir, rk616_hdmi, &rk616_hdmi_reg_fops);
}
}
#endif
{
rk616_hdmi->workqueue = create_singlethread_workqueue("rk616 irq");
INIT_DELAYED_WORK(&(rk616_hdmi->delay_work), rk616_hdmi_irq_work_func);
rk616_hdmi_irq_work_func(NULL);
}
dev_info(&pdev->dev, "rk616 hdmi probe sucess.\n");
return 0;
failed:
if(rk616_hdmi) {
kfree(rk616_hdmi);
rk616_hdmi = NULL;
}
dev_err(&pdev->dev, "rk30 hdmi probe error.\n");
return ret;
}
示例2: cyttsp5_setup_sysfs
static int cyttsp5_setup_sysfs(struct device *dev)
{
struct cyttsp5_device_access_data *dad
= cyttsp5_get_device_access_data(dev);
int rc;
rc = device_create_file(dev, &dev_attr_command);
if (rc) {
dev_err(dev, "%s: Error, could not create command\n",
__func__);
goto exit;
}
rc = device_create_file(dev, &dev_attr_status);
if (rc) {
dev_err(dev, "%s: Error, could not create status\n",
__func__);
goto unregister_command;
}
rc = device_create_file(dev, &dev_attr_response);
if (rc) {
dev_err(dev, "%s: Error, could not create response\n",
__func__);
goto unregister_status;
}
dad->base_dentry = debugfs_create_dir(dev_name(dev), NULL);
if (IS_ERR_OR_NULL(dad->base_dentry)) {
dev_err(dev, "%s: Error, could not create base directory\n",
__func__);
goto unregister_response;
}
dad->mfg_test_dentry = debugfs_create_dir("mfg_test",
dad->base_dentry);
if (IS_ERR_OR_NULL(dad->mfg_test_dentry)) {
dev_err(dev, "%s: Error, could not create mfg_test directory\n",
__func__);
goto unregister_base_dir;
}
if (IS_ERR_OR_NULL(debugfs_create_file("panel_scan", 0600,
dad->mfg_test_dentry, dad,
&panel_scan_debugfs_fops))) {
dev_err(dev, "%s: Error, could not create panel_scan\n",
__func__);
goto unregister_base_dir;
}
if (IS_ERR_OR_NULL(debugfs_create_file("get_idac", 0600,
dad->mfg_test_dentry, dad, &get_idac_debugfs_fops))) {
dev_err(dev, "%s: Error, could not create get_idac\n",
__func__);
goto unregister_base_dir;
}
if (IS_ERR_OR_NULL(debugfs_create_file("auto_shorts", 0400,
dad->mfg_test_dentry, dad,
&auto_shorts_debugfs_fops))) {
dev_err(dev, "%s: Error, could not create auto_shorts\n",
__func__);
goto unregister_base_dir;
}
if (IS_ERR_OR_NULL(debugfs_create_file("opens", 0400,
dad->mfg_test_dentry, dad, &opens_debugfs_fops))) {
dev_err(dev, "%s: Error, could not create opens\n",
__func__);
goto unregister_base_dir;
}
if (IS_ERR_OR_NULL(debugfs_create_file("calibrate", 0600,
dad->mfg_test_dentry, dad, &calibrate_debugfs_fops))) {
dev_err(dev, "%s: Error, could not create calibrate\n",
__func__);
goto unregister_base_dir;
}
if (IS_ERR_OR_NULL(debugfs_create_file("baseline", 0600,
dad->mfg_test_dentry, dad, &baseline_debugfs_fops))) {
dev_err(dev, "%s: Error, could not create baseline\n",
__func__);
goto unregister_base_dir;
}
if (IS_ERR_OR_NULL(debugfs_create_file("cm_panel", 0400,
dad->mfg_test_dentry, dad, &cm_panel_debugfs_fops))) {
dev_err(dev, "%s: Error, could not create cm_panel\n",
__func__);
goto unregister_base_dir;
}
if (IS_ERR_OR_NULL(debugfs_create_file("cp_panel", 0400,
dad->mfg_test_dentry, dad, &cp_panel_debugfs_fops))) {
dev_err(dev, "%s: Error, could not create cp_panel\n",
__func__);
goto unregister_base_dir;
}
//.........这里部分代码省略.........
示例3: mutex_module_init
static int __init mutex_module_init(void)
{
debugfs_mutex = debugfs_create_file("mutex", 0666, NULL, &value, &fops);
return 0;
}
示例4: pr_err
struct ion_client *ion_client_create(struct ion_device *dev,
unsigned int heap_mask,
const char *name)
{
struct ion_client *client;
struct task_struct *task;
struct rb_node **p;
struct rb_node *parent = NULL;
struct ion_client *entry;
pid_t pid;
unsigned int name_len;
if (!name) {
pr_err("%s: Name cannot be null\n", __func__);
return ERR_PTR(-EINVAL);
}
name_len = strnlen(name, 64);
get_task_struct(current->group_leader);
task_lock(current->group_leader);
pid = task_pid_nr(current->group_leader);
if (current->group_leader->flags & PF_KTHREAD) {
put_task_struct(current->group_leader);
task = NULL;
} else {
task = current->group_leader;
}
task_unlock(current->group_leader);
client = kzalloc(sizeof(struct ion_client), GFP_KERNEL);
if (!client) {
if (task)
put_task_struct(current->group_leader);
return ERR_PTR(-ENOMEM);
}
client->dev = dev;
client->handles = RB_ROOT;
mutex_init(&client->lock);
client->name = kzalloc(name_len+1, GFP_KERNEL);
if (!client->name) {
put_task_struct(current->group_leader);
kfree(client);
return ERR_PTR(-ENOMEM);
} else {
strlcpy(client->name, name, name_len+1);
}
client->heap_mask = heap_mask;
client->task = task;
client->pid = pid;
mutex_lock(&dev->lock);
p = &dev->clients.rb_node;
while (*p) {
parent = *p;
entry = rb_entry(parent, struct ion_client, node);
if (client < entry)
p = &(*p)->rb_left;
else if (client > entry)
p = &(*p)->rb_right;
}
rb_link_node(&client->node, parent, p);
rb_insert_color(&client->node, &dev->clients);
client->debug_root = debugfs_create_file(name, 0664,
dev->debug_root, client,
&debug_client_fops);
mutex_unlock(&dev->lock);
return client;
}
示例5: smb347_probe
//.........这里部分代码省略.........
smb->pdata = pdata;
smb->mains_current_limit = smb->pdata->mains_current_limit;
if (pdata->en_gpio) {
ret = gpio_request_one(
pdata->en_gpio,
smb->pdata->enable_control ==
SMB347_CHG_ENABLE_PIN_ACTIVE_LOW ?
GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW,
smb->client->name);
if (ret < 0)
dev_warn(dev, "failed to claim EN GPIO: %d\n", ret);
else
smb->en_gpio = pdata->en_gpio;
}
ret = smb347_write(smb, CMD_B, CMD_B_POR);
if (ret < 0)
return ret;
msleep(20);
ret = smb347_read(smb, CMD_B);
if (ret < 0) {
dev_err(dev, "failed read after reset\n");
return ret;
}
ret = smb347_hw_init(smb);
if (ret < 0)
return ret;
smb->mains.name = "smb347-mains";
smb->mains.type = POWER_SUPPLY_TYPE_MAINS;
smb->mains.get_property = smb347_mains_get_property;
smb->mains.set_property = smb347_mains_set_property;
smb->mains.property_is_writeable = smb347_mains_property_is_writeable;
smb->mains.properties = smb347_mains_properties;
smb->mains.num_properties = ARRAY_SIZE(smb347_mains_properties);
smb->mains.supplied_to = battery;
smb->mains.num_supplicants = ARRAY_SIZE(battery);
smb->usb.name = "smb347-usb";
smb->usb.type = POWER_SUPPLY_TYPE_USB;
smb->usb.get_property = smb347_usb_get_property;
smb->usb.set_property = smb347_usb_set_property;
smb->usb.property_is_writeable = smb347_usb_property_is_writeable;
smb->usb.properties = smb347_usb_properties;
smb->usb.num_properties = ARRAY_SIZE(smb347_usb_properties);
smb->usb.supplied_to = battery;
smb->usb.num_supplicants = ARRAY_SIZE(battery);
smb->battery.name = "smb347-battery";
smb->battery.type = POWER_SUPPLY_TYPE_BATTERY;
smb->battery.get_property = smb347_battery_get_property;
smb->battery.set_property = smb347_battery_set_property;
smb->battery.property_is_writeable = smb347_battery_property_is_writeable;
smb->battery.properties = smb347_battery_properties;
smb->battery.num_properties = ARRAY_SIZE(smb347_battery_properties);
if (smb->pdata->supplied_to) {
smb->battery.supplied_to = smb->pdata->supplied_to;
smb->battery.num_supplicants = smb->pdata->num_supplicants;
smb->battery.external_power_changed = power_supply_changed;
}
ret = power_supply_register(dev, &smb->mains);
if (ret < 0)
return ret;
ret = power_supply_register(dev, &smb->usb);
if (ret < 0) {
power_supply_unregister(&smb->mains);
return ret;
}
ret = power_supply_register(dev, &smb->battery);
if (ret < 0) {
power_supply_unregister(&smb->usb);
power_supply_unregister(&smb->mains);
return ret;
}
/*
* Interrupt pin is optional. If it is connected, we setup the
* interrupt support here.
*/
if (pdata->irq_gpio >= 0) {
ret = smb347_irq_init(smb);
if (ret < 0) {
dev_warn(dev, "failed to initialize IRQ: %d\n", ret);
dev_warn(dev, "disabling IRQ support\n");
}
}
smb->dentry = debugfs_create_file("smb347-regs", S_IRUSR, NULL, smb,
&smb347_debugfs_fops);
return 0;
}
示例6: mt8193_hdmi_debug_init
void mt8193_hdmi_debug_init(void)
{
mt8193_hdmi_dbgfs = debugfs_create_file("8193",
S_IFREG | S_IRUGO, NULL, (void *)0,
&mt8193_hdmi_debug_fops);
}
示例7: diag_debugfs_init
int diag_debugfs_init(void)
{
struct dentry *entry = NULL;
diag_dbgfs_dent = debugfs_create_dir("diag", 0);
if (IS_ERR(diag_dbgfs_dent))
return -ENOMEM;
entry = debugfs_create_file("status", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_status_ops);
if (!entry)
goto err;
entry = debugfs_create_file("table", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_table_ops);
if (!entry)
goto err;
entry = debugfs_create_file("work_pending", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_workpending_ops);
if (!entry)
goto err;
entry = debugfs_create_file("mempool", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_mempool_ops);
if (!entry)
goto err;
entry = debugfs_create_file("usbinfo", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_usbinfo_ops);
if (!entry)
goto err;
entry = debugfs_create_file("dci_stats", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_dcistats_ops);
if (!entry)
goto err;
entry = debugfs_create_file("power", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_power_ops);
if (!entry)
goto err;
#ifdef CONFIG_DIAGFWD_BRIDGE_CODE
entry = debugfs_create_file("bridge", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_bridge_ops);
if (!entry)
goto err;
entry = debugfs_create_file("bridge_dci", 0444, diag_dbgfs_dent, 0,
&diag_dbgfs_bridge_dci_ops);
if (!entry)
goto err;
#endif
diag_dbgfs_table_index = 0;
diag_dbgfs_mempool_index = 0;
diag_dbgfs_usbinfo_index = 0;
diag_dbgfs_finished = 0;
diag_dbgfs_dci_data_index = 0;
diag_dbgfs_dci_finished = 0;
/* DCI related structures */
dci_traffic = kzalloc(sizeof(struct diag_dci_data_info) *
DIAG_DCI_DEBUG_CNT, GFP_KERNEL);
if (ZERO_OR_NULL_PTR(dci_traffic))
pr_warn("diag: could not allocate memory for dci debug info\n");
mutex_init(&dci_stat_mutex);
return 0;
err:
kfree(dci_traffic);
debugfs_remove_recursive(diag_dbgfs_dent);
return -ENOMEM;
}
示例8: kgsl_device_debugfs_init
void kgsl_device_debugfs_init(struct kgsl_device *device)
{
if (kgsl_debugfs_dir && !IS_ERR(kgsl_debugfs_dir))
device->d_debugfs = debugfs_create_dir(device->name,
kgsl_debugfs_dir);
if (!device->d_debugfs || IS_ERR(device->d_debugfs))
return;
device->cmd_log = KGSL_LOG_LEVEL_DEFAULT;
device->ctxt_log = KGSL_LOG_LEVEL_DEFAULT;
device->drv_log = KGSL_LOG_LEVEL_DEFAULT;
device->mem_log = KGSL_LOG_LEVEL_DEFAULT;
device->pwr_log = KGSL_LOG_LEVEL_DEFAULT;
device->ft_log = KGSL_LOG_LEVEL_DEFAULT;
debugfs_create_file("log_level_cmd", 0644, device->d_debugfs, device,
&cmd_log_fops);
debugfs_create_file("log_level_ctxt", 0644, device->d_debugfs, device,
&ctxt_log_fops);
debugfs_create_file("log_level_drv", 0644, device->d_debugfs, device,
&drv_log_fops);
debugfs_create_file("log_level_mem", 0644, device->d_debugfs, device,
&mem_log_fops);
debugfs_create_file("log_level_pwr", 0644, device->d_debugfs, device,
&pwr_log_fops);
debugfs_create_file("log_level_ft", 0644, device->d_debugfs, device,
&ft_log_fops);
#ifdef CONFIG_MSM_KGSL_GPU_USAGE
debugfs_create_file("contexpid_dump", 0644, device->d_debugfs, device,
&ctx_dump_fops);
#endif
pm_d_debugfs = debugfs_create_dir("postmortem", device->d_debugfs);
if (IS_ERR(pm_d_debugfs))
return;
debugfs_create_file("dump", 0600, pm_d_debugfs, device,
&pm_dump_fops);
debugfs_create_file("regs_enabled", 0644, pm_d_debugfs, device,
&pm_regs_enabled_fops);
debugfs_create_file("ib_enabled", 0644, pm_d_debugfs, device,
&pm_ib_enabled_fops);
device->pm_dump_enable = 0;
debugfs_create_file("enable", 0644, pm_d_debugfs, device,
&pm_enabled_fops);
}
示例9: ceph_debugfs_client_init
int ceph_debugfs_client_init(struct ceph_client *client)
{
int ret = -ENOMEM;
char name[80];
snprintf(name, sizeof(name), "%pU.client%lld", &client->fsid,
client->monc.auth->global_id);
dout("ceph_debugfs_client_init %p %s\n", client, name);
BUG_ON(client->debugfs_dir);
client->debugfs_dir = debugfs_create_dir(name, ceph_debugfs_dir);
if (!client->debugfs_dir)
goto out;
client->monc.debugfs_file = debugfs_create_file("monc",
0400,
client->debugfs_dir,
client,
&monc_show_fops);
if (!client->monc.debugfs_file)
goto out;
client->osdc.debugfs_file = debugfs_create_file("osdc",
0400,
client->debugfs_dir,
client,
&osdc_show_fops);
if (!client->osdc.debugfs_file)
goto out;
client->debugfs_monmap = debugfs_create_file("monmap",
0400,
client->debugfs_dir,
client,
&monmap_show_fops);
if (!client->debugfs_monmap)
goto out;
client->debugfs_osdmap = debugfs_create_file("osdmap",
0400,
client->debugfs_dir,
client,
&osdmap_show_fops);
if (!client->debugfs_osdmap)
goto out;
client->debugfs_options = debugfs_create_file("client_options",
0400,
client->debugfs_dir,
client,
&client_options_show_fops);
if (!client->debugfs_options)
goto out;
return 0;
out:
ceph_debugfs_client_cleanup(client);
return ret;
}
示例10: rcu_boost_trace_create_file
/*
* Create the rcuboost debugfs entry. Standard error return.
*/
static int rcu_boost_trace_create_file(struct dentry *rcudir)
{
return !debugfs_create_file("rcuboost", 0444, rcudir, NULL,
&rcu_node_boost_fops);
}
示例11: ufsdbg_add_debugfs
void ufsdbg_add_debugfs(struct ufs_hba *hba)
{
if (!hba) {
dev_err(hba->dev, "%s: NULL hba, exiting", __func__);
goto err_no_root;
}
hba->debugfs_files.debugfs_root = debugfs_create_dir("ufs", NULL);
if (IS_ERR(hba->debugfs_files.debugfs_root))
/* Don't complain -- debugfs just isn't enabled */
goto err_no_root;
if (!hba->debugfs_files.debugfs_root) {
/*
* Complain -- debugfs is enabled, but it failed to
* create the directory
*/
dev_err(hba->dev,
"%s: NULL debugfs root directory, exiting", __func__);
goto err_no_root;
}
hba->debugfs_files.tag_stats =
debugfs_create_file("tag_stats", S_IRUSR,
hba->debugfs_files.debugfs_root, hba,
&ufsdbg_tag_stats_fops);
if (!hba->debugfs_files.tag_stats) {
dev_err(hba->dev, "%s: NULL tag stats file, exiting",
__func__);
goto err;
}
if (ufshcd_init_tag_statistics(hba)) {
dev_err(hba->dev, "%s: Error initializing tag stats",
__func__);
goto err;
}
hba->debugfs_files.host_regs = debugfs_create_file("host_regs", S_IRUSR,
hba->debugfs_files.debugfs_root, hba,
&ufsdbg_host_regs_fops);
if (!hba->debugfs_files.host_regs) {
dev_err(hba->dev, "%s: NULL hcd regs file, exiting", __func__);
goto err;
}
hba->debugfs_files.show_hba = debugfs_create_file("show_hba", S_IRUSR,
hba->debugfs_files.debugfs_root, hba,
&ufsdbg_show_hba_fops);
if (!hba->debugfs_files.show_hba) {
dev_err(hba->dev, "%s: NULL hba file, exiting", __func__);
goto err;
}
hba->debugfs_files.dump_dev_desc =
debugfs_create_file("dump_device_desc", S_IRUSR,
hba->debugfs_files.debugfs_root, hba,
&ufsdbg_dump_device_desc);
if (!hba->debugfs_files.dump_dev_desc) {
dev_err(hba->dev,
"%s: NULL dump_device_desc file, exiting", __func__);
goto err;
}
ufsdbg_setup_fault_injection(hba);
return;
err:
debugfs_remove_recursive(hba->debugfs_files.debugfs_root);
hba->debugfs_files.debugfs_root = NULL;
err_no_root:
dev_err(hba->dev, "%s: failed to initialize debugfs\n", __func__);
}
示例12: ksb_init
static int __init ksb_init(void)
{
struct ks_bridge *ksb;
int num_instances = 0;
int ret = 0;
int i;
dbg_dir = debugfs_create_dir("ks_bridge", NULL);
if (IS_ERR(dbg_dir))
pr_err("unable to create debug dir");
for (i = 0; i < NO_BRIDGE_INSTANCES; i++) {
ksb = kzalloc(sizeof(struct ks_bridge), GFP_KERNEL);
if (!ksb) {
pr_err("unable to allocat mem for ks_bridge");
ret = -ENOMEM;
goto dev_free;
}
__ksb[i] = ksb;
ksb->name = kasprintf(GFP_KERNEL, "ks_bridge:%i", i + 1);
if (!ksb->name) {
pr_info("unable to allocate name");
kfree(ksb);
ret = -ENOMEM;
goto dev_free;
}
spin_lock_init(&ksb->lock);
INIT_LIST_HEAD(&ksb->to_mdm_list);
INIT_LIST_HEAD(&ksb->to_ks_list);
init_waitqueue_head(&ksb->ks_wait_q);
ksb->wq = create_singlethread_workqueue(ksb->name);
if (!ksb->wq) {
pr_err("unable to allocate workqueue");
kfree(ksb->name);
kfree(ksb);
ret = -ENOMEM;
goto dev_free;
}
INIT_WORK(&ksb->to_mdm_work, ksb_tomdm_work);
INIT_WORK(&ksb->start_rx_work, ksb_start_rx_work);
init_usb_anchor(&ksb->submitted);
ksb->dbg_idx = 0;
ksb->dbg_lock = __RW_LOCK_UNLOCKED(lck);
if (!IS_ERR(dbg_dir))
debugfs_create_file(ksb->name, S_IRUGO, dbg_dir,
ksb, &dbg_fops);
num_instances++;
}
ret = usb_register(&ksb_usb_driver);
if (ret) {
pr_err("unable to register ks bridge driver");
goto dev_free;
}
pr_info("init done");
return 0;
dev_free:
if (!IS_ERR(dbg_dir))
debugfs_remove_recursive(dbg_dir);
for (i = 0; i < num_instances; i++) {
ksb = __ksb[i];
destroy_workqueue(ksb->wq);
kfree(ksb->name);
kfree(ksb);
}
return ret;
}
示例13: wil6210_debugfs_init
/*----------------*/
int wil6210_debugfs_init(struct wil6210_priv *wil)
{
struct dentry *dbg = wil->debug = debugfs_create_dir(WIL_NAME,
wil_to_wiphy(wil)->debugfsdir);
if (IS_ERR_OR_NULL(dbg))
return -ENODEV;
debugfs_create_file("mbox", S_IRUGO, dbg, wil, &fops_mbox);
debugfs_create_file("vrings", S_IRUGO, dbg, wil, &fops_vring);
debugfs_create_file("txdesc", S_IRUGO, dbg, wil, &fops_txdesc);
debugfs_create_u32("txdesc_index", S_IRUGO | S_IWUSR, dbg,
&dbg_txdesc_index);
debugfs_create_file("bf", S_IRUGO, dbg, wil, &fops_bf);
debugfs_create_file("ssid", S_IRUGO | S_IWUSR, dbg, wil, &fops_ssid);
debugfs_create_u32("secure_pcp", S_IRUGO | S_IWUSR, dbg,
&wil->secure_pcp);
wil6210_debugfs_create_ISR(wil, "USER_ICR", dbg,
HOSTADDR(RGF_USER_USER_ICR));
wil6210_debugfs_create_ISR(wil, "DMA_EP_TX_ICR", dbg,
HOSTADDR(RGF_DMA_EP_TX_ICR));
wil6210_debugfs_create_ISR(wil, "DMA_EP_RX_ICR", dbg,
HOSTADDR(RGF_DMA_EP_RX_ICR));
wil6210_debugfs_create_ISR(wil, "DMA_EP_MISC_ICR", dbg,
HOSTADDR(RGF_DMA_EP_MISC_ICR));
wil6210_debugfs_create_pseudo_ISR(wil, dbg);
wil6210_debugfs_create_ITR_CNT(wil, dbg);
debugfs_create_u32("mem_addr", S_IRUGO | S_IWUSR, dbg, &mem_addr);
debugfs_create_file("mem_val", S_IRUGO, dbg, wil, &fops_memread);
debugfs_create_file("reset", S_IWUSR, dbg, wil, &fops_reset);
debugfs_create_file("temp", S_IRUGO, dbg, wil, &fops_temp);
wil->rgf_blob.data = (void * __force)wil->csr + 0;
wil->rgf_blob.size = 0xa000;
wil_debugfs_create_ioblob("blob_rgf", S_IRUGO, dbg, &wil->rgf_blob);
wil->fw_code_blob.data = (void * __force)wil->csr + 0x40000;
wil->fw_code_blob.size = 0x40000;
wil_debugfs_create_ioblob("blob_fw_code", S_IRUGO, dbg,
&wil->fw_code_blob);
wil->fw_data_blob.data = (void * __force)wil->csr + 0x80000;
wil->fw_data_blob.size = 0x8000;
wil_debugfs_create_ioblob("blob_fw_data", S_IRUGO, dbg,
&wil->fw_data_blob);
wil->fw_peri_blob.data = (void * __force)wil->csr + 0x88000;
wil->fw_peri_blob.size = 0x18000;
wil_debugfs_create_ioblob("blob_fw_peri", S_IRUGO, dbg,
&wil->fw_peri_blob);
wil->uc_code_blob.data = (void * __force)wil->csr + 0xa0000;
wil->uc_code_blob.size = 0x10000;
wil_debugfs_create_ioblob("blob_uc_code", S_IRUGO, dbg,
&wil->uc_code_blob);
wil->uc_data_blob.data = (void * __force)wil->csr + 0xb0000;
wil->uc_data_blob.size = 0x4000;
wil_debugfs_create_ioblob("blob_uc_data", S_IRUGO, dbg,
&wil->uc_data_blob);
return 0;
}
示例14: tegra_spdif_debug_add
static void tegra_spdif_debug_add(struct tegra_spdif *spdif)
{
spdif->debug = debugfs_create_file(DRV_NAME, S_IRUGO,
snd_soc_debugfs_root, spdif,
&tegra_spdif_debug_fops);
}
示例15: smb347_probe
static int smb347_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
static char *battery[] = { "smb347-battery" };
const struct smb347_charger_platform_data *pdata;
struct device *dev = &client->dev;
struct smb347_charger *smb;
int ret;
pdata = dev->platform_data;
if (!pdata)
return -EINVAL;
if (!pdata->use_mains && !pdata->use_usb)
return -EINVAL;
smb = devm_kzalloc(dev, sizeof(*smb), GFP_KERNEL);
if (!smb)
return -ENOMEM;
i2c_set_clientdata(client, smb);
mutex_init(&smb->lock);
smb->client = client;
smb->pdata = pdata;
ret = smb347_hw_init(smb);
if (ret < 0)
return ret;
smb->mains.name = "smb347-mains";
smb->mains.type = POWER_SUPPLY_TYPE_MAINS;
smb->mains.get_property = smb347_mains_get_property;
smb->mains.properties = smb347_mains_properties;
smb->mains.num_properties = ARRAY_SIZE(smb347_mains_properties);
smb->mains.supplied_to = battery;
smb->mains.num_supplicants = ARRAY_SIZE(battery);
smb->usb.name = "smb347-usb";
smb->usb.type = POWER_SUPPLY_TYPE_USB;
smb->usb.get_property = smb347_usb_get_property;
smb->usb.properties = smb347_usb_properties;
smb->usb.num_properties = ARRAY_SIZE(smb347_usb_properties);
smb->usb.supplied_to = battery;
smb->usb.num_supplicants = ARRAY_SIZE(battery);
smb->battery.name = "smb347-battery";
smb->battery.type = POWER_SUPPLY_TYPE_BATTERY;
smb->battery.get_property = smb347_battery_get_property;
smb->battery.properties = smb347_battery_properties;
smb->battery.num_properties = ARRAY_SIZE(smb347_battery_properties);
ret = power_supply_register(dev, &smb->mains);
if (ret < 0)
return ret;
ret = power_supply_register(dev, &smb->usb);
if (ret < 0) {
power_supply_unregister(&smb->mains);
return ret;
}
ret = power_supply_register(dev, &smb->battery);
if (ret < 0) {
power_supply_unregister(&smb->usb);
power_supply_unregister(&smb->mains);
return ret;
}
/*
* Interrupt pin is optional. If it is connected, we setup the
* interrupt support here.
*/
if (pdata->irq_gpio >= 0) {
ret = smb347_irq_init(smb);
if (ret < 0) {
dev_warn(dev, "failed to initialize IRQ: %d\n", ret);
dev_warn(dev, "disabling IRQ support\n");
}
}
smb->dentry = debugfs_create_file("smb347-regs", S_IRUSR, NULL, smb,
&smb347_debugfs_fops);
return 0;
}