xref: /rk3399_ARM-atf/plat/hisilicon/hikey960/include/hi3660_hkadc.h (revision d0d0f171643a22bbc3d06f5b6dde40cc1d9d5d11)
12f2abcf4SHaojian Zhuang /*
22f2abcf4SHaojian Zhuang  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
32f2abcf4SHaojian Zhuang  *
42f2abcf4SHaojian Zhuang  * SPDX-License-Identifier: BSD-3-Clause
52f2abcf4SHaojian Zhuang  */
6c3cf06f1SAntonio Nino Diaz #ifndef HI3660_HKADC_H
7c3cf06f1SAntonio Nino Diaz #define HI3660_HKADC_H
82f2abcf4SHaojian Zhuang 
92f2abcf4SHaojian Zhuang #define HKADC_SSI_REG_BASE			0xE82B8000
102f2abcf4SHaojian Zhuang 
112f2abcf4SHaojian Zhuang #define HKADC_DSP_START_REG			(HKADC_SSI_REG_BASE + 0x000)
122f2abcf4SHaojian Zhuang #define HKADC_WR_NUM_REG			(HKADC_SSI_REG_BASE + 0x008)
132f2abcf4SHaojian Zhuang #define HKADC_DSP_START_CLR_REG			(HKADC_SSI_REG_BASE + 0x01C)
142f2abcf4SHaojian Zhuang #define HKADC_WR01_DATA_REG			(HKADC_SSI_REG_BASE + 0x020)
152f2abcf4SHaojian Zhuang 
16*d3b6df7cSJustin Chadwell #define WR1_WRITE_MODE				(1U << 31)
172f2abcf4SHaojian Zhuang #define WR1_READ_MODE				(0 << 31)
182f2abcf4SHaojian Zhuang #define WR1_ADDR(x)				(((x) & 0x7F) << 24)
192f2abcf4SHaojian Zhuang #define WR1_DATA(x)				(((x) & 0xFF) << 16)
202f2abcf4SHaojian Zhuang #define WR0_WRITE_MODE				(1 << 15)
212f2abcf4SHaojian Zhuang #define WR0_READ_MODE				(0 << 15)
222f2abcf4SHaojian Zhuang #define WR0_ADDR(x)				(((x) & 0x7F) << 8)
232f2abcf4SHaojian Zhuang #define WR0_DATA(x)				((x) & 0xFF)
242f2abcf4SHaojian Zhuang 
252f2abcf4SHaojian Zhuang #define HKADC_WR23_DATA_REG			(HKADC_SSI_REG_BASE + 0x024)
262f2abcf4SHaojian Zhuang #define HKADC_WR45_DATA_REG			(HKADC_SSI_REG_BASE + 0x028)
272f2abcf4SHaojian Zhuang #define HKADC_DELAY01_REG			(HKADC_SSI_REG_BASE + 0x030)
282f2abcf4SHaojian Zhuang #define HKADC_DELAY23_REG			(HKADC_SSI_REG_BASE + 0x034)
292f2abcf4SHaojian Zhuang #define HKADC_DELAY45_REG			(HKADC_SSI_REG_BASE + 0x038)
302f2abcf4SHaojian Zhuang #define HKADC_DSP_RD2_DATA_REG			(HKADC_SSI_REG_BASE + 0x048)
312f2abcf4SHaojian Zhuang #define HKADC_DSP_RD3_DATA_REG			(HKADC_SSI_REG_BASE + 0x04C)
322f2abcf4SHaojian Zhuang 
332f2abcf4SHaojian Zhuang /* HKADC Internal Registers */
342f2abcf4SHaojian Zhuang #define HKADC_CTRL_ADDR				0x00
352f2abcf4SHaojian Zhuang #define HKADC_START_ADDR			0x01
362f2abcf4SHaojian Zhuang #define HKADC_DATA1_ADDR			0x03   /* high 8 bits */
372f2abcf4SHaojian Zhuang #define HKADC_DATA0_ADDR			0x04   /* low 8 bits */
382f2abcf4SHaojian Zhuang #define HKADC_MODE_CFG				0x0A
392f2abcf4SHaojian Zhuang 
402f2abcf4SHaojian Zhuang #define HKADC_VALUE_HIGH			0x0FF0
412f2abcf4SHaojian Zhuang #define HKADC_VALUE_LOW				0x000F
422f2abcf4SHaojian Zhuang #define HKADC_VALID_VALUE			0x0FFF
432f2abcf4SHaojian Zhuang 
442f2abcf4SHaojian Zhuang #define HKADC_CHANNEL_MAX			15
452f2abcf4SHaojian Zhuang #define HKADC_VREF_1V8				1800
462f2abcf4SHaojian Zhuang #define HKADC_ACCURACY				0x0FFF
472f2abcf4SHaojian Zhuang 
482f2abcf4SHaojian Zhuang #define HKADC_WR01_VALUE			((HKADC_START_ADDR << 24) | \
492f2abcf4SHaojian Zhuang 						 (0x1 << 16))
50*d3b6df7cSJustin Chadwell #define HKADC_WR23_VALUE			((0x1u << 31) |		\
512f2abcf4SHaojian Zhuang 						 (HKADC_DATA0_ADDR << 24) | \
522f2abcf4SHaojian Zhuang 						 (1 << 15) |		\
532f2abcf4SHaojian Zhuang 						 (HKADC_DATA1_ADDR << 8))
542f2abcf4SHaojian Zhuang #define HKADC_WR45_VALUE			(0x80)
552f2abcf4SHaojian Zhuang #define HKADC_CHANNEL0_DELAY01_VALUE		((0x0700 << 16) | 0xFFFF)
562f2abcf4SHaojian Zhuang #define HKADC_DELAY01_VALUE			((0x0700 << 16) | 0x0200)
572f2abcf4SHaojian Zhuang #define HKADC_DELAY23_VALUE			((0x00C8 << 16) | 0x00C8)
582f2abcf4SHaojian Zhuang #define START_DELAY_TIMEOUT			2000
592f2abcf4SHaojian Zhuang #define HKADC_WR_NUM_VALUE			4
602f2abcf4SHaojian Zhuang 
61c3cf06f1SAntonio Nino Diaz #endif /* HI3660_HKADC_H */
62