*
*/
+#include <linux/power/bq25700-charge.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/mfd/core.h>
} bq25700_tables[] = {
/* range tables */
[TBL_ICHG] = { .rt = {0, 8128000, 64000} },
- /* uA */
+ /* uV */
[TBL_CHGMAX] = { .rt = {0, 19200000, 16000} },
/* uV max charge voltage*/
[TBL_INPUTVOL] = { .rt = {3200000, 19520000, 64000} },
.val_format_endian = REGMAP_ENDIAN_LITTLE,
};
+static struct bq25700_device *bq25700_charger;
+
static int bq25700_field_read(struct bq25700_device *charger,
enum bq25700_fields field_id)
{
return idx - 1;
}
+void bq25700_charger_set_current(unsigned long event,
+ int current_value)
+{
+ int idx;
+
+ if (!bq25700_charger) {
+ pr_err("[%s,%d] bq25700_charger is null\n", __func__, __LINE__);
+ return;
+ }
+ switch (event) {
+ case CHARGER_CURRENT_EVENT:
+ idx = bq25700_find_idx(current_value, TBL_ICHG);
+ bq25700_field_write(bq25700_charger, CHARGE_CURRENT, idx);
+ break;
+
+ case INPUT_CURRENT_EVENT:
+ idx = bq25700_find_idx(current_value, TBL_INPUTCUR);
+ bq25700_field_write(bq25700_charger, INPUT_CURRENT, idx);
+ break;
+
+ default:
+ return;
+ }
+}
+
static int bq25700_fw_read_u32_props(struct bq25700_device *charger)
{
int ret;
goto irq_fail;
bq25700_power_supply_init(charger);
+ bq25700_charger = charger;
irq_fail:
return ret;
--- /dev/null
+/*
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * 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.
+ */
+
+#ifndef __CHARGER_BQ25700_H_
+#define __CHARGER_BQ25700_H_
+
+#define CHARGER_CURRENT_EVENT 0x01
+#define INPUT_CURRENT_EVENT 0x02
+
+void bq25700_charger_set_current(unsigned long event, int current_value);
+
+#endif /* __CHARGER_BQ25700_H_ */