diff options
| author | Yuval Adam <_@yuv.al> | 2017-08-30 08:25:59 +0000 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2017-08-30 08:25:59 +0000 |
| commit | 8e4bff4cab0ddac6060645b0715210484d02ff40 (patch) | |
| tree | 3a5c3024371a04692a3a6d9974d001cdff8ebf84 /include/linux/battery/charger/rt9455_charger.h | |
Diffstat (limited to 'include/linux/battery/charger/rt9455_charger.h')
| -rw-r--r-- | include/linux/battery/charger/rt9455_charger.h | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/include/linux/battery/charger/rt9455_charger.h b/include/linux/battery/charger/rt9455_charger.h new file mode 100644 index 00000000..c862fa99 --- /dev/null +++ b/include/linux/battery/charger/rt9455_charger.h @@ -0,0 +1,287 @@ +/* + * include/linux/battery/charger/rt9455_charger.h + * Include header file for Richtek RT9455 Switch Mode Charger IC + * + * Copyright (C) 2013 Richtek Electronics + * cy_huang <cy_huang@richtek.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __LINUX_BATTERY_CHARGER_RT9455_H + +#define SEC_CHARGER_I2C_SLAVEADDR (0x22) + +#define RT9455_DEVICE_NAME "RT9455" + +#define RT9455_RST_MASK 0x80 +#define RT9455_RST_SHIFT 7 + +#define RT9455_OPAMODE_MASK 0x01 +#define RT9455_OPAMODE_SHIFT 0 +enum { + OPA_CHARGER_MODE, + OPA_BOOST_MODE, +}; + +enum { + IAICR_EXTERNAL, + IAICR_INTERNAL, +}; + +enum { + OCP_2P5A, + OCP_3P5A, +}; + +enum { + SEL_FREQ_3MHz, + SEL_FREQ_1P5MHz, +}; + +#define RT9455_AICR_LIMIT_MASK 0xC0 +#define RT9455_AICR_LIMIT_SHIFT 6 +enum { + IAICR_LIMIT_100MA, + IAICR_LIMIT_500MA, + IAICR_LIMIT_1A, + IAICR_LIMIT_NO, + IAICR_LIMIT_MAX, +}; + +#define RT9455_VOREG_MASK 0xFC +#define RT9455_VOREG_SHIFT 2 + +enum { + OTGPL_ACTIVE_LOW, + OTGPL_ACTIVE_HIGH, +}; + +#define RT9455_IEOC_MASK 0x3 +#define RT9455_IEOC_SHIFT 0 +enum { + IEOC_10P, + IEOC_30P, + IEOC_20P, + IEOC_RESV, +}; + +enum { + IPREC_20MA, + IPREC_40MA, + IPREC_60MA, +}; + +enum { + VDPM_4V, + VDPM_4P25V, + VDPM_4P5V, + VDPM_DISABLE, +}; + +enum { + VPREC_2V, + VPREC_2P2V, + VPREC_2P4V, + VPREC_2P6V, + VPREC_2P8V, + VPREC_3V, +}; + + +#define RT9455_ICHRG_MASK 0x70 +#define RT9455_ICHRG_SHIFT 4 +enum { + ICHRG_20MV, + ICHRG_26MV, + ICHRG_32MV, + ICHRG_38MV, + ICHRG_44MV, + ICHRG_50MV, + ICHRG_56MV, + ICHRG_62MV, + ICHRG_MAX, +}; + +#define RT9455_CHGEN_MASK 0x10 +#define RT9455_CHGEN_SHIFT 4 + +#define RT9455_TEEN_MASK 0x80 +#define RT9455_TEEN_SHIFT 3 + +enum { + RT9455_REG_CTRL1, + RT9455_REG_CTRL2, + RT9455_REG_CTRL3, + RT9455_REG_DEVICE_ID, + RT9455_REG_CTRL4, + RT9455_REG_CTRL5, + RT9455_REG_CTRL6, + RT9455_REG_CTRL7, + RT9455_REG_IRQ1, + RT9455_REG_IRQ2, + RT9455_REG_IRQ3, + RT9455_REG_MASK1, + RT9455_REG_MASK2, + RT9455_REG_MASK3, + RT9455_REG_MAX, +}; + +// VBOOST EVENT BIT +#define RT9455_EVENT_BSTVINOVI 0x80 +#define RT9455_EVENT_BSTOLI 0x40 +#define RT9455_EVENT_BSTLOWVI 0x20 +#define RT9455_EVENT_BST32SI 0x08 + +// CHARGER EVENT BIT +#define RT9455_EVENT_CHRVPI 0x80 +#define RT9455_EVENT_CHBATOVI 0x20 +#define RT9455_EVENT_CHTERMI 0x10 +#define RT9455_EVENT_CHRCHGI 0x08 +#define RT9455_EVNET_CH32MI 0x04 +#define RT9455_EVENT_CHTREGI 0x02 +#define RT9455_EVENT_CHDPMI 0x01 + +// GENERAL EVENT BIT +#define RT9455_EVENT_TSDI 0x80 +#define RT9455_EVENT_VINOVPI 0x40 +#define RT9455_EVENT_BATAB 0x01 + +// RESET EVENT BIT +#define RT9455_EVENT_BEFORE_RST 0x80 +#define RT9455_EVENT_AFTER_RST 0x40 + +// If not set, no irq event will be masked +struct rt9455_irq_mask { + union { + struct { + unsigned char BATABM:1; + unsigned char Resv:5; + unsigned char VINOVPIM:1; + unsigned char TSDM:1; + }bitfield; + unsigned char val; + }mask1; + union { + struct { + unsigned char CHDPMIM:1; + unsigned char CHTREGIM:1; + unsigned char CH32MIM:1; + unsigned char CHRCHGIM:1; + unsigned char CHTERMIM:1; + unsigned char CHBATOVIM:1; + unsigned char Resv:1; + unsigned char CHRVPIM:1; + }bitfield; + unsigned char val; + }mask2; + union { + struct { + unsigned char Resv1:3; + unsigned char BST32SIM:1; + unsigned char Resv2:1; + unsigned char BSTLOWVIM:1; + unsigned char BSTOLIM:1; + unsigned char BSTVIMOVIM:1; + }bitfield; + unsigned char val; + }mask3; +}; + +struct rt9455_init_ctrlval { + union { + struct { + unsigned char OPA_MODE:1; + unsigned char HZ_BIT:1; + unsigned char IAICR_INT:1; + unsigned char TE:1; + unsigned char HIGH_OCP:1; + unsigned char SEL_SWFREQ:1; + unsigned char IAICR:2; + }bitfield; + unsigned char val; + }ctrl2; + union { + struct { + unsigned char OTG_EN:1; + unsigned char OTG_PL:1; + unsigned char VOREG:6; + }bitfield; + unsigned char val; + }ctrl3; + union { + struct { + unsigned char IEOC:2; + unsigned char IPREC:2; + unsigned char VDPM:2; + unsigned char Resv:1; + unsigned char TMR_EN:1; + }bitfield; + unsigned char val; + }ctrl5; + union { + struct { + unsigned char VPREC:3; + unsigned char Resv1:1; + unsigned char ICHRG:3; + unsigned char Resv2:1; + }bitfield; + unsigned char val; + }ctrl6; + union { + struct { + unsigned char VMREG:4; + unsigned char CHG_EN:1; + unsigned char Resv1:1; + unsigned char BATD_EN:1; + unsigned char Resv2:1; + }bitfield; + unsigned char val; + }ctrl7; +}; + +struct rt9455_callbacks { + void (*boost_callback)(int); + void (*charger_callback)(int); + void (*general_callback)(int); + void (*reset_callback)(int); +}; + +struct rt9455_chip_init_data { + struct rt9455_irq_mask irq_mask; + struct rt9455_init_ctrlval init_ctrlval; + struct rt9455_callbacks *callbacks; +}; + +#if 0 +struct rt9455_chip { + struct i2c_client *i2c; + struct device *dev; + struct workqueue_struct *wq; + struct rt9455_callbacks *cb; + int intr_gpio; + int irq; + int suspend; + int otg_ext_enable; + struct work_struct work; + struct mutex io_lock; +}; +#endif + +//external function for the customer +#if 0 +int rt9455_ext_force_otamode(int onoff); +int rt9455_ext_charger_current(int value); +int rt9455_ext_charger_switch(int onoff); +#endif + +#ifdef CONFIG_CHARGER_RT9455_DBG +#define RT_DBG(format, args...) \ + pr_info("%s:%s() line-%d: " format, RT9455_DEVICE_NAME, __FUNCTION__, __LINE__, ##args) +#else +#define RT_DBG(format, args...) +#endif /* CONFIG_CHARGER_RT9455_DBG */ + +#endif /* __LINUX_BATTERY_CHARGER_RT9455_H */ |
