diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/blackfin/cpu/Makefile | 4 | ||||
-rw-r--r-- | arch/blackfin/lib/ins.S | 1 | ||||
-rw-r--r-- | arch/blackfin/lib/outs.S | 4 | ||||
-rw-r--r-- | arch/blackfin/lib/u-boot.lds.S | 1 | ||||
-rw-r--r-- | arch/powerpc/cpu/mpc5xxx/i2c.c | 43 |
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 */ |