From: 许盛飞 Date: Wed, 14 Mar 2012 02:40:02 +0000 (+0800) Subject: modify the bug of adc_charge X-Git-Tag: firefly_0821_release~9600^2~8 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=fa673b3f3d96a5f24d3fbb4ab700b74705d5e666;p=firefly-linux-kernel-4.4.55.git modify the bug of adc_charge --- diff --git a/drivers/power/rk29_adc_battery.c b/drivers/power/rk29_adc_battery.c index 26ec079b6e5f..f4abd3ccd160 100755 --- a/drivers/power/rk29_adc_battery.c +++ b/drivers/power/rk29_adc_battery.c @@ -1096,39 +1096,6 @@ static int rk29_adc_battery_probe(struct platform_device *pdev) //variable init data->client = client; data->adc_val = adc_sync_read(client); - - //init a timer for adc sample - //init a delay work for adc timer work - setup_timer(&data->timer, rk29_adc_battery_scan_timer, (unsigned long)data); - data->timer.expires = jiffies + 2000; - add_timer(&data->timer); - - INIT_WORK(&data->timer_work, rk29_adc_battery_timer_work); - INIT_WORK(&data->resume_work, rk29_adc_battery_resume_check); - -#if defined(CONFIG_BATTERY_RK29_AC_CHARGE) - //init dc dectet irq & delay work - if (pdata->dc_det_pin != INVALID_GPIO) - { - irq = gpio_to_irq(pdata->dc_det_pin); - - irq_flag = gpio_get_value (pdata->dc_det_pin) ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING; - ret = request_irq(irq, rk29_adc_battery_dc_wakeup, irq_flag, "rk29_adc_battery", NULL); - if (ret) { - printk("failed to request dc det irq\n"); - goto err_dcirq_failed; - } - enable_irq_wake(irq); - - INIT_WORK(&data->dcwakeup_work, rk29_adc_battery_dcdet_delaywork); - } -#endif - - //Power on Battery detect - rk29_adc_battery_lowpower_check(data); - - //power supply register - wake_lock_init(&batt_wake_lock, WAKE_LOCK_SUSPEND, "batt_lock"); ret = power_supply_register(&pdev->dev, &rk29_battery_supply); if (ret) @@ -1137,14 +1104,6 @@ static int rk29_adc_battery_probe(struct platform_device *pdev) goto err_battery_failed; } -#if defined(CONFIG_BATTERY_RK29_AC_CHARGE) - ret = power_supply_register(&pdev->dev, &rk29_ac_supply); - if (ret) - { - printk(KERN_INFO "fail to ac power_supply_register\n"); - goto err_ac_failed; - } -#endif #if defined(CONFIG_BATTERY_RK29_USB_CHARGE) ret = power_supply_register(&pdev->dev, &rk29_usb_supply); @@ -1154,7 +1113,47 @@ static int rk29_adc_battery_probe(struct platform_device *pdev) goto err_usb_failed; } #endif - + + INIT_WORK(&data->timer_work, rk29_adc_battery_timer_work); + INIT_WORK(&data->resume_work, rk29_adc_battery_resume_check); + + //init a timer for adc sample + //init a delay work for adc timer work + setup_timer(&data->timer, rk29_adc_battery_scan_timer, (unsigned long)data); + data->timer.expires = jiffies + 2000; + add_timer(&data->timer); + + + wake_lock_init(&batt_wake_lock, WAKE_LOCK_SUSPEND, "batt_lock"); + +#if defined(CONFIG_BATTERY_RK29_AC_CHARGE) + + ret = power_supply_register(&pdev->dev, &rk29_ac_supply); + if (ret) { + printk(KERN_INFO "fail to ac power_supply_register\n"); + goto err_ac_failed; + } + //init dc dectet irq & delay work + if (pdata->dc_det_pin != INVALID_GPIO) + { + INIT_WORK(&data->dcwakeup_work, rk29_adc_battery_dcdet_delaywork); + irq = gpio_to_irq(pdata->dc_det_pin); + + irq_flag = gpio_get_value (pdata->dc_det_pin) ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING; + ret = request_irq(irq, rk29_adc_battery_dc_wakeup, irq_flag, "rk29_adc_battery", NULL); + if (ret) { + printk("failed to request dc det irq\n"); + goto err_dcirq_failed; + } + enable_irq_wake(irq); + + } +#endif + + //Power on Battery detect + rk29_adc_battery_lowpower_check(data); + + printk(KERN_INFO "rk29_adc_battery: driver initialized\n"); return 0;