mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 07:03:28 -04:00
i2c: designware: Global register definitions
Moving the register definitions to a global header file include/linux/designware_i2c.h. That removes the need to duplicate them in the adaptation layers for this driver outside of drivers/i2c/busses/. There is at least one of those in drivers/gpu/drm/xe/xe_i2c.c. Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Suggested-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> Link: https://patch.msgid.link/20260811121008.1493015-2-heikki.krogerus@linux.intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> (cherry picked from commit 2ab2fb31411a494e4579dfacda986a2672f80e65) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
committed by
Rodrigo Vivi
parent
5e977521d2
commit
874ef9a6f2
@@ -26253,6 +26253,7 @@ R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
L: linux-i2c@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/i2c/busses/i2c-designware-*
|
||||
F: include/linux/designware_i2c.h
|
||||
|
||||
SYNOPSYS DESIGNWARE I2C DRIVER - AMDISP
|
||||
M: Nirujogi Pratap <pratap.nirujogi@amd.com>
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/units.h>
|
||||
|
||||
#include <linux/designware_i2c.h>
|
||||
|
||||
#include "i2c-designware-core.h"
|
||||
|
||||
#define DW_IC_DEFAULT_BUS_CAPACITANCE_pF 100
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <linux/designware_i2c.h>
|
||||
|
||||
#define DW_IC_DEFAULT_FUNCTIONALITY (I2C_FUNC_I2C | \
|
||||
I2C_FUNC_SMBUS_BYTE | \
|
||||
I2C_FUNC_SMBUS_BYTE_DATA | \
|
||||
@@ -25,23 +27,6 @@
|
||||
I2C_FUNC_SMBUS_BLOCK_DATA | \
|
||||
I2C_FUNC_SMBUS_I2C_BLOCK)
|
||||
|
||||
#define DW_IC_CON_MASTER BIT(0)
|
||||
#define DW_IC_CON_SPEED_STD (1 << 1)
|
||||
#define DW_IC_CON_SPEED_FAST (2 << 1)
|
||||
#define DW_IC_CON_SPEED_HIGH (3 << 1)
|
||||
#define DW_IC_CON_SPEED_MASK GENMASK(2, 1)
|
||||
#define DW_IC_CON_10BITADDR_SLAVE BIT(3)
|
||||
#define DW_IC_CON_10BITADDR_MASTER BIT(4)
|
||||
#define DW_IC_CON_RESTART_EN BIT(5)
|
||||
#define DW_IC_CON_SLAVE_DISABLE BIT(6)
|
||||
#define DW_IC_CON_STOP_DET_IFADDRESSED BIT(7)
|
||||
#define DW_IC_CON_TX_EMPTY_CTRL BIT(8)
|
||||
#define DW_IC_CON_RX_FIFO_FULL_HLD_CTRL BIT(9)
|
||||
#define DW_IC_CON_BUS_CLEAR_CTRL BIT(11)
|
||||
|
||||
#define DW_IC_DATA_CMD_DAT GENMASK(7, 0)
|
||||
#define DW_IC_DATA_CMD_FIRST_DATA_BYTE BIT(11)
|
||||
|
||||
/*
|
||||
* Register access parameters
|
||||
*/
|
||||
@@ -55,65 +40,9 @@
|
||||
#define DW_IC_FIFO_RX_FIELD GENMASK(15, 8)
|
||||
#define DW_IC_FIFO_MIN_DEPTH 2
|
||||
|
||||
/*
|
||||
* Registers offset
|
||||
*/
|
||||
#define DW_IC_CON 0x00
|
||||
#define DW_IC_TAR 0x04
|
||||
#define DW_IC_SAR 0x08
|
||||
#define DW_IC_DATA_CMD 0x10
|
||||
#define DW_IC_SS_SCL_HCNT 0x14
|
||||
#define DW_IC_SS_SCL_LCNT 0x18
|
||||
#define DW_IC_FS_SCL_HCNT 0x1c
|
||||
#define DW_IC_FS_SCL_LCNT 0x20
|
||||
#define DW_IC_HS_SCL_HCNT 0x24
|
||||
#define DW_IC_HS_SCL_LCNT 0x28
|
||||
#define DW_IC_INTR_STAT 0x2c
|
||||
#define DW_IC_INTR_MASK 0x30
|
||||
#define DW_IC_RAW_INTR_STAT 0x34
|
||||
#define DW_IC_RX_TL 0x38
|
||||
#define DW_IC_TX_TL 0x3c
|
||||
#define DW_IC_CLR_INTR 0x40
|
||||
#define DW_IC_CLR_RX_UNDER 0x44
|
||||
#define DW_IC_CLR_RX_OVER 0x48
|
||||
#define DW_IC_CLR_TX_OVER 0x4c
|
||||
#define DW_IC_CLR_RD_REQ 0x50
|
||||
#define DW_IC_CLR_TX_ABRT 0x54
|
||||
#define DW_IC_CLR_RX_DONE 0x58
|
||||
#define DW_IC_CLR_ACTIVITY 0x5c
|
||||
#define DW_IC_CLR_STOP_DET 0x60
|
||||
#define DW_IC_CLR_START_DET 0x64
|
||||
#define DW_IC_CLR_GEN_CALL 0x68
|
||||
#define DW_IC_ENABLE 0x6c
|
||||
#define DW_IC_STATUS 0x70
|
||||
#define DW_IC_TXFLR 0x74
|
||||
#define DW_IC_RXFLR 0x78
|
||||
#define DW_IC_SDA_HOLD 0x7c
|
||||
#define DW_IC_TX_ABRT_SOURCE 0x80
|
||||
#define DW_IC_ENABLE_STATUS 0x9c
|
||||
#define DW_IC_CLR_RESTART_DET 0xa8
|
||||
#define DW_IC_SMBUS_INTR_MASK 0xcc
|
||||
#define DW_IC_COMP_PARAM_1 0xf4
|
||||
#define DW_IC_COMP_VERSION 0xf8
|
||||
#define DW_IC_SDA_HOLD_MIN_VERS 0x3131312A /* "111*" == v1.11* */
|
||||
#define DW_IC_COMP_TYPE 0xfc
|
||||
#define DW_IC_COMP_TYPE_VALUE 0x44570140 /* "DW" + 0x0140 */
|
||||
|
||||
#define DW_IC_INTR_RX_UNDER BIT(0)
|
||||
#define DW_IC_INTR_RX_OVER BIT(1)
|
||||
#define DW_IC_INTR_RX_FULL BIT(2)
|
||||
#define DW_IC_INTR_TX_OVER BIT(3)
|
||||
#define DW_IC_INTR_TX_EMPTY BIT(4)
|
||||
#define DW_IC_INTR_RD_REQ BIT(5)
|
||||
#define DW_IC_INTR_TX_ABRT BIT(6)
|
||||
#define DW_IC_INTR_RX_DONE BIT(7)
|
||||
#define DW_IC_INTR_ACTIVITY BIT(8)
|
||||
#define DW_IC_INTR_STOP_DET BIT(9)
|
||||
#define DW_IC_INTR_START_DET BIT(10)
|
||||
#define DW_IC_INTR_GEN_CALL BIT(11)
|
||||
#define DW_IC_INTR_RESTART_DET BIT(12)
|
||||
#define DW_IC_INTR_MST_ON_HOLD BIT(13)
|
||||
|
||||
#define DW_IC_INTR_DEFAULT_MASK (DW_IC_INTR_RX_FULL | \
|
||||
DW_IC_INTR_TX_ABRT | \
|
||||
DW_IC_INTR_STOP_DET)
|
||||
@@ -123,16 +52,6 @@
|
||||
DW_IC_INTR_RX_UNDER | \
|
||||
DW_IC_INTR_RD_REQ)
|
||||
|
||||
#define DW_IC_ENABLE_ENABLE BIT(0)
|
||||
#define DW_IC_ENABLE_ABORT BIT(1)
|
||||
|
||||
#define DW_IC_STATUS_ACTIVITY BIT(0)
|
||||
#define DW_IC_STATUS_TFE BIT(2)
|
||||
#define DW_IC_STATUS_RFNE BIT(3)
|
||||
#define DW_IC_STATUS_MASTER_ACTIVITY BIT(5)
|
||||
#define DW_IC_STATUS_SLAVE_ACTIVITY BIT(6)
|
||||
#define DW_IC_STATUS_MASTER_HOLD_TX_FIFO_EMPTY BIT(7)
|
||||
|
||||
#define DW_IC_SDA_HOLD_RX_SHIFT 16
|
||||
#define DW_IC_SDA_HOLD_RX_MASK GENMASK(23, 16)
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/reset.h>
|
||||
|
||||
#include <linux/designware_i2c.h>
|
||||
|
||||
#include "i2c-designware-core.h"
|
||||
|
||||
#define AMD_TIMEOUT_MIN_US 25
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
#include <linux/designware_i2c.h>
|
||||
|
||||
#include "i2c-designware-core.h"
|
||||
|
||||
int i2c_dw_reg_slave(struct i2c_client *slave)
|
||||
|
||||
107
include/linux/designware_i2c.h
Normal file
107
include/linux/designware_i2c.h
Normal file
@@ -0,0 +1,107 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Synopsys DesignWare I2C register definitions
|
||||
*
|
||||
* Copyright (C) 2026, Intel Corporation
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_DESIGNWARE_I2C_H
|
||||
#define __LINUX_DESIGNWARE_I2C_H
|
||||
|
||||
#include <linux/bits.h>
|
||||
|
||||
/*
|
||||
* Registers offset
|
||||
*/
|
||||
#define DW_IC_CON 0x00
|
||||
#define DW_IC_TAR 0x04
|
||||
#define DW_IC_SAR 0x08
|
||||
#define DW_IC_DATA_CMD 0x10
|
||||
#define DW_IC_SS_SCL_HCNT 0x14
|
||||
#define DW_IC_SS_SCL_LCNT 0x18
|
||||
#define DW_IC_FS_SCL_HCNT 0x1c
|
||||
#define DW_IC_FS_SCL_LCNT 0x20
|
||||
#define DW_IC_HS_SCL_HCNT 0x24
|
||||
#define DW_IC_HS_SCL_LCNT 0x28
|
||||
#define DW_IC_INTR_STAT 0x2c
|
||||
#define DW_IC_INTR_MASK 0x30
|
||||
#define DW_IC_RAW_INTR_STAT 0x34
|
||||
#define DW_IC_RX_TL 0x38
|
||||
#define DW_IC_TX_TL 0x3c
|
||||
#define DW_IC_CLR_INTR 0x40
|
||||
#define DW_IC_CLR_RX_UNDER 0x44
|
||||
#define DW_IC_CLR_RX_OVER 0x48
|
||||
#define DW_IC_CLR_TX_OVER 0x4c
|
||||
#define DW_IC_CLR_RD_REQ 0x50
|
||||
#define DW_IC_CLR_TX_ABRT 0x54
|
||||
#define DW_IC_CLR_RX_DONE 0x58
|
||||
#define DW_IC_CLR_ACTIVITY 0x5c
|
||||
#define DW_IC_CLR_STOP_DET 0x60
|
||||
#define DW_IC_CLR_START_DET 0x64
|
||||
#define DW_IC_CLR_GEN_CALL 0x68
|
||||
#define DW_IC_ENABLE 0x6c
|
||||
#define DW_IC_STATUS 0x70
|
||||
#define DW_IC_TXFLR 0x74
|
||||
#define DW_IC_RXFLR 0x78
|
||||
#define DW_IC_SDA_HOLD 0x7c
|
||||
#define DW_IC_TX_ABRT_SOURCE 0x80
|
||||
#define DW_IC_ENABLE_STATUS 0x9c
|
||||
#define DW_IC_CLR_RESTART_DET 0xa8
|
||||
#define DW_IC_SMBUS_INTR_STAT 0xc8
|
||||
#define DW_IC_SMBUS_INTR_MASK 0xcc
|
||||
#define DW_IC_CLR_SMBUS_INTR 0xd4
|
||||
#define DW_IC_COMP_PARAM_1 0xf4
|
||||
#define DW_IC_COMP_VERSION 0xf8
|
||||
#define DW_IC_COMP_TYPE 0xfc
|
||||
|
||||
/* DW_IC_CON bits */
|
||||
#define DW_IC_CON_MASTER BIT(0)
|
||||
#define DW_IC_CON_SPEED_STD (1 << 1)
|
||||
#define DW_IC_CON_SPEED_FAST (2 << 1)
|
||||
#define DW_IC_CON_SPEED_HIGH (3 << 1)
|
||||
#define DW_IC_CON_SPEED_MASK GENMASK(2, 1)
|
||||
#define DW_IC_CON_10BITADDR_SLAVE BIT(3)
|
||||
#define DW_IC_CON_10BITADDR_MASTER BIT(4)
|
||||
#define DW_IC_CON_RESTART_EN BIT(5)
|
||||
#define DW_IC_CON_SLAVE_DISABLE BIT(6)
|
||||
#define DW_IC_CON_STOP_DET_IFADDRESSED BIT(7)
|
||||
#define DW_IC_CON_TX_EMPTY_CTRL BIT(8)
|
||||
#define DW_IC_CON_RX_FIFO_FULL_HLD_CTRL BIT(9)
|
||||
#define DW_IC_CON_BUS_CLEAR_CTRL BIT(11)
|
||||
|
||||
/* DW_IC_DATA_CMD bits */
|
||||
#define DW_IC_DATA_CMD_DAT GENMASK(7, 0)
|
||||
#define DW_IC_DATA_CMD_FIRST_DATA_BYTE BIT(11)
|
||||
|
||||
/* DW_IC_INTR_* bits */
|
||||
#define DW_IC_INTR_RX_UNDER BIT(0)
|
||||
#define DW_IC_INTR_RX_OVER BIT(1)
|
||||
#define DW_IC_INTR_RX_FULL BIT(2)
|
||||
#define DW_IC_INTR_TX_OVER BIT(3)
|
||||
#define DW_IC_INTR_TX_EMPTY BIT(4)
|
||||
#define DW_IC_INTR_RD_REQ BIT(5)
|
||||
#define DW_IC_INTR_TX_ABRT BIT(6)
|
||||
#define DW_IC_INTR_RX_DONE BIT(7)
|
||||
#define DW_IC_INTR_ACTIVITY BIT(8)
|
||||
#define DW_IC_INTR_STOP_DET BIT(9)
|
||||
#define DW_IC_INTR_START_DET BIT(10)
|
||||
#define DW_IC_INTR_GEN_CALL BIT(11)
|
||||
#define DW_IC_INTR_RESTART_DET BIT(12)
|
||||
#define DW_IC_INTR_MST_ON_HOLD BIT(13)
|
||||
|
||||
/* DW_IC_ENABLE bits */
|
||||
#define DW_IC_ENABLE_ENABLE BIT(0)
|
||||
#define DW_IC_ENABLE_ABORT BIT(1)
|
||||
|
||||
/* DW_IC_STATUS bits */
|
||||
#define DW_IC_STATUS_ACTIVITY BIT(0)
|
||||
#define DW_IC_STATUS_TFE BIT(2)
|
||||
#define DW_IC_STATUS_RFNE BIT(3)
|
||||
#define DW_IC_STATUS_MASTER_ACTIVITY BIT(5)
|
||||
#define DW_IC_STATUS_SLAVE_ACTIVITY BIT(6)
|
||||
#define DW_IC_STATUS_MASTER_HOLD_TX_FIFO_EMPTY BIT(7)
|
||||
|
||||
/* DW_IC_SMBUS_INTR_* bits */
|
||||
#define DW_IC_SMBUS_INTR_ALERT BIT(10)
|
||||
|
||||
#endif /* __LINUX_DESIGNWARE_I2C_H */
|
||||
Reference in New Issue
Block a user