static int __devinit pm8058_charger_probe(struct platform_device *pdev) { struct pm8058_chip *pm_chip; pm_chip = platform_get_drvdata(pdev); if (pm_chip == NULL) { pr_err("%s:no parent data passed in.\n", __func__); return -EFAULT; } pm8058_chg.pm_chip = pm_chip; pm8058_chg.pdata = pdev->dev.platform_data; pm8058_chg.dev = &pdev->dev; if (request_irqs(pdev)) { pr_err("%s: couldnt register interrupts\n", __func__); return -EINVAL; } if (pm8058_usb_voltage_lower_limit()) { pr_err("%s: couldnt write to IGNORE_LL\n", __func__); return -EINVAL; } return 0; }
ssize_t dev_open(struct inode *inode,struct file *filp) { int ret = nonseekable_open(inode,filp); if(ret < 0) { return ret; } init_gpio(); ret = request_irqs(); if(ret < 0) { return ret; } init_devbuffer(); return ret; }
static int __init sbc2410_buttons_init(void) { int ret; ready = 0; ret = register_chrdev(BUTTON_MAJOR, DEVICE_NAME, &sbc2410_buttons_fops); if (ret < 0) { printk(DEVICE_NAME " can't register major number\n"); return ret; } ret = request_irqs(); if (ret) { unregister_chrdev(BUTTON_MAJOR, DEVICE_NAME); printk(DEVICE_NAME " can't request irqs\n"); return ret; } devfs_handle = devfs_register(NULL, DEVICE_NAME, DEVFS_FL_DEFAULT, BUTTON_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR, &sbc2410_buttons_fops, NULL); return 0; }
static int __devinit pm8058_charger_probe(struct platform_device *pdev) { int ret; struct pm8058_charger_platform_data *pdata; struct msm_hardware_charger *pchg; pdata = pdev->dev.platform_data; if(!pdata) { pr_err("%s: no platform_data passed in. \n", __func__); return -EFAULT; } pchg = kzalloc(sizeof *pchg, GFP_KERNEL); if (pchg == NULL) { pr_err("%s kzalloc failed\n", __func__); return -ENOMEM; } pchg->chg_detection_config = pdata->chg_detection_config; pchg->get_charger_status = pdata->get_charger_status; pchg->pdev = pdev; pchg->gpio_num = pdata->gpio_num; pchg->rating = pdata->rating; pchg->charger.name = pdata->name; if(pdata->rating == 2) { pchg->charger.type = POWER_SUPPLY_TYPE_MAINS; } else if(pdata->rating == 1) { pchg->charger.type = POWER_SUPPLY_TYPE_USB; } else { goto error_type; } pchg->charger.supplied_to = msm_power_supplied_to; pchg->charger.num_supplicants = ARRAY_SIZE(msm_power_supplied_to); pchg->charger.properties = msm_power_props; pchg->charger.num_properties = ARRAY_SIZE(msm_power_props); pchg->charger.get_property = charger_get_property_s7pro; // //#ifdef CONFIG_HAS_EARLYSUSPEND // pchg->early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN + 1; // pchg->early_suspend.suspend = s7pro_charger_early_suspend; // pchg->early_suspend.resume = s7pro_charger_late_resume; // register_early_suspend(&pchg->early_suspend); //#endif // dev_set_drvdata(&pdev->dev, pchg); if(pchg->chg_detection_config(1, pchg->gpio_num)) { pr_err("%s, init config fail. \n", __func__); goto error_type; } ret = request_irqs(pchg); if (ret) { pr_err("%s: couldnt register interrupts\n", __func__); goto error_type; } ret = msm_charger_register(pchg); if(ret) { pr_err("%s register charger failed ret=%d\n", __func__, ret); goto register_fail; } /* determine what state the charger is in */ pm8058_chg_determine_initial_state(pchg); return 0; register_fail: free_irqs(pchg); error_type: kfree(pchg); return -EFAULT; }