i2c: sh_i2c: Avoid using I2C prior to relocation
authorNobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Fri, 11 Oct 2013 07:23:54 +0000 (16:23 +0900)
committerHeiko Schocher <hs@denx.de>
Thu, 17 Oct 2013 05:20:25 +0000 (07:20 +0200)
If user uses the I2C in before the relocation, board of sh and rmobile
will not start. This will solve this problem.

Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
drivers/i2c/sh_i2c.c

index 58f8bf1bd5186514fee72dff28d64764e36431f6..808202c29940db690688dc84c53bb54b45fc4b02 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Copyright (C) 2011 Renesas Solutions Corp.
- * Copyright (C) 2011 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+ * Copyright (C) 2011, 2013 Renesas Solutions Corp.
+ * Copyright (C) 2011, 2013 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -8,6 +8,8 @@
 #include <common.h>
 #include <asm/io.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /* Every register is 32bit aligned, but only 8bits in size */
 #define ureg(name) u8 name; u8 __pad_##name##0; u16 __pad_##name##1;
 struct sh_i2c {
@@ -240,6 +242,10 @@ void i2c_init(int speed, int slaveaddr)
 {
        int num, denom, tmp;
 
+       /* No i2c support prior to relocation */
+       if (!(gd->flags & GD_FLG_RELOC))
+               return;
+
 #ifdef CONFIG_I2C_MULTI_BUS
        current_bus = 0;
 #endif