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