[U-Boot] board/common: Add support for QIXIS read/write using i2c

Submitted by Prabhakar Kushwaha on Jan. 15, 2013, 4:26 a.m.

Details

Message ID 1358223982-2507-1-git-send-email-prabhakar@freescale.com
State Superseded
Delegated to: Andy Fleming
Headers show

Commit Message

Prabhakar Kushwaha Jan. 15, 2013, 4:26 a.m.
QIXIS FPGA is accessable via both i2c and flash controller.
Only flash controller access is supported.

Add support of i2c based access. It is quite useful in the scenario
where either flash controller path is broken or not present.

Signed-off-by: Ruchika Gupta <ruchika.gupta@freescale.com>
Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
---
 board/freescale/common/qixis.c |   12 ++++++++++++
 board/freescale/common/qixis.h |    5 +++++
 2 files changed, 17 insertions(+)

Comments

Andy Fleming Jan. 23, 2013, 10:06 p.m.
>
> +u8 qixis_read_i2c(unsigned int reg)
> +{
> +       return i2c_reg_read(CONFIG_SYS_I2C_FPGA_ADDR, reg);
> +}
> +
> +void qixis_write_i2c(unsigned int reg, u8 value)
> +{
> +       u8 val = value;
> +       i2c_reg_write(CONFIG_SYS_I2C_FPGA_ADDR, reg, val);
> +}
> +



This breaks ALL other boards with QIXIS, as they don't all define
CONFIG_SYS_I2C_FPGA_ADDR.
Prabhakar Kushwaha Jan. 24, 2013, 3:28 a.m.
On 01/24/2013 03:36 AM, Andy Fleming wrote:
>
>
>     +u8 qixis_read_i2c(unsigned int reg)
>     +{
>     +       return i2c_reg_read(CONFIG_SYS_I2C_FPGA_ADDR, reg);
>     +}
>     +
>     +void qixis_write_i2c(unsigned int reg, u8 value)
>     +{
>     +       u8 val = value;
>     +       i2c_reg_write(CONFIG_SYS_I2C_FPGA_ADDR, reg, val);
>     +}
>     +
>
>
>
> This breaks ALL other boards with QIXIS, as they don't all define 
> CONFIG_SYS_I2C_FPGA_ADDR.

oh..
Then, I will put this code under #ifdef CONFIG_SYS_I2C_FPGA_ADDR and 
provide v2 version of this patch.

Regards,
Prabhakar

Patch hide | download patch | download mbox

diff --git a/board/freescale/common/qixis.c b/board/freescale/common/qixis.c
index c92902a..71d857d 100644
--- a/board/freescale/common/qixis.c
+++ b/board/freescale/common/qixis.c
@@ -14,8 +14,20 @@ 
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <i2c.h>
 #include "qixis.h"
 
+u8 qixis_read_i2c(unsigned int reg)
+{
+	return i2c_reg_read(CONFIG_SYS_I2C_FPGA_ADDR, reg);
+}
+
+void qixis_write_i2c(unsigned int reg, u8 value)
+{
+	u8 val = value;
+	i2c_reg_write(CONFIG_SYS_I2C_FPGA_ADDR, reg, val);
+}
+
 u8 qixis_read(unsigned int reg)
 {
 	void *p = (void *)QIXIS_BASE;
diff --git a/board/freescale/common/qixis.h b/board/freescale/common/qixis.h
index b98b180..f2e83f1 100644
--- a/board/freescale/common/qixis.h
+++ b/board/freescale/common/qixis.h
@@ -88,8 +88,13 @@  struct qixis {
 
 u8 qixis_read(unsigned int reg);
 void qixis_write(unsigned int reg, u8 value);
+u8 qixis_read_i2c(unsigned int reg);
+void qixis_write_i2c(unsigned int reg, u8 value);
 
 #define QIXIS_READ(reg) qixis_read(offsetof(struct qixis, reg))
 #define QIXIS_WRITE(reg, value) qixis_write(offsetof(struct qixis, reg), value)
+#define QIXIS_READ_I2C(reg) qixis_read_i2c(offsetof(struct qixis, reg))
+#define QIXIS_WRITE_I2C(reg, value) \
+			qixis_write_i2c(offsetof(struct qixis, reg), value)
 
 #endif