diff --git a/CHANGELOG b/CHANGELOG index 65608598e..32110df1f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,11 @@ Changes since U-Boot 1.0.1: ====================================================================== +* Fix PS/2 keyboard problem caused by statically initialized variable + pointing to a location in flash + +* Fix INCA-IP clock calculation: 400/3 = 133.3 MHz, not 130. + * The PS/2 mux on the BMS2003 board needs 450 ms after power on before we can access it; add delay in case we are faster (with no CF card inserted) diff --git a/cpu/mips/incaip_clock.c b/cpu/mips/incaip_clock.c index a042b8a6f..9f327594f 100644 --- a/cpu/mips/incaip_clock.c +++ b/cpu/mips/incaip_clock.c @@ -33,8 +33,8 @@ * * RETURNS: * 150.000.000 for 150 MHz -* 130.000.000. for 130 Mhz -* 100.000.000. for 100 Mhz +* 133.333.333 for 133 Mhz (= 400MHz/3) +* 100.000.000 for 100 Mhz (= 400MHz/4) * NOTE: * This functions should be used by the hardware driver to get the correct * frequency of the CPU. Don't use the macros, which are set to init the CPU @@ -55,7 +55,7 @@ uint incaip_get_cpuclk (void) if (*((volatile ulong *) INCA_IP_CGU_CGU_DIVCR) & 0x40) { /* Division value is 1/3, maximum CPU operating */ /* frequency is 133.3 MHz */ - return 130000000; + return 133333333; } else { /* Division value is 1/4, maximum CPU operating */ /* frequency is 100 MHz */ diff --git a/drivers/keyboard.c b/drivers/keyboard.c index 738ff9f15..a42468f0c 100644 --- a/drivers/keyboard.c +++ b/drivers/keyboard.c @@ -194,7 +194,7 @@ void handle_scancode(unsigned char scancode) case 0xBA: /* caps lock released */ return; /* just swallow */ } -#if 0 +#if 1 if((scancode&0x80)==0x80) /* key released */ return; #else diff --git a/drivers/ps2ser.c b/drivers/ps2ser.c index 71658d7ca..52f1db9ad 100644 --- a/drivers/ps2ser.c +++ b/drivers/ps2ser.c @@ -29,7 +29,7 @@ static int ps2ser_getc_hw(void); static void ps2ser_interrupt(void *dev_id); extern struct serial_state rs_table[]; /* in serial.c */ -static struct serial_state *state = rs_table + CONFIG_PS2SERIAL; +static struct serial_state *state; static u_char ps2buf[PS2BUF_SIZE]; static atomic_t ps2buf_cnt; @@ -49,8 +49,13 @@ static inline void ps2ser_out(int offset, int value) int ps2ser_init(void) { - int quot = state->baud_base / PS2SER_BAUD; - unsigned cval = 0x3; /* 8N1 - 8 data bits, no parity bits, 1 stop bit */ + int quot; + unsigned cval; + + state = rs_table + CONFIG_PS2SERIAL; + + quot = state->baud_base / PS2SER_BAUD; + cval = 0x3; /* 8N1 - 8 data bits, no parity bits, 1 stop bit */ /* Set speed, enable interrupts, enable FIFO */ diff --git a/include/configs/bms2003.h b/include/configs/bms2003.h index 40baad0fd..18170d443 100644 --- a/include/configs/bms2003.h +++ b/include/configs/bms2003.h @@ -78,7 +78,7 @@ "bootm $(kernel_addr) $(ramdisk_addr)\0" \ "net_nfs=tftp 200000 $(bootfile);run nfsargs addip;bootm\0" \ "rootpath=/opt/eldk/ppc_8xx\0" \ - "bootfile=/tftpboot/TQM860L/uImage\0" \ + "bootfile=/tftpboot/BMS/uImage\0" \ "kernel_addr=40040000\0" \ "ramdisk_addr=40100000\0" \ ""