Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
/*
 * 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__ */