xref: /rk3399_ARM-atf/plat/hisilicon/hikey960/include/hi3660_hkadc.h (revision 2f2abcf4ba37bdd1332111c240961aae509c5d9c)
1*2f2abcf4SHaojian Zhuang /*
2*2f2abcf4SHaojian Zhuang  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
3*2f2abcf4SHaojian Zhuang  *
4*2f2abcf4SHaojian Zhuang  * SPDX-License-Identifier: BSD-3-Clause
5*2f2abcf4SHaojian Zhuang  */
6*2f2abcf4SHaojian Zhuang #ifndef __HI3660_HKADC_H__
7*2f2abcf4SHaojian Zhuang #define __HI3660_HKADC_H__
8*2f2abcf4SHaojian Zhuang 
9*2f2abcf4SHaojian Zhuang #define HKADC_SSI_REG_BASE			0xE82B8000
10*2f2abcf4SHaojian Zhuang 
11*2f2abcf4SHaojian Zhuang #define HKADC_DSP_START_REG			(HKADC_SSI_REG_BASE + 0x000)
12*2f2abcf4SHaojian Zhuang #define HKADC_WR_NUM_REG			(HKADC_SSI_REG_BASE + 0x008)
13*2f2abcf4SHaojian Zhuang #define HKADC_DSP_START_CLR_REG			(HKADC_SSI_REG_BASE + 0x01C)
14*2f2abcf4SHaojian Zhuang #define HKADC_WR01_DATA_REG			(HKADC_SSI_REG_BASE + 0x020)
15*2f2abcf4SHaojian Zhuang 
16*2f2abcf4SHaojian Zhuang #define WR1_WRITE_MODE				(1 << 31)
17*2f2abcf4SHaojian Zhuang #define WR1_READ_MODE				(0 << 31)
18*2f2abcf4SHaojian Zhuang #define WR1_ADDR(x)				(((x) & 0x7F) << 24)
19*2f2abcf4SHaojian Zhuang #define WR1_DATA(x)				(((x) & 0xFF) << 16)
20*2f2abcf4SHaojian Zhuang #define WR0_WRITE_MODE				(1 << 15)
21*2f2abcf4SHaojian Zhuang #define WR0_READ_MODE				(0 << 15)
22*2f2abcf4SHaojian Zhuang #define WR0_ADDR(x)				(((x) & 0x7F) << 8)
23*2f2abcf4SHaojian Zhuang #define WR0_DATA(x)				((x) & 0xFF)
24*2f2abcf4SHaojian Zhuang 
25*2f2abcf4SHaojian Zhuang #define HKADC_WR23_DATA_REG			(HKADC_SSI_REG_BASE + 0x024)
26*2f2abcf4SHaojian Zhuang #define HKADC_WR45_DATA_REG			(HKADC_SSI_REG_BASE + 0x028)
27*2f2abcf4SHaojian Zhuang #define HKADC_DELAY01_REG			(HKADC_SSI_REG_BASE + 0x030)
28*2f2abcf4SHaojian Zhuang #define HKADC_DELAY23_REG			(HKADC_SSI_REG_BASE + 0x034)
29*2f2abcf4SHaojian Zhuang #define HKADC_DELAY45_REG			(HKADC_SSI_REG_BASE + 0x038)
30*2f2abcf4SHaojian Zhuang #define HKADC_DSP_RD2_DATA_REG			(HKADC_SSI_REG_BASE + 0x048)
31*2f2abcf4SHaojian Zhuang #define HKADC_DSP_RD3_DATA_REG			(HKADC_SSI_REG_BASE + 0x04C)
32*2f2abcf4SHaojian Zhuang 
33*2f2abcf4SHaojian Zhuang /* HKADC Internal Registers */
34*2f2abcf4SHaojian Zhuang #define HKADC_CTRL_ADDR				0x00
35*2f2abcf4SHaojian Zhuang #define HKADC_START_ADDR			0x01
36*2f2abcf4SHaojian Zhuang #define HKADC_DATA1_ADDR			0x03   /* high 8 bits */
37*2f2abcf4SHaojian Zhuang #define HKADC_DATA0_ADDR			0x04   /* low 8 bits */
38*2f2abcf4SHaojian Zhuang #define HKADC_MODE_CFG				0x0A
39*2f2abcf4SHaojian Zhuang 
40*2f2abcf4SHaojian Zhuang #define HKADC_VALUE_HIGH			0x0FF0
41*2f2abcf4SHaojian Zhuang #define HKADC_VALUE_LOW				0x000F
42*2f2abcf4SHaojian Zhuang #define HKADC_VALID_VALUE			0x0FFF
43*2f2abcf4SHaojian Zhuang 
44*2f2abcf4SHaojian Zhuang #define HKADC_CHANNEL_MAX			15
45*2f2abcf4SHaojian Zhuang #define HKADC_VREF_1V8				1800
46*2f2abcf4SHaojian Zhuang #define HKADC_ACCURACY				0x0FFF
47*2f2abcf4SHaojian Zhuang 
48*2f2abcf4SHaojian Zhuang #define HKADC_WR01_VALUE			((HKADC_START_ADDR << 24) | \
49*2f2abcf4SHaojian Zhuang 						 (0x1 << 16))
50*2f2abcf4SHaojian Zhuang #define HKADC_WR23_VALUE			((0x1 << 31) |		\
51*2f2abcf4SHaojian Zhuang 						 (HKADC_DATA0_ADDR << 24) | \
52*2f2abcf4SHaojian Zhuang 						 (1 << 15) |		\
53*2f2abcf4SHaojian Zhuang 						 (HKADC_DATA1_ADDR << 8))
54*2f2abcf4SHaojian Zhuang #define HKADC_WR45_VALUE			(0x80)
55*2f2abcf4SHaojian Zhuang #define HKADC_CHANNEL0_DELAY01_VALUE		((0x0700 << 16) | 0xFFFF)
56*2f2abcf4SHaojian Zhuang #define HKADC_DELAY01_VALUE			((0x0700 << 16) | 0x0200)
57*2f2abcf4SHaojian Zhuang #define HKADC_DELAY23_VALUE			((0x00C8 << 16) | 0x00C8)
58*2f2abcf4SHaojian Zhuang #define START_DELAY_TIMEOUT			2000
59*2f2abcf4SHaojian Zhuang #define HKADC_WR_NUM_VALUE			4
60*2f2abcf4SHaojian Zhuang 
61*2f2abcf4SHaojian Zhuang #endif /* __HI3660_HKADC_H__ */
62