/*
 * (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
* SPDX-License-Identifier:	GPL-2.0+
 *
 * (C) Copyright 2007-2011
 * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
 * wangwei <wangwei@allwinnertech.com>
 *
 * Some init for sunxi platform.
 *
 */
#ifndef __AXP81X_REGS_H__
#define __AXP81X_REGS_H__

#include <arch/axp.h>

#define   AXP81X_CHIP_ID              (0x11)

#ifdef CFG_SUNXI_TWI
#define AXP81X_RUNTIME_ADDR			(0x34)
#define AXP81X_DEVICE_ADDR			400000
#else
#define AXP81X_RUNTIME_ADDR         (0x2d)
#define AXP81X_DEVICE_ADDR          (0x3A3)

#endif

#define AXP81X_SUNXI_CPU_VOL	"dcdc2"
#define AXP81X_SUNXI_SYS_VOL	"dcdc4"
#define AXP81X_SUNXI_DRAM_VOL	"dcdc5"

#define BOOT_POWER81X_POWER_KEY_STATUS BOOT_POWER81X_INTSTS5
#define BOOT_POWER81X_POWER_KEY_OFFSET 0x3

/*define AXP803 REGISTER */
#define   BOOT_POWER81X_STATUS              			(0x00)
#define   BOOT_POWER81X_MODE_CHGSTATUS      			(0x01)
#define   BOOT_POWER81X_OTG_STATUS          			(0x02)
#define   BOOT_POWER81X_VERSION         	   			(0x03)
#define   BOOT_POWER81X_DATA_BUFFER0        			(0x04)
#define   BOOT_POWER81X_DATA_BUFFER1        			(0x05)
#define   BOOT_POWER81X_DATA_BUFFER2        			(0x06)
#define   BOOT_POWER81X_DATA_BUFFER3        			(0x07)
#define   BOOT_POWER81X_DATA_BUFFER4        			(0x08)
#define   BOOT_POWER81X_DATA_BUFFER5        			(0x09)
#define   BOOT_POWER81X_DATA_BUFFER6        			(0x0a)
#define   BOOT_POWER81X_DATA_BUFFER7        			(0x0b)
#define   BOOT_POWER81X_DATA_BUFFER8        			(0x0c)
#define   BOOT_POWER81X_DATA_BUFFER9        			(0x0d)
#define   BOOT_POWER81X_DATA_BUFFER10       			(0x0e)
#define   BOOT_POWER81X_DATA_BUFFER11       			(0x0f)
#define   BOOT_POWER81X_OUTPUT_CTL1     	   			(0x10)
#define   BOOT_POWER81X_OUTPUT_CTL2     	   			(0x12)
#define   BOOT_POWER81X_ALDO_CTL     	   			    (0x13)
#define   BOOT_POWER81X_DLDO1_VOL                       (0x15)
#define   BOOT_POWER81X_DLDO2_VOL                       (0x16)
#define   BOOT_POWER81X_DLDO3_VOL                       (0x17)
#define   BOOT_POWER81X_DLDO4_VOL                       (0x18)

#define   BOOT_POWER81X_ELDO1_VOL                       (0x19)
#define   BOOT_POWER81X_ELDO2_VOL                       (0x1A)
#define   BOOT_POWER81X_ELDO3_VOL                       (0x1B)
#define   BOOT_POWER81X_FLDO1_VOL                       (0x1C)
#define   BOOT_POWER81X_FLDO2_VOL						(0x1D)
#define   BOOT_POWER81X_DC1OUT_VOL                  	(0x20)
#define   BOOT_POWER81X_DC2OUT_VOL          			(0x21)
#define   BOOT_POWER81X_DC3OUT_VOL          			(0x22)
#define   BOOT_POWER81X_DC4OUT_VOL          			(0x23)
#define   BOOT_POWER81X_DC5OUT_VOL          			(0x24)
#define   BOOT_POWER81X_DC6OUT_VOL          			(0x25)

