2 * Copyright (C) 2011-2012 Samsung Electronics
3 * Lukasz Majewski <l.majewski@samsung.com>
5 * SPDX-License-Identifier: GPL-2.0+
12 #include <linux/list.h>
14 #include <power/power_chrg.h>
16 enum { PMIC_I2C
, PMIC_SPI
, PMIC_NONE
};
17 enum { I2C_PMIC
, I2C_NUM
, };
18 enum { PMIC_READ
, PMIC_WRITE
, };
19 enum { PMIC_SENSOR_BYTE_ORDER_LITTLE
, PMIC_SENSOR_BYTE_ORDER_BIG
, };
33 u32 (*prepare_tx
)(u32 reg
, u32
*val
, u32 write
);
38 int (*fg_battery_check
) (struct pmic
*p
, struct pmic
*bat
);
39 int (*fg_battery_update
) (struct pmic
*p
, struct pmic
*bat
);
43 int (*chrg_type
) (struct pmic
*p
);
44 int (*chrg_bat_present
) (struct pmic
*p
);
45 int (*chrg_state
) (struct pmic
*p
, int state
, int current
);
48 struct power_battery
{
50 int (*battery_init
) (struct pmic
*bat
, struct pmic
*p1
,
51 struct pmic
*p2
, struct pmic
*p3
);
52 int (*battery_charge
) (struct pmic
*bat
);
53 /* Keep info about power devices involved with battery operation */
54 struct pmic
*chrg
, *fg
, *muic
;
60 unsigned char interface
;
61 unsigned char sensor_byte_order
;
62 unsigned int number_of_regs
;
68 void (*low_power_mode
) (void);
69 struct power_battery
*pbat
;
70 struct power_chrg
*chrg
;
74 struct list_head list
;
77 int pmic_init(unsigned char bus
);
78 int pmic_dialog_init(unsigned char bus
);
79 int check_reg(struct pmic
*p
, u32 reg
);
80 struct pmic
*pmic_alloc(void);
81 struct pmic
*pmic_get(const char *s
);
82 int pmic_probe(struct pmic
*p
);
83 int pmic_reg_read(struct pmic
*p
, u32 reg
, u32
*val
);
84 int pmic_reg_write(struct pmic
*p
, u32 reg
, u32 val
);
85 int pmic_set_output(struct pmic
*p
, u32 reg
, int ldo
, int on
);
87 #define pmic_i2c_addr (p->hw.i2c.addr)
88 #define pmic_i2c_tx_num (p->hw.i2c.tx_num)
90 #define pmic_spi_bitlen (p->hw.spi.bitlen)
91 #define pmic_spi_flags (p->hw.spi.flags)
93 #endif /* __CORE_PMIC_H_ */