From be129aa71882421ad0b50cd3762915d10ace27ad Mon Sep 17 00:00:00 2001 From: Matthias Weisser Date: Tue, 12 Jan 2010 12:06:31 +0100 Subject: [PATCH 01/12] video: Fix console display when splashscreen is used If a splashscreen is used the console scrolling used the scroll size as needed when a logo was displayed. This patch sets the scroll size to the whole screen if a splashscreen is shown. Signed-off-by: Matthias Weisser --- drivers/video/cfb_console.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index c07a26e3c0..49f0a2e040 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -260,7 +260,7 @@ void console_cursor (int state); #define CURSOR_ON #define CURSOR_OFF #define CURSOR_SET video_set_hw_cursor(console_col * VIDEO_FONT_WIDTH, \ - (console_row * VIDEO_FONT_HEIGHT) + VIDEO_LOGO_HEIGHT); + (console_row * VIDEO_FONT_HEIGHT) + video_logo_height); #endif /* CONFIG_VIDEO_HW_CURSOR */ #ifdef CONFIG_VIDEO_LOGO @@ -298,7 +298,7 @@ void console_cursor (int state); #define VIDEO_BURST_LEN (VIDEO_COLS/8) #ifdef CONFIG_VIDEO_LOGO -#define CONSOLE_ROWS ((VIDEO_ROWS - VIDEO_LOGO_HEIGHT) / VIDEO_FONT_HEIGHT) +#define CONSOLE_ROWS ((VIDEO_ROWS - video_logo_height) / VIDEO_FONT_HEIGHT) #else #define CONSOLE_ROWS (VIDEO_ROWS / VIDEO_FONT_HEIGHT) #endif @@ -349,6 +349,8 @@ static GraphicDevice *pGD; /* Pointer to Graphic array */ static void *video_fb_address; /* frame buffer address */ static void *video_console_address; /* console buffer start address */ +static int video_logo_height = VIDEO_LOGO_HEIGHT; + static int console_col = 0; /* cursor col */ static int console_row = 0; /* cursor row */ @@ -527,7 +529,7 @@ static inline void video_drawstring (int xx, int yy, unsigned char *s) static void video_putchar (int xx, int yy, unsigned char c) { - video_drawchars (xx, yy + VIDEO_LOGO_HEIGHT, &c, 1); + video_drawchars (xx, yy + video_logo_height, &c, 1); } /*****************************************************************************/ @@ -620,11 +622,11 @@ static void console_scrollup (void) #ifdef VIDEO_HW_BITBLT video_hw_bitblt (VIDEO_PIXEL_SIZE, /* bytes per pixel */ 0, /* source pos x */ - VIDEO_LOGO_HEIGHT + VIDEO_FONT_HEIGHT, /* source pos y */ + video_logo_height + VIDEO_FONT_HEIGHT, /* source pos y */ 0, /* dest pos x */ - VIDEO_LOGO_HEIGHT, /* dest pos y */ + video_logo_height, /* dest pos y */ VIDEO_VISIBLE_COLS, /* frame width */ - VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT - VIDEO_FONT_HEIGHT /* frame height */ + VIDEO_VISIBLE_ROWS - video_logo_height - VIDEO_FONT_HEIGHT /* frame height */ ); #else memcpyl (CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND, @@ -1101,7 +1103,7 @@ void logo_plot (void *screen, int width, int x, int y) int xcount, i; int skip = (width - VIDEO_LOGO_WIDTH) * VIDEO_PIXEL_SIZE; - int ycount = VIDEO_LOGO_HEIGHT; + int ycount = video_logo_height; unsigned char r, g, b, *logo_red, *logo_blue, *logo_green; unsigned char *source; unsigned char *dest = (unsigned char *)screen + @@ -1225,6 +1227,7 @@ static void *video_logo (void) #endif /* CONFIG_SPLASH_SCREEN_ALIGN */ if (video_display_bitmap (addr, x, y) == 0) { + video_logo_height = 0; return ((void *) (video_fb_address)); } } @@ -1249,7 +1252,7 @@ static void *video_logo (void) #ifdef CONFIG_CONSOLE_EXTRA_INFO { - int i, n = ((VIDEO_LOGO_HEIGHT - VIDEO_FONT_HEIGHT) / VIDEO_FONT_HEIGHT); + int i, n = ((video_logo_height - VIDEO_FONT_HEIGHT) / VIDEO_FONT_HEIGHT); for (i = 1; i < n; i++) { video_get_info_str (i, info); @@ -1278,7 +1281,7 @@ static void *video_logo (void) } #endif - return (video_fb_address + VIDEO_LOGO_HEIGHT * VIDEO_LINE_LEN); + return (video_fb_address + video_logo_height * VIDEO_LINE_LEN); } #endif From 1e67fb32fbdae7949bb423c9e20b3f77c0a61663 Mon Sep 17 00:00:00 2001 From: Thomas Chou Date: Tue, 16 Mar 2010 12:12:48 -0400 Subject: [PATCH 02/12] nios2: use generic unaligned.h Signed-off-by: Scott McNutt --- include/asm-nios2/unaligned.h | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 include/asm-nios2/unaligned.h diff --git a/include/asm-nios2/unaligned.h b/include/asm-nios2/unaligned.h new file mode 100644 index 0000000000..779117c4bc --- /dev/null +++ b/include/asm-nios2/unaligned.h @@ -0,0 +1,6 @@ +#ifndef _ASM_NIOS2_UNALIGNED_H +#define _ASM_NIOS2_UNALIGNED_H + +#include + +#endif /* _ASM_NIOS2_UNALIGNED_H */ From 67c7189dd35cb368ef665126fd17816581bd2e92 Mon Sep 17 00:00:00 2001 From: Renato Andreola Date: Tue, 16 Mar 2010 16:01:29 -0400 Subject: [PATCH 03/12] nios2: Added support to YANU UART Signed-off-by: Scott McNutt --- cpu/nios2/serial.c | 168 ++++++++++++++++++++++++++++++++++++++++++- include/nios2-yanu.h | 115 +++++++++++++++++++++++++++++ 2 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 include/nios2-yanu.h diff --git a/cpu/nios2/serial.c b/cpu/nios2/serial.c index 8bbb803a68..6c835af4b1 100644 --- a/cpu/nios2/serial.c +++ b/cpu/nios2/serial.c @@ -2,6 +2,9 @@ * (C) Copyright 2004, Psyent Corporation * Scott McNutt * + * YANU Support: + * Copyright 2010, Renato Andreola + * * See file CREDITS for list of people who contributed to this * project. * @@ -26,6 +29,7 @@ #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -74,10 +78,172 @@ int serial_getc (void) return (c); } +#elif defined(CONFIG_CONSOLE_YANU) +/*-----------------------------------------------------------------*/ +/* YANU Imagos serial port */ +/*-----------------------------------------------------------------*/ + +static yanu_uart_t *uart = (yanu_uart_t *)CONFIG_SYS_NIOS_CONSOLE; + +#if defined(CONFIG_SYS_NIOS_FIXEDBAUD) + +/* Everything's already setup for fixed-baud PTF assignment*/ + +void serial_setbrg (void) +{ + int n, k; + const unsigned max_uns = 0xFFFFFFFF; + unsigned best_n, best_m, baud; + + /* compute best N and M couple */ + best_n = YANU_MAX_PRESCALER_N; + for (n = YANU_MAX_PRESCALER_N; n >= 0; n--) { + if ((unsigned)CONFIG_SYS_CLK_FREQ / (1 << (n + 4)) >= + (unsigned)CONFIG_BAUDRATE) { + best_n = n; + break; + } + } + for (k = 0;; k++) { + if ((unsigned)CONFIG_BAUDRATE <= (max_uns >> (15+n-k))) + break; + } + best_m = + ((unsigned)CONFIG_BAUDRATE * (1 << (15 + n - k))) / + ((unsigned)CONFIG_SYS_CLK_FREQ >> k); + + baud = best_m + best_n * YANU_BAUDE; + writel(&uart->baud, baud); + + return; +} + +#else + +void serial_setbrg (void) +{ + int n, k; + const unsigned max_uns = 0xFFFFFFFF; + unsigned best_n, best_m, baud; + + /* compute best N and M couple */ + best_n = YANU_MAX_PRESCALER_N; + for (n = YANU_MAX_PRESCALER_N; n >= 0; n--) { + if ((unsigned)CONFIG_SYS_CLK_FREQ / (1 << (n + 4)) >= + gd->baudrate) { + best_n = n; + break; + } + } + for (k = 0;; k++) { + if (gd->baudrate <= (max_uns >> (15+n-k))) + break; + } + best_m = + (gd->baudrate * (1 << (15 + n - k))) / + ((unsigned)CONFIG_SYS_CLK_FREQ >> k); + + baud = best_m + best_n * YANU_BAUDE; + writel(&uart->baud, baud); + + return; +} + + +#endif /* CONFIG_SYS_NIOS_FIXEDBAUD */ + +int serial_init (void) +{ + unsigned action,control; + + /* status register cleanup */ + action = YANU_ACTION_RRRDY | + YANU_ACTION_RTRDY | + YANU_ACTION_ROE | + YANU_ACTION_RBRK | + YANU_ACTION_RFE | + YANU_ACTION_RPE | + YANU_ACTION_RFE | YANU_ACTION_RFIFO_CLEAR | YANU_ACTION_TFIFO_CLEAR; + + writel(&uart->action, action); + + /* control register cleanup */ + /* no interrupts enabled */ + /* one stop bit */ + /* hardware flow control disabled */ + /* 8 bits */ + control = (0x7 << YANU_CONTROL_BITS_POS); + /* enven parity just to be clean */ + control |= YANU_CONTROL_PAREVEN; + /* we set threshold for fifo */ + control |= YANU_CONTROL_RDYDLY * YANU_RXFIFO_DLY; + control |= YANU_CONTROL_TXTHR * YANU_TXFIFO_THR; + + writel(&uart->control, control); + + /* to set baud rate */ + serial_setbrg(); + + return (0); +} + + +/*----------------------------------------------------------------------- + * YANU CONSOLE + *---------------------------------------------------------------------*/ +void serial_putc (char c) +{ + int tx_chars; + unsigned status; + + if (c == '\n') + serial_putc ('\r'); + + while (1) { + status = readl(&uart->status); + tx_chars = (status>>YANU_TFIFO_CHARS_POS) + & ((1<data, (unsigned char)c); +} + +void serial_puts (const char *s) +{ + while (*s != 0) { + serial_putc (*s++); + } +} + + +int serial_tstc(void) +{ + unsigned status ; + + status = readl(&uart->status); + return (((status >> YANU_RFIFO_CHARS_POS) & + ((1 << YANU_RFIFO_CHARS_N) - 1)) > 0); +} + +int serial_getc (void) +{ + while (serial_tstc() == 0) + WATCHDOG_RESET (); + + /* first we pull the char */ + writel(&uart->action, YANU_ACTION_RFIFO_PULL); + + return(readl(&uart->data) & YANU_DATA_CHAR_MASK); +} + +#else /*CONFIG_CONSOLE_YANU*/ + /*------------------------------------------------------------------ * UART the serial port *-----------------------------------------------------------------*/ -#else static nios_uart_t *uart = (nios_uart_t *) CONFIG_SYS_NIOS_CONSOLE; diff --git a/include/nios2-yanu.h b/include/nios2-yanu.h new file mode 100644 index 0000000000..1c9a967932 --- /dev/null +++ b/include/nios2-yanu.h @@ -0,0 +1,115 @@ +/* + * (C) Copyright 2006, Imagos S.a.s + * Renato Andreola + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/************************************************************************* + * Altera NiosII YANU serial interface by Imagos + * please see http://www.opencores.org/project,yanu for + * information/downloads + ************************************************************************/ + +#ifndef __NIOS2_YANU_H__ +#define __NIOS2_YANU_H__ + +#define YANU_MAX_PRESCALER_N ((1 << 4) - 1) /* 15 */ +#define YANU_MAX_PRESCALER_M ((1 << 11) -1) /* 2047 */ +#define YANU_FIFO_SIZE (16) +#define YANU_RXFIFO_SIZE (YANU_FIFO_SIZE) +#define YANU_TXFIFO_SIZE (YANU_FIFO_SIZE) + +#define YANU_RXFIFO_DLY (10*11) +#define YANU_TXFIFO_THR (10) +#define YANU_DATA_CHAR_MASK (0xFF) + +/* data register */ +#define YANU_DATA_OFFSET (0) /* data register offset */ + +#define YANU_CONTROL_OFFSET (4) /* control register offset */ +/* interrupt enable */ +#define YANU_CONTROL_IE_RRDY (1<<0) /* ie on received character ready */ +#define YANU_CONTROL_IE_OE (1<<1) /* ie on rx overrun */ +#define YANU_CONTROL_IE_BRK (1<<2) /* ie on break detect */ +#define YANU_CONTROL_IE_FE (1<<3) /* ie on framing error */ +#define YANU_CONTROL_IE_PE (1<<4) /* ie on parity error */ +#define YANU_CONTROL_IE_TRDY (1<<5) /* ie interrupt on tranmitter ready */ +/* control bits */ +#define YANU_CONTROL_BITS_POS (6) /* bits number pos */ +#define YANU_CONTROL_BITS (1< Date: Thu, 25 Feb 2010 14:03:08 +0100 Subject: [PATCH 04/12] cmd_mmc remove \n This patch removes the \n after the help message for mmcinfo. This resulted in an empty line being displayed after the mmcinfo line when the help command was given. Signed-off-by: Frans Meulenbroeks --- common/cmd_mmc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c index 0e3393b5f4..c67c9cf728 100644 --- a/common/cmd_mmc.c +++ b/common/cmd_mmc.c @@ -136,7 +136,7 @@ int do_mmcinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) } U_BOOT_CMD(mmcinfo, 2, 0, do_mmcinfo, - "mmcinfo -- display MMC info\n", + "mmcinfo -- display MMC info", "" ); From 252b404d954f91499a4477a3e1064eb237ce5a1c Mon Sep 17 00:00:00 2001 From: Wolfgang Denk Date: Tue, 9 Mar 2010 14:27:25 +0100 Subject: [PATCH 05/12] Fix PCI_BASE_ADDRESS_5 handling in pci_hose_config_device() Signed-off-by: FUJITA Kazutoshi Signed-off-by: Acked-by: Stefan Roese --- drivers/pci/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index d6d2d6e4ad..cd64a87fc6 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -388,7 +388,7 @@ int pci_hose_config_device(struct pci_controller *hose, pci_hose_write_config_dword (hose, dev, PCI_COMMAND, 0); - for (bar = PCI_BASE_ADDRESS_0; bar < PCI_BASE_ADDRESS_5; bar += 4) { + for (bar = PCI_BASE_ADDRESS_0; bar <= PCI_BASE_ADDRESS_5; bar += 4) { pci_hose_write_config_dword (hose, dev, bar, 0xffffffff); pci_hose_read_config_dword (hose, dev, bar, &bar_response); From c96f86eefc215b67dd222694ce2b6f60e6a42b0b Mon Sep 17 00:00:00 2001 From: Wolfgang Denk Date: Sun, 17 Jan 2010 23:55:53 +0100 Subject: [PATCH 06/12] TFTP: allow for adjustable retransmission timout So far, TFTP negotiated a fixed retransmission timeout of 5 seconds. In some cases (busy networks, slow TFTP servers) this caused very slow transfers. A new environment variable "tftptimeout" allows to set this timeout. Lowering this value may make downloads succeed faster in networks with high packet loss rates or with unreliable TFTP servers. Signed-off-by: Wolfgang Denk Cc: Ben Warren Signed-off-by: Ben Warren --- README | 19 ++++++++++++++++--- net/tftp.c | 23 ++++++++++++++++++----- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/README b/README index 1158e24de7..940b507942 100644 --- a/README +++ b/README @@ -3005,7 +3005,9 @@ environment. As long as you don't save the environment you are working with an in-memory copy. In case the Flash area containing the environment is erased by accident, a default environment is provided. -Some configuration options can be set using Environment Variables: +Some configuration options can be set using Environment Variables. + +List of environment variables (most likely not complete): baudrate - see CONFIG_BAUDRATE @@ -3117,7 +3119,7 @@ Some configuration options can be set using Environment Variables: available network interfaces. It just stays at the currently selected interface. - netretry - When set to "no" each network operation will + netretry - When set to "no" each network operation will either succeed or fail without retrying. When set to "once" the network operation will fail when all the available network interfaces @@ -3133,7 +3135,18 @@ Some configuration options can be set using Environment Variables: tftpdstport - If this is set, the value is used for TFTP's UDP destination port instead of the Well Know Port 69. - vlan - When set to a value < 4095 the traffic over + tftpblocksize - Block size to use for TFTP transfers; if not set, + we use the TFTP server's default block size + + tftptimeout - Retransmission timeout for TFTP packets (in milli- + seconds, minimum value is 1000 = 1 second). Defines + when a packet is considered to be lost so it has to + be retransmitted. The default is 5000 = 5 seconds. + Lowering this value may make downloads succeed + faster in networks with high packet loss rates or + with unreliable TFTP servers. + + vlan - When set to a value < 4095 the traffic over Ethernet is encapsulated/received over 802.1q VLAN tagged frames. diff --git a/net/tftp.c b/net/tftp.c index a02463b003..ed559b71d5 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -211,7 +211,7 @@ TftpSend (void) pkt += 5 /*strlen("octet")*/ + 1; strcpy ((char *)pkt, "timeout"); pkt += 7 /*strlen("timeout")*/ + 1; - sprintf((char *)pkt, "%lu", TIMEOUT / 1000); + sprintf((char *)pkt, "%lu", TftpTimeoutMSecs / 1000); debug("send option \"timeout %s\"\n", (char *)pkt); pkt += strlen((char *)pkt) + 1; #ifdef CONFIG_TFTP_TSIZE @@ -413,7 +413,6 @@ TftpHandler (uchar * pkt, unsigned dest, unsigned src, unsigned len) } TftpLastBlock = TftpBlock; - TftpTimeoutMSecs = TIMEOUT; TftpTimeoutCountMax = TIMEOUT_COUNT; NetSetTimeout (TftpTimeoutMSecs, TftpTimeout); @@ -528,10 +527,25 @@ TftpStart (void) { char *ep; /* Environment pointer */ - /* Allow the user to choose tftpblocksize */ + /* + * Allow the user to choose TFTP blocksize and timeout. + * TFTP protocol has a minimal timeout of 1 second. + */ if ((ep = getenv("tftpblocksize")) != NULL) TftpBlkSizeOption = simple_strtol(ep, NULL, 10); - debug("tftp block size is %i\n", TftpBlkSizeOption); + + if ((ep = getenv("tftptimeout")) != NULL) + TftpTimeoutMSecs = simple_strtol(ep, NULL, 10); + + if (TftpTimeoutMSecs < 1000) { + printf("TFTP timeout (%ld ms) too low, " + "set minimum = 1000 ms\n", + TftpTimeoutMSecs); + TftpTimeoutMSecs = 1000; + } + + debug("TFTP blocksize = %i, timeout = %ld ms\n", + TftpBlkSizeOption, TftpTimeoutMSecs); TftpServerIP = NetServerIP; if (BootFile[0] == '\0') { @@ -588,7 +602,6 @@ TftpStart (void) puts ("Loading: *\b"); - TftpTimeoutMSecs = TftpRRQTimeoutMSecs; TftpTimeoutCountMax = TftpRRQTimeoutCountMax; NetSetTimeout (TftpTimeoutMSecs, TftpTimeout); From 99c006a320ceb9ea19135ac1512e4a81e8bebb72 Mon Sep 17 00:00:00 2001 From: Stefano Babic Date: Sat, 13 Mar 2010 21:09:00 +0100 Subject: [PATCH 07/12] mxcmmc: fix warnings due to access 32 bit registers with 16 bit accessors Some registers of the mxcmmc driver were accessed using 16 bit accessor functions, because only the LSB is significant. This is not needed and generates warnings. Signed-off-by: Stefano Babic --- drivers/mmc/mxcmmc.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/mmc/mxcmmc.c b/drivers/mmc/mxcmmc.c index d30717661f..59639539f3 100644 --- a/drivers/mmc/mxcmmc.c +++ b/drivers/mmc/mxcmmc.c @@ -136,14 +136,14 @@ static void mxcmci_softreset(struct mxcmci_host *host) int i; /* reset sequence */ - writew(STR_STP_CLK_RESET, &host->base->str_stp_clk); - writew(STR_STP_CLK_RESET | STR_STP_CLK_START_CLK, + writel(STR_STP_CLK_RESET, &host->base->str_stp_clk); + writel(STR_STP_CLK_RESET | STR_STP_CLK_START_CLK, &host->base->str_stp_clk); for (i = 0; i < 8; i++) - writew(STR_STP_CLK_START_CLK, &host->base->str_stp_clk); + writel(STR_STP_CLK_START_CLK, &host->base->str_stp_clk); - writew(0xff, &host->base->res_to); + writel(0xff, &host->base->res_to); } static void mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data) @@ -154,8 +154,8 @@ static void mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data) host->data = data; - writew(nob, &host->base->nob); - writew(blksz, &host->base->blk_len); + writel(nob, &host->base->nob); + writel(blksz, &host->base->blk_len); host->datasize = datasize; } @@ -185,9 +185,9 @@ static int mxcmci_start_cmd(struct mxcmci_host *host, struct mmc_cmd *cmd, return -EINVAL; } - writew(cmd->cmdidx, &host->base->cmd); + writel(cmd->cmdidx, &host->base->cmd); writel(cmd->cmdarg, &host->base->arg); - writew(cmdat, &host->base->cmd_dat_cont); + writel(cmdat, &host->base->cmd_dat_cont); return 0; } @@ -247,14 +247,14 @@ static int mxcmci_read_response(struct mxcmci_host *host, unsigned int stat) if (cmd->resp_type & MMC_RSP_PRESENT) { if (cmd->resp_type & MMC_RSP_136) { for (i = 0; i < 4; i++) { - a = readw(&host->base->res_fifo); - b = readw(&host->base->res_fifo); + a = readl(&host->base->res_fifo) & 0xFFFF; + b = readl(&host->base->res_fifo) & 0xFFFF; resp[i] = a << 16 | b; } } else { - a = readw(&host->base->res_fifo); - b = readw(&host->base->res_fifo); - c = readw(&host->base->res_fifo); + a = readl(&host->base->res_fifo) & 0xFFFF; + b = readl(&host->base->res_fifo) & 0xFFFF; + c = readl(&host->base->res_fifo) & 0xFFFF; resp[0] = a << 24 | b << 8 | c >> 8; } } @@ -445,7 +445,7 @@ static void mxcmci_set_clk_rate(struct mxcmci_host *host, unsigned int clk_ios) prescaler <<= 1; } - writew((prescaler << 4) | divider, &host->base->clk_rate); + writel((prescaler << 4) | divider, &host->base->clk_rate); } static void mxcmci_set_ios(struct mmc *mmc) @@ -458,9 +458,9 @@ static void mxcmci_set_ios(struct mmc *mmc) if (mmc->clock) { mxcmci_set_clk_rate(host, mmc->clock); - writew(STR_STP_CLK_START_CLK, &host->base->str_stp_clk); + writel(STR_STP_CLK_START_CLK, &host->base->str_stp_clk); } else { - writew(STR_STP_CLK_STOP_CLK, &host->base->str_stp_clk); + writel(STR_STP_CLK_STOP_CLK, &host->base->str_stp_clk); } host->clock = mmc->clock; @@ -472,7 +472,7 @@ static int mxcmci_init(struct mmc *mmc) mxcmci_softreset(host); - host->rev_no = readw(&host->base->rev_no); + host->rev_no = readl(&host->base->rev_no); if (host->rev_no != 0x400) { printf("wrong rev.no. 0x%08x. aborting.\n", host->rev_no); @@ -480,7 +480,7 @@ static int mxcmci_init(struct mmc *mmc) } /* recommended in data sheet */ - writew(0x2db4, &host->base->read_to); + writel(0x2db4, &host->base->read_to); writel(0, &host->base->int_cntr); From 5647f78d04174b0b99857d2a7cbf25141bd14a45 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Sat, 13 Mar 2010 23:14:45 +0100 Subject: [PATCH 08/12] mod change 755 => 644 for multiple files I executed 'find . -name "*.[chS]" -perm 755 -exec chmod 644 {} \;' Signed-off-by: Thomas Weber Add some more: neither Makefile nor config.mk need execute permissions. Signed-off-by: Wolfgang Denk --- board/spear/common/spr_lowlevel_init.S | 0 board/spear/common/spr_misc.c | 0 board/spear/spear300/Makefile | 0 board/spear/spear300/config.mk | 0 board/spear/spear300/spear300.c | 0 board/spear/spear310/Makefile | 0 board/spear/spear310/config.mk | 0 board/spear/spear310/spear310.c | 0 board/spear/spear320/Makefile | 0 board/spear/spear320/config.mk | 0 board/spear/spear320/spear320.c | 0 board/spear/spear600/Makefile | 0 board/spear/spear600/config.mk | 0 board/spear/spear600/spear600.c | 0 cpu/arm926ejs/spear/Makefile | 0 cpu/arm926ejs/spear/reset.c | 0 cpu/arm926ejs/spear/timer.c | 0 cpu/arm926ejs/versatile/timer.c | 0 drivers/i2c/Makefile | 0 drivers/i2c/spr_i2c.c | 0 drivers/mtd/Makefile | 0 drivers/mtd/nand/spr_nand.c | 0 drivers/mtd/spr_smi.c | 0 drivers/serial/usbtty.h | 0 drivers/usb/gadget/Makefile | 0 drivers/usb/gadget/spr_udc.c | 0 include/asm-arm/arch-spear/spr_gpt.h | 0 include/asm-arm/arch-spear/spr_i2c.h | 0 include/asm-arm/arch-spear/spr_smi.h | 0 include/asm-arm/arch-spear/spr_xloader_table.h | 0 include/configs/spear3xx.h | 0 include/configs/spear6xx.h | 0 include/usb/spr_udc.h | 0 lib_m68k/bootm.c | 0 34 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 board/spear/common/spr_lowlevel_init.S mode change 100755 => 100644 board/spear/common/spr_misc.c mode change 100755 => 100644 board/spear/spear300/Makefile mode change 100755 => 100644 board/spear/spear300/config.mk mode change 100755 => 100644 board/spear/spear300/spear300.c mode change 100755 => 100644 board/spear/spear310/Makefile mode change 100755 => 100644 board/spear/spear310/config.mk mode change 100755 => 100644 board/spear/spear310/spear310.c mode change 100755 => 100644 board/spear/spear320/Makefile mode change 100755 => 100644 board/spear/spear320/config.mk mode change 100755 => 100644 board/spear/spear320/spear320.c mode change 100755 => 100644 board/spear/spear600/Makefile mode change 100755 => 100644 board/spear/spear600/config.mk mode change 100755 => 100644 board/spear/spear600/spear600.c mode change 100755 => 100644 cpu/arm926ejs/spear/Makefile mode change 100755 => 100644 cpu/arm926ejs/spear/reset.c mode change 100755 => 100644 cpu/arm926ejs/spear/timer.c mode change 100755 => 100644 cpu/arm926ejs/versatile/timer.c mode change 100755 => 100644 drivers/i2c/Makefile mode change 100755 => 100644 drivers/i2c/spr_i2c.c mode change 100755 => 100644 drivers/mtd/Makefile mode change 100755 => 100644 drivers/mtd/nand/spr_nand.c mode change 100755 => 100644 drivers/mtd/spr_smi.c mode change 100755 => 100644 drivers/serial/usbtty.h mode change 100755 => 100644 drivers/usb/gadget/Makefile mode change 100755 => 100644 drivers/usb/gadget/spr_udc.c mode change 100755 => 100644 include/asm-arm/arch-spear/spr_gpt.h mode change 100755 => 100644 include/asm-arm/arch-spear/spr_i2c.h mode change 100755 => 100644 include/asm-arm/arch-spear/spr_smi.h mode change 100755 => 100644 include/asm-arm/arch-spear/spr_xloader_table.h mode change 100755 => 100644 include/configs/spear3xx.h mode change 100755 => 100644 include/configs/spear6xx.h mode change 100755 => 100644 include/usb/spr_udc.h mode change 100755 => 100644 lib_m68k/bootm.c diff --git a/board/spear/common/spr_lowlevel_init.S b/board/spear/common/spr_lowlevel_init.S old mode 100755 new mode 100644 diff --git a/board/spear/common/spr_misc.c b/board/spear/common/spr_misc.c old mode 100755 new mode 100644 diff --git a/board/spear/spear300/Makefile b/board/spear/spear300/Makefile old mode 100755 new mode 100644 diff --git a/board/spear/spear300/config.mk b/board/spear/spear300/config.mk old mode 100755 new mode 100644 diff --git a/board/spear/spear300/spear300.c b/board/spear/spear300/spear300.c old mode 100755 new mode 100644 diff --git a/board/spear/spear310/Makefile b/board/spear/spear310/Makefile old mode 100755 new mode 100644 diff --git a/board/spear/spear310/config.mk b/board/spear/spear310/config.mk old mode 100755 new mode 100644 diff --git a/board/spear/spear310/spear310.c b/board/spear/spear310/spear310.c old mode 100755 new mode 100644 diff --git a/board/spear/spear320/Makefile b/board/spear/spear320/Makefile old mode 100755 new mode 100644 diff --git a/board/spear/spear320/config.mk b/board/spear/spear320/config.mk old mode 100755 new mode 100644 diff --git a/board/spear/spear320/spear320.c b/board/spear/spear320/spear320.c old mode 100755 new mode 100644 diff --git a/board/spear/spear600/Makefile b/board/spear/spear600/Makefile old mode 100755 new mode 100644 diff --git a/board/spear/spear600/config.mk b/board/spear/spear600/config.mk old mode 100755 new mode 100644 diff --git a/board/spear/spear600/spear600.c b/board/spear/spear600/spear600.c old mode 100755 new mode 100644 diff --git a/cpu/arm926ejs/spear/Makefile b/cpu/arm926ejs/spear/Makefile old mode 100755 new mode 100644 diff --git a/cpu/arm926ejs/spear/reset.c b/cpu/arm926ejs/spear/reset.c old mode 100755 new mode 100644 diff --git a/cpu/arm926ejs/spear/timer.c b/cpu/arm926ejs/spear/timer.c old mode 100755 new mode 100644 diff --git a/cpu/arm926ejs/versatile/timer.c b/cpu/arm926ejs/versatile/timer.c old mode 100755 new mode 100644 diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile old mode 100755 new mode 100644 diff --git a/drivers/i2c/spr_i2c.c b/drivers/i2c/spr_i2c.c old mode 100755 new mode 100644 diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile old mode 100755 new mode 100644 diff --git a/drivers/mtd/nand/spr_nand.c b/drivers/mtd/nand/spr_nand.c old mode 100755 new mode 100644 diff --git a/drivers/mtd/spr_smi.c b/drivers/mtd/spr_smi.c old mode 100755 new mode 100644 diff --git a/drivers/serial/usbtty.h b/drivers/serial/usbtty.h old mode 100755 new mode 100644 diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile old mode 100755 new mode 100644 diff --git a/drivers/usb/gadget/spr_udc.c b/drivers/usb/gadget/spr_udc.c old mode 100755 new mode 100644 diff --git a/include/asm-arm/arch-spear/spr_gpt.h b/include/asm-arm/arch-spear/spr_gpt.h old mode 100755 new mode 100644 diff --git a/include/asm-arm/arch-spear/spr_i2c.h b/include/asm-arm/arch-spear/spr_i2c.h old mode 100755 new mode 100644 diff --git a/include/asm-arm/arch-spear/spr_smi.h b/include/asm-arm/arch-spear/spr_smi.h old mode 100755 new mode 100644 diff --git a/include/asm-arm/arch-spear/spr_xloader_table.h b/include/asm-arm/arch-spear/spr_xloader_table.h old mode 100755 new mode 100644 diff --git a/include/configs/spear3xx.h b/include/configs/spear3xx.h old mode 100755 new mode 100644 diff --git a/include/configs/spear6xx.h b/include/configs/spear6xx.h old mode 100755 new mode 100644 diff --git a/include/usb/spr_udc.h b/include/usb/spr_udc.h old mode 100755 new mode 100644 diff --git a/lib_m68k/bootm.c b/lib_m68k/bootm.c old mode 100755 new mode 100644 From a74908161a1b37d780d3a826a86807bbc50a3857 Mon Sep 17 00:00:00 2001 From: Anatolij Gustschin Date: Tue, 16 Mar 2010 15:29:33 +0100 Subject: [PATCH 09/12] console.c: fix problem with splashimage If a board uses cfb_console driver and splash image and also defines CONFIG_SILENT_CONSOLE, the user is locked out even if "silent" is not set. It is not possible to get any output, neither on vga console device nor on serial console after redirecting the output to the serial console, since the GD_FLG_SILENT flag remains set. Fix the problem by redirecting the output from frame buffer to serial console if splashimage is used. Only suppress the output if "silent" environment variable was set and don't set the GD_FLG_SILENT flag arbitrarily. Signed-off-by: Anatolij Gustschin --- common/console.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/common/console.c b/common/console.c index dc0d13b5a5..51c6fb6264 100644 --- a/common/console.c +++ b/common/console.c @@ -659,10 +659,14 @@ int console_init_r(void) #ifdef CONFIG_SPLASH_SCREEN /* * suppress all output if splash screen is enabled and we have - * a bmp to display + * a bmp to display. We redirect the output from frame buffer + * console to serial console in this case or suppress it if + * "silent" mode was requested. */ - if (getenv("splashimage") != NULL) - gd->flags |= GD_FLG_SILENT; + if (getenv("splashimage") != NULL) { + if (!(gd->flags & GD_FLG_SILENT)) + outputdev = search_device (DEV_FLAGS_OUTPUT, "serial"); + } #endif /* Scan devices looking for input and output devices */ From 51c2ac9bb574c1420b993615268392b0c1f829f6 Mon Sep 17 00:00:00 2001 From: Anatolij Gustschin Date: Tue, 16 Mar 2010 17:10:08 +0100 Subject: [PATCH 10/12] mpc5121: cpu/mpc512x/diu.c: fix warnings Fix warnings while compiling with CONFIG_VIDEO enabled: diu.c: In function 'video_hw_init': diu.c:158: warning: 'return' with no value, in function returning non-void diu.c:162: warning: format '%ld' expects type 'long int', but argument 6 has type 'int' diu.c:162: warning: format '%ld' expects type 'long int', but argument 7 has type 'int' Signed-off-by: Anatolij Gustschin --- cpu/mpc512x/diu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpu/mpc512x/diu.c b/cpu/mpc512x/diu.c index a24f39510e..ca459a101e 100644 --- a/cpu/mpc512x/diu.c +++ b/cpu/mpc512x/diu.c @@ -145,10 +145,10 @@ void *video_hw_init(void) struct fb_info *info; if (mpc5121_diu_init() < 0) - return; + return NULL; /* fill in Graphic device struct */ - sprintf(pGD->modeIdent, "%dx%dx%d %ldkHz %ldHz", + sprintf(pGD->modeIdent, "%dx%dx%d %dkHz %dHz", xres, yres, 32, 64, 60); pGD->frameAdrs = (unsigned int)fsl_fb_open(&info); From 322ff395c9aec7b87a2211fe4333fdf44377c564 Mon Sep 17 00:00:00 2001 From: Jeff Angielski Date: Wed, 17 Mar 2010 15:09:26 -0400 Subject: [PATCH 11/12] env: fix endian ordering in crc table The crc table was being built as little endian for big endian targets. This would cause fw_printenv to always fail with "Warning: Bad CRC, using default environment" messages. Signed-off-by: Jeff Angielski Acked-by: Joakim Tjernlund --- lib_generic/crc32.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_generic/crc32.c b/lib_generic/crc32.c index 468b3979ab..27335a3ed9 100644 --- a/lib_generic/crc32.c +++ b/lib_generic/crc32.c @@ -163,7 +163,7 @@ const uint32_t * ZEXPORT get_crc_table() #endif /* ========================================================================= */ -# ifdef __LITTLE_ENDIAN +# if __BYTE_ORDER == __LITTLE_ENDIAN # define DO_CRC(x) crc = tab[(crc ^ (x)) & 255] ^ (crc >> 8) # else # define DO_CRC(x) crc = tab[((crc >> 24) ^ (x)) & 255] ^ (crc << 8) From daa989b47297c9f73426783599c286ef3a1f3f49 Mon Sep 17 00:00:00 2001 From: Asen Dimov Date: Thu, 18 Mar 2010 13:41:47 +0200 Subject: [PATCH 12/12] correct a syntax typo in at91_matrix.h Signed-off-by: Asen Dimov --- include/asm-arm/arch-at91/at91_matrix.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/asm-arm/arch-at91/at91_matrix.h b/include/asm-arm/arch-at91/at91_matrix.h index 9b3c110f52..981ec2029c 100644 --- a/include/asm-arm/arch-at91/at91_matrix.h +++ b/include/asm-arm/arch-at91/at91_matrix.h @@ -80,7 +80,7 @@ typedef struct at91_matrix { u32 mrcr; /* 0x100 Master Remap Control */ u32 reserve4[3]; #if defined(CONFIG_AT91SAM9G45) - u32 ccr[52] /* 0x110 - 0x1E0 Chip Configuration */ + u32 ccr[52]; /* 0x110 - 0x1E0 Chip Configuration */ u32 womr; /* 0x1E4 Write Protect Mode */ u32 wpsr; /* 0x1E8 Write Protect Status */ u32 resg45_1[10];