예제 #1
0
static int __devinit 
vt1603_bat_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
{
    int ret = 0;
    struct vt1603_bat_drvdata *bat_drv = NULL;
    struct vt1603_bat_platform_data *bat_pdata;

    bat_dbg("Enter\n");
    bat_pdata = i2c->dev.platform_data;
    if (NULL == bat_pdata) {
        bat_dbg("vt1603_bat: platform data NULL\n");
        ret = -ENODATA;
        goto out;
    }
    bat_drv = kzalloc(sizeof(*bat_drv), GFP_KERNEL);
    if (!bat_drv) {
        bat_dbg("vt1603_bat: alloc driver data failed\n");
        ret = -ENOMEM;
        goto out;
    }
    vt1603_bat   = bat_drv;
    bat_drv->i2c = i2c;
    dev_set_drvdata(&i2c->dev, bat_drv);
    vt1603_reg_dump(bat_drv, 0xc0, 12);
#ifdef CONFIG_VT1603_BATTERY_ENABLE
    vt1603_bat_info_init(bat_drv);
    vt1603_bat_work(&bat_drv->work);
#endif
    printk(KERN_INFO "VT1603 SAR-ADC Battery Driver OK!\n");
    goto out;

out:
    bat_dbg("Exit\n");
    return ret;
}
예제 #2
0
static int __devinit vt1603_bat_probe(struct platform_device *pdev)
{
    int ret = 0;
    struct vt1603_bat_drvdata *bat_drv = vt1603_bat;

    dbg("Enter\n");		
    bat_drv->alarm_threshold  = 0xc0;
    bat_drv->wakeup_src = BA_WAKEUP_SRC_0;
    bat_drv->tdev = dev_get_platdata(&pdev->dev);
    dev_set_drvdata(&pdev->dev, bat_drv);
    
#ifdef VT1603_BATTERY_EN
    vt1603_bat_info_init(bat_drv);
   // vt1603_bat_work(&bat_drv->work);
#endif
    vt1603_reg_dump(bat_drv, 0xc0, 12);
    //printk("VT160X SAR-ADC Battery Driver Installed!\n");
    goto out;

out:
    dbg("Exit\n");
    return ret;
}