Currently power supply name is passed to get the battery profile in of_batterydata_get_best_profile(). This creates a dependency of waiting for the driver that has the power supply class device. Improve this by passing the battery id directly to the API. This way, getting battery id will be the responsibility of caller. CRs-Fixed: 1043798 Change-Id: I7a8c2b2fcc9b43e2e858114f7312fccf96dc3f78 Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
64 lines
2.6 KiB
C
64 lines
2.6 KiB
C
/* Copyright (c) 2013-2014, 2016 The Linux Foundation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#include <linux/of.h>
|
|
#include <linux/batterydata-lib.h>
|
|
|
|
#ifdef CONFIG_OF_BATTERYDATA
|
|
/**
|
|
* of_batterydata_read_data() - Populate battery data from the device tree
|
|
* @container_node: pointer to the battery-data container device node
|
|
* containing the profile nodes.
|
|
* @batt_data: pointer to an allocated bms_battery_data structure that the
|
|
* loaded profile will be written to.
|
|
* @batt_id_uv: ADC voltage of the battery id line used to differentiate
|
|
* between different battery profiles. If there are multiple
|
|
* battery data in the device tree, the one with the closest
|
|
* battery id resistance will be automatically loaded.
|
|
*
|
|
* This routine loads the closest match battery data from device tree based on
|
|
* the battery id reading. Then, it will try to load all the relevant data from
|
|
* the device tree battery data profile.
|
|
*
|
|
* If any of the lookup table pointers are NULL, this routine will skip trying
|
|
* to read them.
|
|
*/
|
|
int of_batterydata_read_data(struct device_node *container_node,
|
|
struct bms_battery_data *batt_data,
|
|
int batt_id_uv);
|
|
/**
|
|
* of_batterydata_get_best_profile() - Find matching battery data device node
|
|
* @batterydata_container_node: pointer to the battery-data container device
|
|
* node containing the profile nodes.
|
|
* @batt_id_kohm: Battery ID in KOhms for which we want to find the profile.
|
|
* @batt_type: Battery type which we want to force load the profile.
|
|
*
|
|
* This routine returns a device_node pointer to the closest match battery data
|
|
* from device tree based on the battery id reading.
|
|
*/
|
|
struct device_node *of_batterydata_get_best_profile(
|
|
struct device_node *batterydata_container_node,
|
|
int batt_id_kohm, const char *batt_type);
|
|
#else
|
|
static inline int of_batterydata_read_data(struct device_node *container_node,
|
|
struct bms_battery_data *batt_data,
|
|
int batt_id_uv)
|
|
{
|
|
return -ENXIO;
|
|
}
|
|
static inline struct device_node *of_batterydata_get_best_profile(
|
|
struct device_node *batterydata_container_node,
|
|
int batt_id_kohm, const char *batt_type)
|
|
{
|
|
return -ENXIO;
|
|
}
|
|
#endif /* CONFIG_OF_QPNP */
|