/**
 * @file  gpio-fp.h
 * @brief GPIO API for Fastcall driver(Fingerprint)
 *
 * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd.
 *
 * This software is proprietary of Samsung Electronics.
 * No part of this software, either material or conceptual may be copied
 * or distributed, transmitted, transcribed, stored in a retrieval system
 * or translated into any human or computer language in any form by any means,
 * electronic, mechanical, manual or otherwise, or disclosed to third parties
 * without the express written permission of Samsung Electronics.
 */

#ifndef __FP_REGISTER_H__
#define __FP_REGISTER_H__

#ifdef __cplusplus
extern "C" {
#endif

/************************************************************************/
/* TZPC control                                                         */
/************************************************************************/
#define FP_TZPC_SECURE	0x0
#define FP_TZPC_SET_ENABLE 0x7 /* USI:0x1, USI_MODE:0x2, GPIO:0x4 */

#define FP_TZPC_USI_SFR_BASE	0x10410000
#define FP_TZPC_DECPROTSTAT		0x200
#define FP_TZPC_DECPROTSET		0x204
#define FP_TZPC_DECPROTCLR		0x208
#define FP_TZPC_USI_CH0_M		(0x1 << 13)

#define FP_TZPC_USI_MODE_SFR_BASE	0x10410000
#define FP_TZPC_USI_MODE_DECPROTSTAT		0x210
#define FP_TZPC_USI_MODE_DECPROTSET		0x214
#define FP_TZPC_USI_MODE_DECPROTCLR		0x218
#define FP_TZPC_USI_MODE_M	(0x1 << 9)

//done
#define FP_TZPC_PERIC0_0_SFR_BASE	0x10432004 // gpp2 PERIC0_1
#define FP_TZPC_GPIO_DECPROT_NUM		0x0000
#define FP_TZPC_GPIO_DECSTAT_NUM		0x0000
#define FP_TZPC_GPIO_PERIC0_M		(0xFFFFFF00) // gpp2[3:0]

/************************************************************************/
/* GPIO control                                                         */
/* 9830 : CS(gpp2[3]),MISO(gpp2[2]),MOSI(gpp2[1]),CLK(gpp2[0])			*/
/************************************************************************/
//done
#define FP_GPIO_PERIC0_SFR_BASE	0x10430040 // gpp0 + 0x40

#define FP_GPIODAT_INIT_VALUE		0x0000 // low|undef|low|low
#define FP_GPIODRV_INIT_VALUE		0x2222 // 2x|2x|2x|2x
#define FP_GPIOCON_INIT_VALUE		0x1011 // OUTPUT|INPUT|OUTPUT|OUTPUT
#define FP_GPIOPUD_INIT_VALUE		0x0100 // NP|PD|NP|NP
#define FP_GPIOCONPDN_POWEROFF_VALUE		0x20 // out0|input|out0|out0
#define FP_GPIOPUDPDN_POWEROFF_VALUE		0x0100 // NP|PD|NP|NP

#define FP_GPIOCON_POWERON_INACTIVE_VALUE		0x1011 // OUTPUT|INPUT|OUTPUT|OUTPUT
#define FP_GPIODAT_POWERON_INACTIVE_VALUE		0x8 // high|undef|undef|undef
#define FP_GPIOPUD_POWERON_INACTIVE_VALUE		0x0100 // NP|PD|NP|NP
#define FP_GPIODRV_POWERON_INACTIVE_VALUE		0x2222 // 2x|2x|2x|2x
#define FP_GPIOCONPDN_POWERON_INACTIVE_VALUE	0x60 // out1|input|out0|out0
#define FP_GPIOPUDPDN_POWERON_INACTIVE_VALUE	0x0100 // NP|PD|NP|NP

//done
#define FP_GPIOCON		0x0000
#define FP_GPIODAT		0x0004
#define FP_GPIOPUD		0x0008
#define FP_GPIODRV		0x000C
#define FP_GPIOCONPDN	0x0010
#define FP_GPIOPUDPDN	0x0014
//done
#define FP_GPIOCON_MASK				0x0000FFFF // [15:0]
#define FP_GPIODAT_MASK				0x0000000F // [3:0]
#define FP_GPIOPUD_MASK				0x0000FFFF // [15:0]
#define FP_GPIODRV_MASK				0x0000FFFF // [15:0]
#define FP_GPIOCONPDN_MASK			0x000000FF // [7:0]
#define FP_GPIOPUDPDN_MASK			0x0000FFFF // [15:0]

#ifdef __cplusplus
}
#endif

#endif
