/*
 * sec_battery_sysfs.h
 * Samsung Mobile Battery Header
 *
 *
 * Copyright (C) 2018 Samsung Electronics, Inc.
 *
 *
 * 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 __SEC_BATTERY_SYSFS_H
#define __SEC_BATTERY_SYSFS_H __FILE__

ssize_t sec_bat_show_attrs(struct device *dev,
				struct device_attribute *attr, char *buf);

ssize_t sec_bat_store_attrs(struct device *dev,
				struct device_attribute *attr,
				const char *buf, size_t count);

int sec_bat_create_attrs(struct device *dev);

#define SEC_BATTERY_ATTR(_name)						\
{									\
	.attr = {.name = #_name, .mode = 0664},	\
	.show = sec_bat_show_attrs,					\
	.store = sec_bat_store_attrs,					\
}

enum sec_bat_attrs {
	BATT_RESET_SOC = 0,
	BATT_READ_RAW_SOC,
	BATT_READ_ADJ_SOC,
	BATT_TYPE,
	BATT_VFOCV,
	BATT_VOL_ADC,
	BATT_VOL_ADC_CAL,
	BATT_VOL_AVER,
	BATT_VOL_ADC_AVER,
	BATT_VOLTAGE_NOW,
	BATT_CURRENT_UA_NOW,
	BATT_CURRENT_UA_AVG,
	BATT_FILTER_CFG,
	BATT_TEMP,
	BATT_TEMP_RAW,
	BATT_TEMP_ADC,
	BATT_TEMP_AVER,
	BATT_TEMP_ADC_AVER,
	USB_TEMP,
	USB_TEMP_ADC,
	BATT_CHG_TEMP,
	BATT_CHG_TEMP_ADC,
	SUB_BAT_TEMP,
	SUB_BAT_TEMP_ADC,
	SUB_CHG_TEMP,
	SUB_CHG_TEMP_ADC,
#if IS_ENABLED(CONFIG_DIRECT_CHARGING)
	DCHG_ADC_MODE_CTRL,
	DCHG_TEMP,
	DCHG_TEMP_ADC,
	DCHG_READ_BATP_BATN,
#endif
	BLKT_TEMP,
	BLKT_TEMP_ADC,
	BATT_VF_ADC,
	BATT_SLATE_MODE,

	BATT_LP_CHARGING,
	SIOP_ACTIVATED,
	SIOP_LEVEL,
	SIOP_EVENT,
	BATT_CHARGING_SOURCE,
	FG_REG_DUMP,
	FG_RESET_CAP,
	FG_CAPACITY,
	FG_ASOC,
	AUTH,
	CHG_CURRENT_ADC,
	WC_ADC,
	WC_STATUS,
	WC_ENABLE,
	WC_CONTROL,
	WC_CONTROL_CNT,
	LED_COVER,
	HV_CHARGER_STATUS,
	HV_WC_CHARGER_STATUS,
	HV_CHARGER_SET,
	FACTORY_MODE,
	STORE_MODE,
	UPDATE,
	TEST_MODE,

	BATT_EVENT_CALL,
	BATT_EVENT_2G_CALL,
	BATT_EVENT_TALK_GSM,
	BATT_EVENT_3G_CALL,
	BATT_EVENT_TALK_WCDMA,
	BATT_EVENT_MUSIC,
	BATT_EVENT_VIDEO,
	BATT_EVENT_BROWSER,
	BATT_EVENT_HOTSPOT,
	BATT_EVENT_CAMERA,
	BATT_EVENT_CAMCORDER,
	BATT_EVENT_DATA_CALL,
	BATT_EVENT_WIFI,
	BATT_EVENT_WIBRO,
	BATT_EVENT_LTE,
	BATT_EVENT_LCD,
#if defined(CONFIG_ISDB_CHARGING_CONTROL)
	BATT_EVENT_ISDB,
#endif
	BATT_EVENT_GPS,
	BATT_EVENT,
	BATT_TEMP_TABLE,
	BATT_HIGH_CURRENT_USB,
#if defined(CONFIG_ENG_BATTERY_CONCEPT)
	TEST_CHARGE_CURRENT,
#if defined(CONFIG_STEP_CHARGING)
	TEST_STEP_CONDITION,
#endif
#endif
	SET_STABILITY_TEST,
	BATT_CAPACITY_MAX,
	BATT_REPCAP_1ST,
	BATT_INBAT_VOLTAGE,
	BATT_INBAT_VOLTAGE_OCV,
	BATT_INBAT_VOLTAGE_ADC,
	BATT_VBYP_VOLTAGE,
	CHECK_SUB_CHG,
	BATT_INBAT_WIRELESS_CS100,
	HMT_TA_CONNECTED,
	HMT_TA_CHARGE,
#if defined(CONFIG_SEC_FACTORY)
	AFC_TEST_FG_MODE,
	NOZX_CTRL,
#endif
	FG_CYCLE,
	FG_FULL_VOLTAGE,
	FG_FULLCAPNOM,
	BATTERY_CYCLE,
#if defined(CONFIG_BATTERY_AGE_FORECAST_DETACHABLE)
	BATT_AFTER_MANUFACTURED,
#endif
	BATTERY_CYCLE_TEST,
	BATT_WPC_TEMP,
	BATT_WPC_TEMP_ADC,
	BATT_WIRELESS_MST_SWITCH_TEST,
#if defined(CONFIG_WIRELESS_FIRMWARE_UPDATE)
	BATT_WIRELESS_FIRMWARE_UPDATE,
	OTP_FIRMWARE_RESULT,
	WC_IC_GRADE,
	WC_IC_CHIP_ID,
	OTP_FIRMWARE_VER_BIN,
	OTP_FIRMWARE_VER,
#endif
	WC_PHM_CTRL,
	WC_VOUT,
	WC_VRECT,
	WC_TX_EN,
	WC_TX_VOUT,
	BATT_HV_WIRELESS_STATUS,
	BATT_HV_WIRELESS_PAD_CTRL,
	WC_TX_ID,
	WC_OP_FREQ,
	WC_CMD_INFO,
	WC_RX_CONNECTED,
	WC_RX_CONNECTED_DEV,
	WC_TX_MFC_VIN_FROM_UNO,
	WC_TX_MFC_IIN_FROM_UNO,
#if defined(CONFIG_WIRELESS_TX_MODE)
	WC_TX_AVG_CURR,
	WC_TX_TOTAL_PWR,
#endif
	WC_TX_STOP_CAPACITY,
	WC_TX_TIMER_EN,
#if defined(CONFIG_ENG_BATTERY_CONCEPT)
	BATT_TUNE_FLOAT_VOLTAGE,
	BATT_TUNE_INPUT_CHARGE_CURRENT,
	BATT_TUNE_FAST_CHARGE_CURRENT,
	BATT_TUNE_WIRELESS_VOUT_CURRENT,
	BATT_TUNE_UI_TERM_CURRENT_1ST,
	BATT_TUNE_UI_TERM_CURRENT_2ND,
	BATT_TUNE_TEMP_HIGH_NORMAL,
	BATT_TUNE_TEMP_HIGH_REC_NORMAL,
	BATT_TUNE_TEMP_LOW_NORMAL,
	BATT_TUNE_TEMP_LOW_REC_NORMAL,
	BATT_TUNE_CHG_TEMP_HIGH,
	BATT_TUNE_CHG_TEMP_REC,
	BATT_TUNE_CHG_LIMIT_CUR,
	BATT_TUNE_LRP_TEMP_HIGH_LCDON,
	BATT_TUNE_LRP_TEMP_HIGH_LCDOFF,
	BATT_TUNE_COIL_TEMP_HIGH,
	BATT_TUNE_COIL_TEMP_REC,
	BATT_TUNE_COIL_LIMIT_CUR,
	BATT_TUNE_WPC_TEMP_HIGH,
	BATT_TUNE_WPC_TEMP_HIGH_REC,
	BATT_TUNE_DCHG_TEMP_HIGH,
	BATT_TUNE_DCHG_TEMP_HIGH_REC,
	BATT_TUNE_DCHG_BATT_TEMP_HIGH,
	BATT_TUNE_DCHG_BATT_TEMP_HIGH_REC,
	BATT_TUNE_DCHG_LIMIT_INPUT_CUR,
	BATT_TUNE_DCHG_LIMIT_CHG_CUR,
#if defined(CONFIG_WIRELESS_TX_MODE)
	BATT_TUNE_TX_MFC_IOUT_GEAR,
	BATT_TUNE_TX_MFC_IOUT_PHONE,
#endif
#endif
#if defined(CONFIG_UPDATE_BATTERY_DATA)
	BATT_UPDATE_DATA,
#endif
	BATT_MISC_EVENT,
	BATT_TX_EVENT,
	BATT_EXT_DEV_CHG,
	BATT_WDT_CONTROL,
	MODE,
	CHECK_PS_READY,
	BATT_CHIP_ID,
	ERROR_CAUSE,
	CISD_FULLCAPREP_MAX,
	CISD_DATA,
	CISD_DATA_JSON,
	CISD_DATA_D_JSON,
	CISD_WIRE_COUNT,
	CISD_WC_DATA,
	CISD_WC_DATA_JSON,
	CISD_POWER_DATA,
	CISD_POWER_DATA_JSON,
	CISD_PD_DATA,
	CISD_PD_DATA_JSON,
	CISD_CABLE_DATA,
	CISD_CABLE_DATA_JSON,
	CISD_TX_DATA,
	CISD_TX_DATA_JSON,
	CISD_EVENT_DATA,
	CISD_EVENT_DATA_JSON,
	PREV_BATTERY_DATA,
	PREV_BATTERY_INFO,
	SAFETY_TIMER_SET,
	BATT_SWELLING_CONTROL,
	BATT_BATTERY_ID,
#if IS_ENABLED(CONFIG_DUAL_BATTERY)
	BATT_SUB_BATTERY_ID,
#endif
	BATT_TEMP_CONTROL_TEST,
	SAFETY_TIMER_INFO,
	BATT_SHIPMODE_TEST,
	BATT_MISC_TEST,
	BATT_TEMP_TEST,
	BATT_CURRENT_EVENT,
	BATT_JIG_GPIO,
	CC_INFO,
#if defined(CONFIG_WIRELESS_AUTH)
	WC_AUTH_ADT_SENT,
#endif
	WC_DUO_RX_POWER,
#if IS_ENABLED(CONFIG_DUAL_BATTERY)
	BATT_MAIN_VOLTAGE,
	BATT_SUB_VOLTAGE,
	BATT_MAIN_VCELL,
	BATT_SUB_VCELL,
	BATT_MAIN_CURRENT_MA,
	BATT_SUB_CURRENT_MA,
	BATT_MAIN_CON_DET,
	BATT_SUB_CON_DET,
#if IS_ENABLED(CONFIG_LIMITER_S2ASL01)
	BATT_MAIN_VCHG,
	BATT_SUB_VCHG,
	BATT_MAIN_ENB,
	BATT_MAIN_ENB2,
	BATT_SUB_ENB,
	BATT_SUB_PWR_MODE2,
#else
	BATT_MAIN_SHIPMODE,
	BATT_SUB_SHIPMODE,
	BATT_MAIN_VBAT,
	BATT_SUB_VBAT,
#endif
#if IS_ENABLED(CONFIG_DUAL_FUELGAUGE)
	BATT_MAIN_SOC,
	BATT_SUB_SOC,
	BATT_MAIN_REPCAP,
	BATT_SUB_REPCAP,
	BATT_MAIN_FULLCAPREP,
	BATT_SUB_FULLCAPREP,
#endif
#endif
	EXT_EVENT,
	DIRECT_CHARGING_STATUS,
#if IS_ENABLED(CONFIG_DIRECT_CHARGING)
	DIRECT_CHARGING_STEP,
	DIRECT_CHARGING_IIN,
	DIRECT_CHARGING_CHG_STATUS,
	SWITCH_CHARGING_SOURCE,
#endif
	CHARGING_TYPE,
	BATT_FACTORY_MODE,
	BOOT_COMPLETED,
	PD_DISABLE,
	FACTORY_MODE_RELIEVE,
	FACTORY_MODE_BYPASS,
	NORMAL_MODE_BYPASS,
	FACTORY_VOLTAGE_REGULATION,
	FACTORY_MODE_DISABLE,
	USB_CONF,
	CHARGE_OTG_CONTROL,
	CHARGE_UNO_CONTROL,
	CHARGE_COUNTER_SHADOW,
	VOTER_STATUS,
#if defined(CONFIG_WIRELESS_IC_PARAM)
	WC_PARAM_INFO,
#endif
	CHG_INFO,
	LRP,
	HP_D2D,
	CHARGER_IC_NAME,
	DC_RB_EN,
	DC_OP_MODE,
	DC_ADC_MODE,
	DC_VBUS,
	CHG_TYPE,
	MST_EN,
	SPSN_TEST,
	CHG_SOC_LIM,
	MAG_COVER,
	MAG_CLOAK,
	ARI_CNT,
#if IS_ENABLED(CONFIG_SBP_FG)
	STATE_OF_HEALTH,
#endif
	ADC_RSENSE, /* for tuning adc_rsense of bat_thm only now */
	SUPPORT_FUNCTIONS,
};

enum sec_pogo_attrs {
	POGO_SEC_TYPE = 0,
};

ssize_t sec_pogo_show_attrs(struct device *dev,
				struct device_attribute *attr, char *buf);

int sec_pogo_create_attrs(struct device *dev);

#define SEC_POGO_ATTR(_name)					\
{									\
	.attr = {.name = #_name, .mode = 0444},	\
	.show = sec_pogo_show_attrs,				\
	.store = NULL,				\
}

enum sec_otg_attrs {
	OTG_SEC_TYPE = 0,
};

ssize_t sec_otg_show_attrs(struct device *dev,
				struct device_attribute *attr, char *buf);

int sec_otg_create_attrs(struct device *dev);

#define SEC_OTG_ATTR(_name)					\
{									\
	.attr = {.name = #_name, .mode = 0444},	\
	.show = sec_otg_show_attrs,				\
	.store = NULL,				\
}

#endif /* __SEC_BATTERY_SYSFS_H */