mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-09-08 09:08:05 -04:00
135 lines
3.8 KiB
C
135 lines
3.8 KiB
C
/*
|
|
* p9015_charger.h
|
|
* Samsung P9015 Charger Header
|
|
*
|
|
* Copyright (C) 2014 Samsung Electronics, Inc.
|
|
* Yeongmi Ha <yeongmi86.ha@samsung.com>
|
|
*
|
|
* 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 __BQ51221_CHARGER_H
|
|
#define __BQ51221_CHARGER_H __FILE__
|
|
|
|
#include <linux/mfd/core.h>
|
|
#include <linux/regulator/machine.h>
|
|
#include <linux/i2c.h>
|
|
#include <linux/battery/sec_charging_common.h>
|
|
#include <linux/wakelock.h>
|
|
|
|
/* REGISTER MAPS */
|
|
#define BQ51221_REG_CURRENT_REGISTER 0X01
|
|
#define BQ51221_REG_CURRENT_REGISTER2 0X02
|
|
#define BQ51221_REG_MAILBOX 0XE0
|
|
#define BQ51221_REG_POD_RAM 0XE1
|
|
#define BQ51221_REG_USER_HEADER 0XE2
|
|
#define BQ51221_REG_VRECT_STATUS 0XE3
|
|
#define BQ51221_REG_VOUT_STATUS 0XE4
|
|
#define BQ51221_REG_PWR_BYTE_STATUS 0XE8
|
|
#define BQ51221_REG_INDICATOR 0XEF
|
|
#define BQ51221_REG_PROP_PACKET_PAYLOAD 0XF1
|
|
|
|
/* WPC HEADER */
|
|
#define BQ51221_EPT_HEADER_EPT 0x02
|
|
#define BQ51221_EPT_HEADER_CS100 0x05
|
|
|
|
/* END POWER TRANSFER CODES IN WPC */
|
|
#define BQ51221_EPT_CODE_UNKOWN 0x00
|
|
#define BQ51221_EPT_CODE_CHARGE_COMPLETE 0x01
|
|
#define BQ51221_EPT_CODE_INTERNAL_FAULT 0x02
|
|
#define BQ51221_EPT_CODE_OVER_TEMPERATURE 0x03
|
|
#define BQ51221_EPT_CODE_OVER_VOLTAGE 0x04
|
|
#define BQ51221_EPT_CODE_OVER_CURRENT 0x05
|
|
#define BQ51221_EPT_CODE_BATTERY_FAILURE 0x06
|
|
#define BQ51221_EPT_CODE_RECONFIGURE 0x07
|
|
#define BQ51221_EPT_CODE_NO_RESPONSE 0x08
|
|
|
|
#define BQ51221_POWER_MODE_MASK (0x1 << 0)
|
|
#define BQ51221_SEND_USER_PKT_DONE_MASK (0x1 << 7)
|
|
#define BQ51221_SEND_USER_PKT_ERR_MASK (0x3 << 5)
|
|
#define BQ51221_SEND_ALIGN_MASK (0x1 << 3)
|
|
#define BQ51221_SEND_EPT_CC_MASK (0x1 << 0)
|
|
#define BQ51221_SEND_EOC_MASK (0x1 << 0)
|
|
|
|
#define BQ51221_CS100_VALUE 0x64
|
|
#define BQ51221_IOREG_100_VALUE 0x07
|
|
#define BQ51221_IOREG_90_VALUE 0x06
|
|
#define BQ51221_IOREG_60_VALUE 0x05
|
|
#define BQ51221_IOREG_50_VALUE 0x04
|
|
#define BQ51221_IOREG_40_VALUE 0x03
|
|
#define BQ51221_IOREG_30_VALUE 0x02
|
|
#define BQ51221_IOREG_20_VALUE 0x01
|
|
#define BQ51221_IOREG_10_VALUE 0x00
|
|
|
|
#define BQ51221_PTK_ERR_NO_ERR 0x00
|
|
#define BQ51221_PTK_ERR_ERR 0x01
|
|
#define BQ51221_PTK_ERR_ILLEGAL_HD 0x02
|
|
#define BQ51221_PTK_ERR_NO_DEF 0x03
|
|
|
|
enum {
|
|
END_POWER_TRANSFER_CODE_UNKOWN = 0,
|
|
END_POWER_TRANSFER_CODE_CHARGECOMPLETE,
|
|
END_POWER_TRANSFER_CODE_INTERNAL_FAULT,
|
|
END_POWER_TRANSFER_CODE_OVER_TEMPERATURE,
|
|
END_POWER_TRANSFER_CODE_OVER_VOLTAGE,
|
|
END_POWER_TRANSFER_CODE_OVER_CURRENT,
|
|
END_POWER_TRANSFER_CODE_BATTERY_FAILURE,
|
|
END_POWER_TRANSFER_CODE_RECONFIGURE,
|
|
END_POWER_TRANSFER_CODE_NO_RESPONSE,
|
|
};
|
|
|
|
struct bq51221_charger_platform_data {
|
|
int irq_gpio;
|
|
int irq_base;
|
|
int tsb_gpio;
|
|
int cs100_status;
|
|
int pad_mode;
|
|
int wireless_cc_cv;
|
|
int siop_level;
|
|
bool default_voreg;
|
|
char *wireless_charger_name;
|
|
};
|
|
|
|
#define bq51221_charger_platform_data_t \
|
|
struct bq51221_charger_platform_data
|
|
|
|
struct bq51221_charger_data {
|
|
struct i2c_client *client;
|
|
struct device *dev;
|
|
bq51221_charger_platform_data_t *pdata;
|
|
struct mutex io_lock;
|
|
|
|
struct power_supply psy_chg;
|
|
struct wake_lock wpc_wake_lock;
|
|
struct workqueue_struct *wqueue;
|
|
struct work_struct chgin_work;
|
|
struct delayed_work wpc_work;
|
|
struct delayed_work isr_work;
|
|
|
|
int chg_irq;
|
|
int irq_base;
|
|
int irq_gpio;
|
|
|
|
int wpc_state;
|
|
};
|
|
|
|
enum {
|
|
BQ51221_EVENT_IRQ = 0,
|
|
BQ51221_IRQS_NR,
|
|
};
|
|
|
|
enum {
|
|
BQ51221_PAD_MODE_NONE = 0,
|
|
BQ51221_PAD_MODE_WPC,
|
|
BQ51221_PAD_MODE_PMA,
|
|
};
|
|
|
|
#endif /* __BQ51221_CHARGER_H */
|