blob: b04adb7fb17e96219c812c7bb95e5deb5f5b71d7 [file] [log] [blame]
/*
* Copyright (c) 2015 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file Register sets for I2C driver for Quark SE Sensor Subsystem
*/
#ifndef __DRIVERS_I2C_QUARK_SE_SS_REGISTERS_H__
#define __DRIVERS_I2C_QUARK_SE_SS_REGISTERS_H__
/* Register offsets */
#define REG_CON 0x00
#define REG_DATA_CMD 0x01
#define REG_SS_SCL_CNT 0x02
#define REG_FS_SCL_CNT 0x04
#define REG_INTR_STAT 0x06
#define REG_INTR_MASK 0x07
#define REG_TL 0x08
#define REG_INTR_CLR 0x0A
#define REG_STATUS 0x0B
#define REG_TXFLR 0x0C
#define REG_RXFLR 0x0D
#define REG_SDA_CONFIG 0x0E
#define REG_TX_ABRT_SOURCE 0x0F
#define REG_ENABLE_STATUS 0x11
/* IC_CON bits */
#define IC_CON_CLK_ENA (1 << 31)
#define IC_CON_RSVP_4 (1 << 30)
#define IC_CON_SPKLEN_MASK (0x8 << 22)
#define IC_CON_SPKLEN_POS (22)
#define IC_CON_RSVP_3 (0x7 << 19)
#define IC_CON_TAR_SAR_MASK (0x7FF << 9)
#define IC_CON_TAR_SAR_POS (9)
#define IC_CON_RSVP_2 (1 << 8)
#define IC_CON_RESTART_EN (1 << 7)
#define IC_CON_RSVP_1 (1 << 6)
#define IC_CON_10BIT_ADDR (1 << 5)
#define IC_CON_SPEED_MASK (2 << 3)
#define IC_CON_SPEED_POS (3)
#define IC_CON_RSVP_0 (1 << 2)
#define IC_CON_ABORT (1 << 1)
#define IC_CON_ENABLE (1 << 0)
/* IC_DATA_CMD bits */
#define IC_DATA_CMD_DATA_MASK 0xFF
#define IC_DATA_CMD_CMD (1 << 8)
#define IC_DATA_CMD_STOP (1 << 9)
#define IC_DATA_CMD_RESTART (1 << 10)
#define IC_DATA_CMD_POP (1 << 30)
#define IC_DATA_CMD_STROBE (1 << 31)
/* IC_INTR_STAT, IC_INTR_MASK, IC_INTR_CLR bits */
#define IC_INTR_RX_UNDER (1 << 0)
#define IC_INTR_RX_OVER (1 << 1)
#define IC_INTR_RX_FULL (1 << 2)
#define IC_INTR_TX_OVER (1 << 3)
#define IC_INTR_TX_EMPTY (1 << 4)
#define IC_INTR_TX_ABRT (1 << 6)
#define IC_INTR_RX_DONE (1 << 7)
#define IC_INTR_ACTIVITY (1 << 8)
#define IC_INTR_STOP_DET (1 << 9)
#define IC_INTR_START_DET (1 << 10)
#define IC_INTR_CLR_ALL (0xFFFFFFFF)
#define IC_INTR_MASK_ALL (0x0)
#define IC_INTR_MASK_TX (IC_INTR_TX_OVER | \
IC_INTR_TX_EMPTY | \
IC_INTR_TX_ABRT | \
IC_INTR_STOP_DET)
#define IC_INTR_MASK_RX (IC_INTR_RX_UNDER | \
IC_INTR_RX_OVER | \
IC_INTR_RX_FULL | \
IC_INTR_STOP_DET)
/* IC_STATUS */
#define IC_STATUS_ACTIVITY (1 << 0)
#define IC_STATUS_TFNF (1 << 1)
#define IC_STATUS_TFE (1 << 2)
#define IC_STATUS_RFNE (1 << 3)
#define IC_STATUS_RFF (1 << 4)
#define IC_STATUS_MST_ACTIVITY (1 << 5)
#define IC_STATUS_SLV_ACTIVITY (1 << 6)
#endif /* __DRIVERS_I2C_QUARK_SE_SS_REGISTERS_H__ */