Ejemplo n.º 1
0
static int __init vt1603_bat_init(void)
{
    int ret = 0;
    struct vt1603_bat_drvdata *bat_drv = NULL;
	
    bat_drv = kzalloc(sizeof(*bat_drv), GFP_KERNEL);
    if (!bat_drv) {
        dbg_err("vt160x: alloc driver data failed\n");
        ret = -ENOMEM;
        goto out;
    }
    	
    ret = vt1603_bat_uboot_env_check(bat_drv);
    if (ret) {
        dbg_err("vt1603x uboot env check failed\n");
        goto out;                
    }

    vt1603_bat = bat_drv;
	
    ret = platform_driver_register(&vt1603_bat_driver);
    if(ret){
    	dbg_err("vt160x battery driver register failed!.\n");
    	goto out;
    }
	
    return 0;
	
out:
    kfree(bat_drv);	
    return ret;
}
Ejemplo n.º 2
0
static int __init vt1603_bat_i2c_init(void)
{
    int ret = 0;
    struct i2c_adapter *adapter = NULL;
    struct i2c_client *client   = NULL;
    struct i2c_board_info *vt1603_i2c_bi = NULL;

    bat_dbg("Enter\n");
    ret = vt1603_bat_uboot_env_check();
    if (ret) {
        bat_dbg("vt1603_bat uboot env check failed\n");
        goto out;                
    }

    vt1603_i2c_bi = &vt1603_bat_i2c_board_info;
    adapter = i2c_get_adapter(vt1603_bat_pdata.i2c_bus_id);
    if (NULL == adapter) {
        bat_dbg("can not get i2c adapter, client address error\n");
        ret = -ENODEV;
        goto out;
    }

    client = i2c_new_device(adapter, vt1603_i2c_bi);
    if (client == NULL) {
        bat_dbg("allocate i2c client failed\n");
        ret = -ENOMEM;
        goto out;
    }
    i2c_put_adapter(adapter);

    ret =  i2c_add_driver(&vt1603_bat_i2c_driver);
    if (ret) {
        bat_dbg("register vt1603 battery i2c driver failed\n");
        goto release_client;
    }
    bat_dbg("Exit\n");
    goto out;

release_client:
    i2c_unregister_device(client);
    client = NULL;
out:
    return ret;
}