aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/blackfin/cpu/Makefile4
-rw-r--r--arch/blackfin/lib/ins.S1
-rw-r--r--arch/blackfin/lib/outs.S4
-rw-r--r--arch/blackfin/lib/u-boot.lds.S1
-rw-r--r--arch/powerpc/cpu/mpc5xxx/i2c.c43
5 files changed, 49 insertions, 4 deletions
diff --git a/arch/blackfin/cpu/Makefile b/arch/blackfin/cpu/Makefile
index 7c5400e90..4a9e577a8 100644
--- a/arch/blackfin/cpu/Makefile
+++ b/arch/blackfin/cpu/Makefile
@@ -29,10 +29,6 @@ COBJS-y += serial.o
COBJS-y += traps.o
COBJS-$(CONFIG_HW_WATCHDOG) += watchdog.o
-ifeq ($(CONFIG_BFIN_BOOT_MODE),BFIN_BOOT_BYPASS)
-COBJS-y += initcode.o
-endif
-
SRCS := $(SEXTRA:.o=.S) $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(COBJS-y) $(SOBJS))
EXTRA := $(addprefix $(obj),$(EXTRA))
diff --git a/arch/blackfin/lib/ins.S b/arch/blackfin/lib/ins.S
index 451959642..3ac6d8454 100644
--- a/arch/blackfin/lib/ins.S
+++ b/arch/blackfin/lib/ins.S
@@ -71,6 +71,7 @@
*/
#define COMMON_INS(func, ops) \
+.section .text._ins##func; \
ENTRY(_ins##func) \
P0 = R0; /* P0 = port */ \
CLI_OUTER; /* 3 instructions before first read access */ \
diff --git a/arch/blackfin/lib/outs.S b/arch/blackfin/lib/outs.S
index 90c6033c9..253d4c3e4 100644
--- a/arch/blackfin/lib/outs.S
+++ b/arch/blackfin/lib/outs.S
@@ -12,6 +12,7 @@
.align 2
+.section .text._outsl
ENTRY(_outsl)
P0 = R0; /* P0 = port */
P1 = R1; /* P1 = address */
@@ -23,6 +24,7 @@ ENTRY(_outsl)
RTS;
ENDPROC(_outsl)
+.section .text._outsw
ENTRY(_outsw)
P0 = R0; /* P0 = port */
P1 = R1; /* P1 = address */
@@ -34,6 +36,7 @@ ENTRY(_outsw)
RTS;
ENDPROC(_outsw)
+.section .text._outsb
ENTRY(_outsb)
P0 = R0; /* P0 = port */
P1 = R1; /* P1 = address */
@@ -45,6 +48,7 @@ ENTRY(_outsb)
RTS;
ENDPROC(_outsb)
+.section .text._outsw_8
ENTRY(_outsw_8)
P0 = R0; /* P0 = port */
P1 = R1; /* P1 = address */
diff --git a/arch/blackfin/lib/u-boot.lds.S b/arch/blackfin/lib/u-boot.lds.S
index 9163d20c2..f15c97ed0 100644
--- a/arch/blackfin/lib/u-boot.lds.S
+++ b/arch/blackfin/lib/u-boot.lds.S
@@ -147,6 +147,7 @@ SECTIONS
*(.dynbss)
*(.bss .bss.*)
*(COMMON)
+ . = ALIGN(4);
} >ram_data
__bss_vma = ADDR(.bss);
__bss_len = SIZEOF(.bss);
diff --git a/arch/powerpc/cpu/mpc5xxx/i2c.c b/arch/powerpc/cpu/mpc5xxx/i2c.c
index 4f7f71632..9fb330f82 100644
--- a/arch/powerpc/cpu/mpc5xxx/i2c.c
+++ b/arch/powerpc/cpu/mpc5xxx/i2c.c
@@ -30,6 +30,7 @@ DECLARE_GLOBAL_DATA_PTR;
#include <mpc5xxx.h>
#include <i2c.h>
+#if !defined(CONFIG_I2C_MULTI_BUS)
#if (CONFIG_SYS_I2C_MODULE == 2)
#define I2C_BASE MPC5XXX_I2C2
#elif (CONFIG_SYS_I2C_MODULE == 1)
@@ -37,6 +38,19 @@ DECLARE_GLOBAL_DATA_PTR;
#else
#error CONFIG_SYS_I2C_MODULE is not properly configured
#endif
+#else
+static unsigned int i2c_bus_num __attribute__ ((section (".data"))) =
+ CONFIG_SYS_SPD_BUS_NUM;
+static unsigned int i2c_bus_speed[2] = {CONFIG_SYS_I2C_SPEED,
+ CONFIG_SYS_I2C_SPEED};
+
+static const unsigned long i2c_dev[2] = {
+ MPC5XXX_I2C1,
+ MPC5XXX_I2C2,
+};
+
+#define I2C_BASE ((struct mpc5xxx_i2c *)i2c_dev[i2c_bus_num])
+#endif
#define I2C_TIMEOUT 6667
#define I2C_RETRIES 3
@@ -439,4 +453,33 @@ Done:
return ret;
}
+#if defined(CONFIG_I2C_MULTI_BUS)
+int i2c_set_bus_num(unsigned int bus)
+{
+ if (bus > 1)
+ return -1;
+
+ i2c_bus_num = bus;
+ i2c_init(i2c_bus_speed[bus], CONFIG_SYS_I2C_SLAVE);
+ return 0;
+}
+
+int i2c_set_bus_speed(unsigned int speed)
+{
+ i2c_init(speed, CONFIG_SYS_I2C_SLAVE);
+ return 0;
+}
+
+unsigned int i2c_get_bus_num(void)
+{
+ return i2c_bus_num;
+}
+
+unsigned int i2c_get_bus_speed(void)
+{
+ return i2c_bus_speed[i2c_bus_num];
+}
+#endif
+
+
#endif /* CONFIG_HARD_I2C */