#define   BOOT_POWER81X_DC23_DVM_CTL          			(0x27)
#define   BOOT_POWER81X_ALDO1OUT_VOL                    (0x28)
#define   BOOT_POWER81X_ALDO2OUT_VOL                    (0x29)
#define   BOOT_POWER81X_ALDO3OUT_VOL                    (0x2A)

#define   BOOT_POWER81X_VBUS_SET             			(0x30)
#define   BOOT_POWER81X_VOFF_SET            			(0x31)
#define   BOOT_POWER81X_OFF_CTL             			(0x32)
#define   BOOT_POWER81X_CHARGE1             			(0x33)
#define   BOOT_POWER81X_CHARGE2             			(0x34)
#define   BOOT_POWER81X_CHARGE3             			(0x35)

#define   BOOT_POWER81X_BAT_AVERVOL_H8                  (0x50)
#define   BOOT_POWER81X_BAT_AVERVOL_L4                  (0x51)

#define   BOOT_POWER81X_DCDC_MODESET        			(0x80)
#define   BOOT_POWER81X_VOUT_MONITOR        			(0x81)
#define   BOOT_POWER81X_ADC_EN             			    (0x82)
#define   BOOT_POWER81X_ADC_SPEED_TS           			(0x84)
#define   BOOT_POWER81X_ADC_SPEED      			        (0x85)
#define   BOOT_POWER81X_TIMER_CTL           			(0x8A)
#define   BOOT_POWER81X_HOTOVER_CTL         			(0x8F)
#define   BOOT_POWER81X_GPIO0_CTL           			(0x90)
#define   BOOT_POWER81X_GPIO0_VOL           			(0x91)
#define   BOOT_POWER81X_GPIO1_CTL           			(0x92)
#define   BOOT_POWER81X_GPIO1_VOL           			(0x93)
#define   BOOT_POWER81X_GPIO012_SIGNAL      			(0x94)

#define   BOOT_POWER81X_GPIO012_PDCTL       			(0x97)

#define   BOOT_POWER81X_INTEN1              			(0x40)
#define   BOOT_POWER81X_INTEN2              			(0x41)
#define   BOOT_POWER81X_INTEN3              			(0x42)
#define   BOOT_POWER81X_INTEN4              			(0x43)
#define   BOOT_POWER81X_INTEN5              			(0x44)
#define   BOOT_POWER81X_INTEN6              			(0x45)


#define   BOOT_POWER81X_INTSTS1             			(0x48)
#define   BOOT_POWER81X_INTSTS2             			(0x49)
#define   BOOT_POWER81X_INTSTS3             			(0x4a)
#define   BOOT_POWER81X_INTSTS4             			(0x4b)
#define   BOOT_POWER81X_INTSTS5             			(0x4c)
#define   BOOT_POWER81X_INTSTS6             			(0x4d)

#define   BOOT_POWER81X_FUEL_GAUGE_CTL         			(0xB8)
#define   BOOT_POWER81X_BAT_PERCEN_CAL					(0xB9)

#define   BOOT_POWER81X_RDC1                			(0xBA)
#define   BOOT_POWER81X_RDC0         					(0xBB)
#define   BOOT_POWER81X_OCV1                			(0xBC)
#define   BOOT_POWER81X_OCV0         					(0xBD)

#define   BOOT_POWER81X_BAT_MAX_CAP1   					(0xE0)
#define   BOOT_POWER81X_BAT_MAX_CAP0   					(0xE1)
#define   BOOT_POWER81X_BAT_COULOMB_CNT1				(0xE2)
#define   BOOT_POWER81X_BAT_COULOMB_CNT0				(0xE3)


int axp81X_set_power_reset(void);
int axp81X_probe_power_key(void);
int axp81X_set_ddr_voltage(int set_vol);
int axp81X_set_pll_voltage(int set_vol);
int axp81X_set_sys_voltage(int set_vol, int onoff);
int axp81X_set_sys_voltage_ext(char *name, int set_vol, int onoff);
int axp81X_axp_init(u8 power_mode);
int axp81X_get_power_source(void);
int axp81X_reg_read(u8 addr, u8 *val);
int axp81X_reg_write(u8 addr, u8 val);


#endif /* __AXP809_REGS_H__ */
