summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobby Cai <R63905@freescale.com>2010-03-10 21:26:30 +0800
committerAlejandro Gonzalez <alex.gonzalez@digi.com>2010-05-25 11:17:19 +0200
commitb077910bb4171e53db9aed24c030f3a64529a118 (patch)
treeafeba7e6a9da5bfb1f9010cf22e6fcec9b913782
parent2c6f882f8e6b80f6f5e54d6105b03ae124cbb476 (diff)
ENGR00121273-1 [MX23] Porting I2C driver to new MSL
Adjust the i2c adapter driver for MX23 and MX28 Signed-off-by: Robby Cai <R63905@freescale.com> Signed-off-by: Alejandro Gonzalez <alex.gonzalez@digi.com>
-rw-r--r--drivers/i2c/busses/Kconfig4
-rw-r--r--drivers/i2c/busses/i2c-mxs.c13
2 files changed, 15 insertions, 2 deletions
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index f70a72a0b26a..c2244379aeec 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -450,14 +450,14 @@ config I2C_MXS_SELECT0
config I2C_MXS_SELECT0_PIOQUEUE_MODE
tristate "MXS I2C0 PIOQUEUE MODE Support"
- depends on I2C_MXS_SELECT0
+ depends on (I2C_MXS_SELECT0 && !ARCH_MX23)
help
say yes if you are sure transfer length is eqaul to or less than 24 bytes.
Otherwise say no to use DMA mode by default.
config I2C_MXS_SELECT1
bool "Enable I2C1 module"
- depends on I2C_MXS
+ depends on (I2C_MXS && !ARCH_MX23)
help
Enable MXS I2C1 Module
diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
index 705512b342e2..e3235ff8e551 100644
--- a/drivers/i2c/busses/i2c-mxs.c
+++ b/drivers/i2c/busses/i2c-mxs.c
@@ -33,6 +33,7 @@
#include <mach/device.h>
#include <mach/regs-i2c.h>
#include <mach/system.h>
+#include <mach/hardware.h>
#include "i2c-mxs.h"
@@ -53,6 +54,18 @@ static u8 *i2c_buf_virt;
#define CMD_I2C_READ (BM_I2C_CTRL0_SEND_NAK_ON_LAST | \
BM_I2C_CTRL0_MASTER_MODE)
+/* Hack for platform which does not support PioQueue Mode */
+#if !defined(HW_I2C_QUEUECMD) || \
+ !defined(HW_I2C_QUEUEDATA) || \
+ !defined(HW_I2C_QUEUECTRL_CLR) || \
+ !defined(HW_I2C_QUEUECTRL_SET)
+#warning "Pio Queue Mode *NOT* Support!"
+#define HW_I2C_QUEUECMD HW_I2C_VERSION
+#define HW_I2C_QUEUEDATA HW_I2C_VERSION
+#define HW_I2C_QUEUECTRL_SET HW_I2C_VERSION
+#define HW_I2C_QUEUECTRL_CLR HW_I2C_VERSION
+#endif
+
static void hw_i2c_dmachan_reset(struct mxs_i2c_dev *dev)
{
mxs_dma_reset(dev->dma_chan);