Beispiel #1
0
static void bq27541_hw_config(struct work_struct *work)
{
	int ret = 0, flags = 0, type = 0, fw_ver = 0;
	struct bq27541_device_info *di;

	di  = container_of(work, struct bq27541_device_info, hw_config.work);
	ret = bq27541_chip_config(di);
	if (ret) {
		dev_err(di->dev, "Failed to config Bq27541\n");
		return;
	}
	msm_battery_gauge_register(&bq27541_batt_gauge);

	bq27541_cntl_cmd(di, BQ27541_SUBCMD_CTNL_STATUS);
	udelay(66);
	bq27541_read(BQ27541_REG_CNTL, &flags, 0, di);
	bq27541_cntl_cmd(di, BQ27541_SUBCMD_DEVCIE_TYPE);
	udelay(66);
	bq27541_read(BQ27541_REG_CNTL, &type, 0, di);
	bq27541_cntl_cmd(di, BQ27541_SUBCMD_FW_VER);
	udelay(66);
	bq27541_read(BQ27541_REG_CNTL, &fw_ver, 0, di);

	dev_info(di->dev, "DEVICE_TYPE is 0x%02X, FIRMWARE_VERSION is 0x%02X\n",
			type, fw_ver);
	dev_info(di->dev, "Complete bq27541 configuration 0x%02X\n", flags);
}
static void bq27541_hw_config(struct work_struct *work)
{
    int ret = 0, flags = 0, type = 0, fw_ver = 0;
    struct bq27541_device_info *di;

    di  = container_of(work, struct bq27541_device_info, hw_config.work);
    ret = bq27541_chip_config(di);
    if (ret) {
        dev_err(di->dev, "Failed to config Bq27541\n");
#ifdef CONFIG_MACH_OPPO
        di->retry_count--;
        if (di->retry_count > 0) {
            schedule_delayed_work(&di->hw_config, HZ);
        }
#endif
        return;
    }
#ifdef CONFIG_MACH_OPPO
    qpnp_battery_gauge_register(&bq27541_batt_gauge);
#else
    msm_battery_gauge_register(&bq27541_batt_gauge);
#endif

    bq27541_cntl_cmd(di, BQ27541_SUBCMD_CTNL_STATUS);
    udelay(66);
    bq27541_read(BQ27541_REG_CNTL, &flags, 0, di);
    bq27541_cntl_cmd(di, BQ27541_SUBCMD_DEVCIE_TYPE);
    udelay(66);
    bq27541_read(BQ27541_REG_CNTL, &type, 0, di);
    bq27541_cntl_cmd(di, BQ27541_SUBCMD_FW_VER);
    udelay(66);
    bq27541_read(BQ27541_REG_CNTL, &fw_ver, 0, di);

#ifdef CONFIG_MACH_OPPO
    di->is_authenticated = bq27541_authenticate(di->client);
    di->battery_type = bq27541_batt_type_detect(di->client);
#endif

    dev_info(di->dev, "DEVICE_TYPE is 0x%02X, FIRMWARE_VERSION is 0x%02X\n",
             type, fw_ver);
    dev_info(di->dev, "Complete bq27541 configuration 0x%02X\n", flags);
}