U-Boot
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
November 2011
- 402 participants
- 965 discussions
Albert,
Please pull u-boot-ti/master
Regards,
Sandeep
The following changes since commit ce5207e191c59b3135303fd03b98dd2ac3701ba2:
Kyle Moffett (1):
e1000: Allow direct access to the E1000 SPI EEPROM device
are available in the git repository at:
git://git.denx.de/u-boot-ti.git master
Bastian Ruppert (4):
Davinci: ea20: set console on UART0
Davinci: ea20: set GPIOs to hold MII-Phy in reset and set UART0-Switch for console
Davinci: ea20: add gpio for keeping power on in board_late_init
Davinci: ea20: add gpios for LCD backlight control
Christian Riesch (1):
arm, davinci: Add function lpsc_syncreset()
Heiko Schocher (13):
arm, davinci: replace CONFIG_PRELOADER with CONFIG_SPL_BUILD
arm, arm926: fix missing symbols in NAND_SPL mode
usb, davinci: add enable_vbus() weak function
arm, usb, davinci: make USBPHY_CTL register configurable
net, davinci_emac: make clock divider in MDIO control register configurable
spl: add option for adding post memory test to the SPL framework
arm, davinci: add support for new spl framework
spl, nand: add 4bit HW ecc oob first nand_read_page function
arm, davinci: add header files for dm365
arm, davinci: add lowlevel function for dm365 soc
arm926ejs, davinci: add cpuinfo for dm365
arm926ejs, davinci: add missing spi defines for dm365
arm, davinci: add cam_enc_4xx support
Ilya Yanok (2):
davinci_emac: compilation fix, phy is array now
omap/spl: actually enable the console
Sanjeev Premi (7):
omap3evm: Set environment variable 'ethaddr'
omap3evm: Reorder related config options
omap3evm: Prepare to split configuration
omap3evm: move common config options to new file
omap3evm: Add (quick) configuration for MMC/SD only
omap3evm: Add (quick) configuration for NAND only
omap3evm: fix errors caused by multiple definitions
Stefano Babic (8):
Davinci: ea20: Add NAND support
Davinci: ea20: Add early init to get early output from console
Davinci: ea20: Add default U-Boot environment
ARM: Davinci: added missing registers to hardware.h
VIDEO: davinci: add framebuffer to da8xx
Davinci: ea20: added video support
Davinci: ea20: added I2C support
Davinci: ea20: added PREBOOT to configuration
MAINTAINERS | 1 +
Makefile | 8 +-
README | 5 +
arch/arm/cpu/arm926ejs/davinci/Makefile | 5 +
arch/arm/cpu/arm926ejs/davinci/cpu.c | 27 +-
arch/arm/cpu/arm926ejs/davinci/dm365_lowlevel.c | 439 ++++++++++
arch/arm/cpu/arm926ejs/davinci/psc.c | 20 +-
arch/arm/cpu/arm926ejs/davinci/spl.c | 63 ++
arch/arm/cpu/arm926ejs/start.S | 31 +-
arch/arm/cpu/armv7/omap-common/spl.c | 2 +
arch/arm/include/asm/arch-davinci/aintc_defs.h | 50 ++
arch/arm/include/asm/arch-davinci/da8xx-fb.h | 126 +++
arch/arm/include/asm/arch-davinci/dm365_lowlevel.h | 41 +
arch/arm/include/asm/arch-davinci/hardware.h | 27 +-
arch/arm/include/asm/arch-davinci/pll_defs.h | 84 ++
arch/arm/include/asm/arch-davinci/psc_defs.h | 86 ++
arch/arm/include/asm/arch-davinci/syscfg_defs.h | 66 ++
board/ait/cam_enc_4xx/Makefile | 46 ++
board/ait/cam_enc_4xx/cam_enc_4xx.c | 446 +++++++++++
board/ait/cam_enc_4xx/config.mk | 15 +
board/ait/cam_enc_4xx/u-boot-spl.lds | 73 ++
board/ait/cam_enc_4xx/ublimage.cfg | 48 ++
board/davinci/common/misc.c | 2 +-
board/davinci/ea20/ea20.c | 205 ++++-
board/ti/evm/evm.c | 15 +
boards.cfg | 3 +
doc/README.SPL | 2 +
doc/README.davinci.nand_spl | 141 ++++
drivers/mtd/nand/Makefile | 3 +
drivers/mtd/nand/nand_spl_load.c | 56 ++
drivers/mtd/nand/nand_spl_simple.c | 43 +-
drivers/net/davinci_emac.c | 11 +-
drivers/usb/musb/davinci.c | 20 +-
drivers/video/Makefile | 1 +
drivers/video/da8xx-fb.c | 846 ++++++++++++++++++++
include/configs/cam_enc_4xx.h | 453 +++++++++++
include/configs/ea20.h | 126 +++-
include/configs/omap3_evm.h | 331 ++-------
include/configs/omap3_evm_common.h | 292 +++++++
include/configs/omap3_evm_quick_mmc.h | 91 +++
include/configs/omap3_evm_quick_nand.h | 79 ++
spl/Makefile | 1 +
tools/ublimage.h | 2 +-
43 files changed, 4098 insertions(+), 334 deletions(-)
create mode 100644 arch/arm/cpu/arm926ejs/davinci/dm365_lowlevel.c
create mode 100644 arch/arm/cpu/arm926ejs/davinci/spl.c
create mode 100644 arch/arm/include/asm/arch-davinci/aintc_defs.h
create mode 100644 arch/arm/include/asm/arch-davinci/da8xx-fb.h
create mode 100644 arch/arm/include/asm/arch-davinci/dm365_lowlevel.h
create mode 100644 arch/arm/include/asm/arch-davinci/pll_defs.h
create mode 100644 arch/arm/include/asm/arch-davinci/psc_defs.h
create mode 100644 arch/arm/include/asm/arch-davinci/syscfg_defs.h
create mode 100644 board/ait/cam_enc_4xx/Makefile
create mode 100644 board/ait/cam_enc_4xx/cam_enc_4xx.c
create mode 100644 board/ait/cam_enc_4xx/config.mk
create mode 100644 board/ait/cam_enc_4xx/u-boot-spl.lds
create mode 100644 board/ait/cam_enc_4xx/ublimage.cfg
create mode 100644 doc/README.davinci.nand_spl
create mode 100644 drivers/mtd/nand/nand_spl_load.c
create mode 100644 drivers/video/da8xx-fb.c
create mode 100644 include/configs/cam_enc_4xx.h
create mode 100644 include/configs/omap3_evm_common.h
create mode 100644 include/configs/omap3_evm_quick_mmc.h
create mode 100644 include/configs/omap3_evm_quick_nand.h
6
12

[U-Boot] [PATCH 0/2] powerpc, mpc83xx: mpc83xx.h cleanup and enhancement
by Heiko Schocher 03 Nov '11
by Heiko Schocher 03 Nov '11
03 Nov '11
patches are checkpatch clean, and a "MAKEALL -c mpc83xx"
compiles clean.
Heiko Schocher (2):
cosmetic, powerpc, mpc83xx: checkpatch cleanup
powerpc, mpc83xx: add DDR SDRAM Timing Configuration 3 definitions
Cc: Kim Phillips <kim.phillips(a)freescale.com>
include/mpc83xx.h | 394 +++++++++++++++++++++++++++++++++++------------------
1 files changed, 262 insertions(+), 132 deletions(-)
--
1.7.6
2
3

[U-Boot] [PATCH] powerpc/83xx: move km 83xx specific i2c code to km83xx_i2c
by Holger Brunck 03 Nov '11
by Holger Brunck 03 Nov '11
03 Nov '11
The common code should be valid for more than one architecture.
Therefore this code was reorganized and moved to the new
file km83xx_i2c.c
Signed-off-by: Holger Brunck <holger.brunck(a)keymile.com>
cc: Kim Phillips <kim.phillips(a)freescale.com>
---
board/keymile/common/common.c | 71 +++---------------------------
board/keymile/common/common.h | 3 +
board/keymile/km83xx/Makefile | 2 +-
board/keymile/km83xx/km83xx_i2c.c | 88 +++++++++++++++++++++++++++++++++++++
4 files changed, 98 insertions(+), 66 deletions(-)
create mode 100644 board/keymile/km83xx/km83xx_i2c.c
diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c
index fce9d58..d6dbec7 100644
--- a/board/keymile/common/common.c
+++ b/board/keymile/common/common.c
@@ -43,7 +43,10 @@
#include <i2c.h>
#endif
+#if !defined(CONFIG_MPC83xx)
static void i2c_write_start_seq(void);
+#endif
+
DECLARE_GLOBAL_DATA_PTR;
/*
@@ -81,9 +84,7 @@ int set_km_env(void)
return 0;
}
-#define DELAY_ABORT_SEQ 62 /* @200kHz 9 clocks = 44us, 62us is ok */
-#define DELAY_HALF_PERIOD (500 / (CONFIG_SYS_I2C_SPEED / 1000))
-
+#if defined(CONFIG_SYS_I2C_INIT_BOARD)
#if !defined(CONFIG_MPC83xx)
static void i2c_write_start_seq(void)
{
@@ -163,68 +164,6 @@ int i2c_make_abort(void)
#endif
return ret;
}
-#endif /* !MPC83xx */
-
-#if defined(CONFIG_MPC83xx)
-static void i2c_write_start_seq(void)
-{
- struct fsl_i2c *dev;
- dev = (struct fsl_i2c *) (CONFIG_SYS_IMMR + CONFIG_SYS_I2C_OFFSET);
- udelay(DELAY_ABORT_SEQ);
- out_8(&dev->cr, (I2C_CR_MEN | I2C_CR_MSTA));
- udelay(DELAY_ABORT_SEQ);
- out_8(&dev->cr, (I2C_CR_MEN));
-}
-
-int i2c_make_abort(void)
-{
- struct fsl_i2c *dev;
- dev = (struct fsl_i2c *) (CONFIG_SYS_IMMR + CONFIG_SYS_I2C_OFFSET);
- uchar dummy;
- uchar last;
- int nbr_read = 0;
- int i = 0;
- int ret = 0;
-
- /* wait after each operation to finsh with a delay */
- out_8(&dev->cr, (I2C_CR_MSTA));
- udelay(DELAY_ABORT_SEQ);
- out_8(&dev->cr, (I2C_CR_MEN | I2C_CR_MSTA));
- udelay(DELAY_ABORT_SEQ);
- dummy = in_8(&dev->dr);
- udelay(DELAY_ABORT_SEQ);
- last = in_8(&dev->dr);
- nbr_read++;
-
- /*
- * do read until the last bit is 1, but stop if the full eeprom is
- * read.
- */
- while (((last & 0x01) != 0x01) &&
- (nbr_read < CONFIG_SYS_IVM_EEPROM_MAX_LEN)) {
- udelay(DELAY_ABORT_SEQ);
- last = in_8(&dev->dr);
- nbr_read++;
- }
- if ((last & 0x01) != 0x01)
- ret = -2;
- if ((last != 0xff) || (nbr_read > 1))
- printf("[INFO] i2c abort after %d bytes (0x%02x)\n",
- nbr_read, last);
- udelay(DELAY_ABORT_SEQ);
- out_8(&dev->cr, (I2C_CR_MEN));
- udelay(DELAY_ABORT_SEQ);
- /* clear status reg */
- out_8(&dev->sr, 0);
-
- for (i = 0; i < 5; i++)
- i2c_write_start_seq();
- if (ret != 0)
- printf("[ERROR] i2c abort failed after %d bytes (0x%02x)\n",
- nbr_read, last);
-
- return ret;
-}
#endif
/**
@@ -236,6 +175,8 @@ void i2c_init_board(void)
/* Now run the AbortSequence() */
i2c_make_abort();
}
+#endif
+
#if !defined(MACH_TYPE_KM_KIRKWOOD)
int ethernet_present(void)
diff --git a/board/keymile/common/common.h b/board/keymile/common/common.h
index 0fb19cf..6c1f640 100644
--- a/board/keymile/common/common.h
+++ b/board/keymile/common/common.h
@@ -136,6 +136,9 @@ int fdt_get_node_and_value(void *blob,
char *propname,
void **var);
+#define DELAY_ABORT_SEQ 62 /* @200kHz 9 clocks = 44us, 62us is ok */
+#define DELAY_HALF_PERIOD (500 / (CONFIG_SYS_I2C_SPEED / 1000))
+
int i2c_soft_read_pin(void);
int i2c_make_abort(void);
#endif /* __KEYMILE_COMMON_H */
diff --git a/board/keymile/km83xx/Makefile b/board/keymile/km83xx/Makefile
index 7bf64b4..01d87e6 100644
--- a/board/keymile/km83xx/Makefile
+++ b/board/keymile/km83xx/Makefile
@@ -28,7 +28,7 @@ endif
LIB = $(obj)lib$(BOARD).o
-COBJS += $(BOARD).o ../common/common.o ../common/ivm.o
+COBJS += $(BOARD).o ../common/common.o ../common/ivm.o $(BOARD)_i2c.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
OBJS := $(addprefix $(obj),$(COBJS))
diff --git a/board/keymile/km83xx/km83xx_i2c.c b/board/keymile/km83xx/km83xx_i2c.c
new file mode 100644
index 0000000..be17775
--- /dev/null
+++ b/board/keymile/km83xx/km83xx_i2c.c
@@ -0,0 +1,88 @@
+/*
+ * (C) Copyright 2011
+ * Holger Brunck, Keymile GmbH Hannover, holger.brunck(a)keymile.com
+ *
+ * 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
+ */
+
+#include <common.h>
+#include <i2c.h>
+#include <asm/io.h>
+#include <linux/ctype.h>
+#include "../common/common.h"
+
+static void i2c_write_start_seq(void)
+{
+ struct fsl_i2c *dev;
+ dev = (struct fsl_i2c *) (CONFIG_SYS_IMMR + CONFIG_SYS_I2C_OFFSET);
+ udelay(DELAY_ABORT_SEQ);
+ out_8(&dev->cr, (I2C_CR_MEN | I2C_CR_MSTA));
+ udelay(DELAY_ABORT_SEQ);
+ out_8(&dev->cr, (I2C_CR_MEN));
+}
+
+int i2c_make_abort(void)
+{
+ struct fsl_i2c *dev;
+ dev = (struct fsl_i2c *) (CONFIG_SYS_IMMR + CONFIG_SYS_I2C_OFFSET);
+ uchar dummy;
+ uchar last;
+ int nbr_read = 0;
+ int i = 0;
+ int ret = 0;
+
+ /* wait after each operation to finsh with a delay */
+ out_8(&dev->cr, (I2C_CR_MSTA));
+ udelay(DELAY_ABORT_SEQ);
+ out_8(&dev->cr, (I2C_CR_MEN | I2C_CR_MSTA));
+ udelay(DELAY_ABORT_SEQ);
+ dummy = in_8(&dev->dr);
+ udelay(DELAY_ABORT_SEQ);
+ last = in_8(&dev->dr);
+ nbr_read++;
+
+ /*
+ * do read until the last bit is 1, but stop if the full eeprom is
+ * read.
+ */
+ while (((last & 0x01) != 0x01) &&
+ (nbr_read < CONFIG_SYS_IVM_EEPROM_MAX_LEN)) {
+ udelay(DELAY_ABORT_SEQ);
+ last = in_8(&dev->dr);
+ nbr_read++;
+ }
+ if ((last & 0x01) != 0x01)
+ ret = -2;
+ if ((last != 0xff) || (nbr_read > 1))
+ printf("[INFO] i2c abort after %d bytes (0x%02x)\n",
+ nbr_read, last);
+ udelay(DELAY_ABORT_SEQ);
+ out_8(&dev->cr, (I2C_CR_MEN));
+ udelay(DELAY_ABORT_SEQ);
+ /* clear status reg */
+ out_8(&dev->sr, 0);
+
+ for (i = 0; i < 5; i++)
+ i2c_write_start_seq();
+ if (ret != 0)
+ printf("[ERROR] i2c abort failed after %d bytes (0x%02x)\n",
+ nbr_read, last);
+
+ return ret;
+}
--
1.7.1
2
2
Make checkpatch-clean..
Signed-off-by: Wolfgang Denk <wd(a)denx.de>
---
post/post.c | 59 +++++++++++++++++++++++++++--------------------------------
1 files changed, 27 insertions(+), 32 deletions(-)
diff --git a/post/post.c b/post/post.c
index dc9c0f2..ab8e959 100644
--- a/post/post.c
+++ b/post/post.c
@@ -48,9 +48,8 @@ int post_init_f(void)
for (i = 0; i < post_list_size; i++) {
struct post_test *test = post_list + i;
- if (test->init_f && test->init_f()) {
+ if (test->init_f && test->init_f())
res = -1;
- }
}
gd->post_init_f_time = post_time_ms(0);
@@ -106,7 +105,7 @@ void post_bootmode_init(void)
newword = BOOTMODE_MAGIC | POST_NORMAL;
else
/* Use old value */
- newword = post_word_load () & ~POST_COLDBOOT;
+ newword = post_word_load() & ~POST_COLDBOOT;
if (bootmode == 0)
/* We are booting after power-on */
@@ -153,9 +152,9 @@ void post_output_backlog(void)
for (j = 0; j < post_list_size; j++) {
if (gd->post_log_word & (post_list[j].testid)) {
- post_log ("POST %s ", post_list[j].cmd);
+ post_log("POST %s ", post_list[j].cmd);
if (gd->post_log_res & post_list[j].testid)
- post_log ("PASSED\n");
+ post_log("PASSED\n");
else {
post_log("FAILED\n");
show_boot_progress(-31);
@@ -199,12 +198,11 @@ static void post_get_env_flags(int *test_flags)
int i, j;
for (i = 0; i < varnum; i++) {
- if (getenv_f(var[i], list, sizeof (list)) <= 0)
+ if (getenv_f(var[i], list, sizeof(list)) <= 0)
continue;
- for (j = 0; j < post_list_size; j++) {
+ for (j = 0; j < post_list_size; j++)
test_flags[j] &= ~flag[i];
- }
last = 0;
name = list;
@@ -222,14 +220,14 @@ static void post_get_env_flags(int *test_flags)
*s = 0;
for (j = 0; j < post_list_size; j++) {
- if (strcmp (post_list[j].cmd, name) == 0) {
+ if (strcmp(post_list[j].cmd, name) == 0) {
test_flags[j] |= flag[i];
break;
}
}
if (j == post_list_size)
- printf ("No such test: %s\n", name);
+ printf("No such test: %s\n", name);
name = s + 1;
}
@@ -264,7 +262,7 @@ static int post_run_single(struct post_test *test,
{
if ((flags & test_flags & POST_ALWAYS) &&
(flags & test_flags & POST_MEM)) {
- WATCHDOG_RESET ();
+ WATCHDOG_RESET();
if (!(flags & POST_REBOOT)) {
if ((test_flags & POST_REBOOT) &&
@@ -283,11 +281,10 @@ static int post_run_single(struct post_test *test,
show_post_progress(i, POST_BEFORE, POST_FAILED);
if (test_flags & POST_PREREL) {
- if ((*test->test) (flags) == 0) {
+ if ((*test->test)(flags) == 0) {
post_log_mark_succ(test->testid);
show_post_progress(i, POST_AFTER, POST_PASSED);
- }
- else {
+ } else {
show_post_progress(i, POST_AFTER, POST_FAILED);
if (test_flags & POST_CRITICAL)
gd->flags |= GD_FLG_POSTFAIL;
@@ -309,9 +306,8 @@ static int post_run_single(struct post_test *test,
}
}
- if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL)) {
+ if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL))
post_bootmode_test_off();
- }
return 0;
} else {
@@ -319,7 +315,7 @@ static int post_run_single(struct post_test *test,
}
}
-int post_run (char *name, int flags)
+int post_run(char *name, int flags)
{
unsigned int i;
int test_flags[POST_MAX_NUMBER];
@@ -366,7 +362,7 @@ int post_run (char *name, int flags)
return 0;
} else {
for (i = 0; i < post_list_size; i++) {
- if (strcmp (post_list[i].cmd, name) == 0)
+ if (strcmp(post_list[i].cmd, name) == 0)
break;
}
@@ -396,7 +392,7 @@ static int post_info_single(struct post_test *test, int full)
}
}
-int post_info (char *name)
+int post_info(char *name)
{
unsigned int i;
@@ -407,15 +403,14 @@ int post_info (char *name)
return 0;
} else {
for (i = 0; i < post_list_size; i++) {
- if (strcmp (post_list[i].cmd, name) == 0)
+ if (strcmp(post_list[i].cmd, name) == 0)
break;
}
- if (i < post_list_size) {
+ if (i < post_list_size)
return post_info_single(post_list + i, 1);
- } else {
+ else
return -1;
- }
}
}
@@ -425,13 +420,13 @@ int post_log(char *format, ...)
uint i;
char printbuffer[CONFIG_SYS_PBSIZE];
- va_start (args, format);
+ va_start(args, format);
/* For this to work, printbuffer must be larger than
* anything we ever want to print.
*/
- i = vsprintf (printbuffer, format, args);
- va_end (args);
+ i = vsprintf(printbuffer, format, args);
+ va_end(args);
#ifdef CONFIG_LOGBUFFER
/* Send to the logbuffer */
@@ -457,32 +452,32 @@ void post_reloc(void)
struct post_test *test = post_list + i;
if (test->name) {
- addr = (ulong) (test->name) + gd->reloc_off;
+ addr = (ulong)(test->name) + gd->reloc_off;
test->name = (char *)addr;
}
if (test->cmd) {
- addr = (ulong) (test->cmd) + gd->reloc_off;
+ addr = (ulong)(test->cmd) + gd->reloc_off;
test->cmd = (char *)addr;
}
if (test->desc) {
- addr = (ulong) (test->desc) + gd->reloc_off;
+ addr = (ulong)(test->desc) + gd->reloc_off;
test->desc = (char *)addr;
}
if (test->test) {
- addr = (ulong) (test->test) + gd->reloc_off;
+ addr = (ulong)(test->test) + gd->reloc_off;
test->test = (int (*)(int flags)) addr;
}
if (test->init_f) {
- addr = (ulong) (test->init_f) + gd->reloc_off;
+ addr = (ulong)(test->init_f) + gd->reloc_off;
test->init_f = (int (*)(void)) addr;
}
if (test->reloc) {
- addr = (ulong) (test->reloc) + gd->reloc_off;
+ addr = (ulong)(test->reloc) + gd->reloc_off;
test->reloc = (void (*)(void)) addr;
test->reloc();
--
1.7.6.4
2
6
Make file acceptable to checkpatch.
This is only a basic clean up to the extend possible without any real
changes to the source code. Warnings due to line over 80 characters
were accepted because these affect only printf()s with user visible
strings. No attempts were made to fix warnings about volatile and
externs - these need a more thorough cleanup.
Signed-off-by: Wolfgang Denk <wd(a)denx.de>
---
common/cmd_ide.c | 1714 ++++++++++++++++++++++++++++--------------------------
1 files changed, 874 insertions(+), 840 deletions(-)
diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index 1fc0377..bbede1c 100644
--- a/common/cmd_ide.c
+++ b/common/cmd_ide.c
@@ -1,5 +1,5 @@
/*
- * (C) Copyright 2000-2005
+ * (C) Copyright 2000-2011
* Wolfgang Denk, DENX Software Engineering, wd(a)denx.de.
*
* See file CREDITS for list of people who contributed to this
@@ -119,7 +119,6 @@ ulong ide_bus_offset[CONFIG_SYS_IDE_MAXBUS] = {
#endif
};
-
static int ide_bus_ok[CONFIG_SYS_IDE_MAXBUS];
block_dev_desc_t ide_dev_desc[CONFIG_SYS_IDE_MAXDEVICE];
@@ -173,176 +172,167 @@ static void set_pcmcia_timing (int pmode);
/* ------------------------------------------------------------------------- */
-int do_ide (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+int do_ide(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
{
- int rcode = 0;
-
- switch (argc) {
- case 0:
- case 1:
- return cmd_usage(cmdtp);
- case 2:
- if (strncmp(argv[1],"res",3) == 0) {
- puts ("\nReset IDE"
+ int rcode = 0;
+
+ switch (argc) {
+ case 0:
+ case 1:
+ return cmd_usage(cmdtp);
+ case 2:
+ if (strncmp(argv[1], "res", 3) == 0) {
+ puts("\nReset IDE"
#ifdef CONFIG_IDE_8xx_DIRECT
- " on PCMCIA " PCMCIA_SLOT_MSG
+ " on PCMCIA " PCMCIA_SLOT_MSG
#endif
- ": ");
+ ": ");
- ide_init ();
- return 0;
- } else if (strncmp(argv[1],"inf",3) == 0) {
- int i;
+ ide_init();
+ return 0;
+ } else if (strncmp(argv[1], "inf", 3) == 0) {
+ int i;
- putc ('\n');
+ putc('\n');
- for (i=0; i<CONFIG_SYS_IDE_MAXDEVICE; ++i) {
- if (ide_dev_desc[i].type==DEV_TYPE_UNKNOWN)
- continue; /* list only known devices */
- printf ("IDE device %d: ", i);
- dev_print(&ide_dev_desc[i]);
- }
- return 0;
+ for (i = 0; i < CONFIG_SYS_IDE_MAXDEVICE; ++i) {
+ if (ide_dev_desc[i].type == DEV_TYPE_UNKNOWN)
+ continue; /* list only known devices */
+ printf("IDE device %d: ", i);
+ dev_print(&ide_dev_desc[i]);
+ }
+ return 0;
- } else if (strncmp(argv[1],"dev",3) == 0) {
- if ((curr_device < 0) || (curr_device >= CONFIG_SYS_IDE_MAXDEVICE)) {
- puts ("\nno IDE devices available\n");
- return 1;
- }
- printf ("\nIDE device %d: ", curr_device);
- dev_print(&ide_dev_desc[curr_device]);
- return 0;
- } else if (strncmp(argv[1],"part",4) == 0) {
- int dev, ok;
-
- for (ok=0, dev=0; dev<CONFIG_SYS_IDE_MAXDEVICE; ++dev) {
- if (ide_dev_desc[dev].part_type!=PART_TYPE_UNKNOWN) {
- ++ok;
- if (dev)
- putc ('\n');
- print_part(&ide_dev_desc[dev]);
+ } else if (strncmp(argv[1], "dev", 3) == 0) {
+ if ((curr_device < 0)
+ || (curr_device >= CONFIG_SYS_IDE_MAXDEVICE)) {
+ puts("\nno IDE devices available\n");
+ return 1;
}
+ printf("\nIDE device %d: ", curr_device);
+ dev_print(&ide_dev_desc[curr_device]);
+ return 0;
+ } else if (strncmp(argv[1], "part", 4) == 0) {
+ int dev, ok;
+
+ for (ok = 0, dev = 0;
+ dev < CONFIG_SYS_IDE_MAXDEVICE;
+ ++dev) {
+ if (ide_dev_desc[dev].part_type !=
+ PART_TYPE_UNKNOWN) {
+ ++ok;
+ if (dev)
+ putc('\n');
+ print_part(&ide_dev_desc[dev]);
+ }
+ }
+ if (!ok) {
+ puts("\nno IDE devices available\n");
+ rcode++;
+ }
+ return rcode;
}
- if (!ok) {
- puts ("\nno IDE devices available\n");
- rcode ++;
- }
- return rcode;
- }
- return cmd_usage(cmdtp);
- case 3:
- if (strncmp(argv[1],"dev",3) == 0) {
- int dev = (int)simple_strtoul(argv[2], NULL, 10);
-
- printf ("\nIDE device %d: ", dev);
- if (dev >= CONFIG_SYS_IDE_MAXDEVICE) {
- puts ("unknown device\n");
- return 1;
- }
- dev_print(&ide_dev_desc[dev]);
- /*ide_print (dev);*/
+ return cmd_usage(cmdtp);
+ case 3:
+ if (strncmp(argv[1], "dev", 3) == 0) {
+ int dev = (int) simple_strtoul(argv[2], NULL, 10);
- if (ide_dev_desc[dev].type == DEV_TYPE_UNKNOWN) {
- return 1;
- }
+ printf("\nIDE device %d: ", dev);
+ if (dev >= CONFIG_SYS_IDE_MAXDEVICE) {
+ puts("unknown device\n");
+ return 1;
+ }
+ dev_print(&ide_dev_desc[dev]);
+ /*ide_print (dev); */
- curr_device = dev;
+ if (ide_dev_desc[dev].type == DEV_TYPE_UNKNOWN)
+ return 1;
- puts ("... is now current device\n");
+ curr_device = dev;
- return 0;
- } else if (strncmp(argv[1],"part",4) == 0) {
- int dev = (int)simple_strtoul(argv[2], NULL, 10);
+ puts("... is now current device\n");
+
+ return 0;
+ } else if (strncmp(argv[1], "part", 4) == 0) {
+ int dev = (int) simple_strtoul(argv[2], NULL, 10);
- if (ide_dev_desc[dev].part_type!=PART_TYPE_UNKNOWN) {
+ if (ide_dev_desc[dev].part_type != PART_TYPE_UNKNOWN) {
print_part(&ide_dev_desc[dev]);
- } else {
- printf ("\nIDE device %d not available\n", dev);
- rcode = 1;
+ } else {
+ printf("\nIDE device %d not available\n",
+ dev);
+ rcode = 1;
+ }
+ return rcode;
}
- return rcode;
-#if 0
- } else if (strncmp(argv[1],"pio",4) == 0) {
- int mode = (int)simple_strtoul(argv[2], NULL, 10);
- if ((mode >= 0) && (mode <= IDE_MAX_PIO_MODE)) {
- puts ("\nSetting ");
- pio_mode = mode;
- ide_init ();
- } else {
- printf ("\nInvalid PIO mode %d (0 ... %d only)\n",
- mode, IDE_MAX_PIO_MODE);
- }
- return;
-#endif
- }
+ return cmd_usage(cmdtp);
+ default:
+ /* at least 4 args */
- return cmd_usage(cmdtp);
- default:
- /* at least 4 args */
+ if (strcmp(argv[1], "read") == 0) {
+ ulong addr = simple_strtoul(argv[2], NULL, 16);
+ ulong cnt = simple_strtoul(argv[4], NULL, 16);
+ ulong n;
- if (strcmp(argv[1],"read") == 0) {
- ulong addr = simple_strtoul(argv[2], NULL, 16);
- ulong cnt = simple_strtoul(argv[4], NULL, 16);
- ulong n;
#ifdef CONFIG_SYS_64BIT_LBA
- lbaint_t blk = simple_strtoull(argv[3], NULL, 16);
+ lbaint_t blk = simple_strtoull(argv[3], NULL, 16);
- printf ("\nIDE read: device %d block # %Ld, count %ld ... ",
- curr_device, blk, cnt);
+ printf("\nIDE read: device %d block # %lld, count %ld ... ",
+ curr_device, blk, cnt);
#else
- lbaint_t blk = simple_strtoul(argv[3], NULL, 16);
-
- printf ("\nIDE read: device %d block # %ld, count %ld ... ",
- curr_device, blk, cnt);
-#endif
-
- n = ide_dev_desc[curr_device].block_read (curr_device,
- blk, cnt,
- (ulong *)addr);
- /* flush cache after read */
- flush_cache (addr, cnt*ide_dev_desc[curr_device].blksz);
+ lbaint_t blk = simple_strtoul(argv[3], NULL, 16);
+
+ printf("\nIDE read: device %d block # %ld, count %ld ... ",
+ curr_device, blk, cnt);
+#endif
+
+ n = ide_dev_desc[curr_device].block_read(curr_device,
+ blk, cnt,
+ (ulong *)addr);
+ /* flush cache after read */
+ flush_cache(addr,
+ cnt * ide_dev_desc[curr_device].blksz);
+
+ printf("%ld blocks read: %s\n",
+ n, (n == cnt) ? "OK" : "ERROR");
+ if (n == cnt)
+ return 0;
+ else
+ return 1;
+ } else if (strcmp(argv[1], "write") == 0) {
+ ulong addr = simple_strtoul(argv[2], NULL, 16);
+ ulong cnt = simple_strtoul(argv[4], NULL, 16);
+ ulong n;
- printf ("%ld blocks read: %s\n",
- n, (n==cnt) ? "OK" : "ERROR");
- if (n==cnt) {
- return 0;
- } else {
- return 1;
- }
- } else if (strcmp(argv[1],"write") == 0) {
- ulong addr = simple_strtoul(argv[2], NULL, 16);
- ulong cnt = simple_strtoul(argv[4], NULL, 16);
- ulong n;
#ifdef CONFIG_SYS_64BIT_LBA
- lbaint_t blk = simple_strtoull(argv[3], NULL, 16);
+ lbaint_t blk = simple_strtoull(argv[3], NULL, 16);
- printf ("\nIDE write: device %d block # %Ld, count %ld ... ",
- curr_device, blk, cnt);
+ printf("\nIDE write: device %d block # %lld, count %ld ... ",
+ curr_device, blk, cnt);
#else
- lbaint_t blk = simple_strtoul(argv[3], NULL, 16);
+ lbaint_t blk = simple_strtoul(argv[3], NULL, 16);
- printf ("\nIDE write: device %d block # %ld, count %ld ... ",
- curr_device, blk, cnt);
+ printf("\nIDE write: device %d block # %ld, count %ld ... ",
+ curr_device, blk, cnt);
#endif
+ n = ide_write(curr_device, blk, cnt, (ulong *) addr);
- n = ide_write (curr_device, blk, cnt, (ulong *)addr);
+ printf("%ld blocks written: %s\n",
+ n, (n == cnt) ? "OK" : "ERROR");
+ if (n == cnt)
+ return 0;
+ else
+ return 1;
+ } else {
+ return cmd_usage(cmdtp);
+ }
- printf ("%ld blocks written: %s\n",
- n, (n==cnt) ? "OK" : "ERROR");
- if (n==cnt)
- return 0;
- else
- return 1;
- } else {
- return cmd_usage(cmdtp);
+ return rcode;
}
-
- return rcode;
- }
}
-int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+int do_diskboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
{
char *boot_device = NULL;
char *ep;
@@ -350,112 +340,115 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
ulong addr, cnt;
disk_partition_t info;
image_header_t *hdr;
+
#if defined(CONFIG_FIT)
const void *fit_hdr = NULL;
#endif
- show_boot_progress (41);
+ show_boot_progress(41);
switch (argc) {
case 1:
addr = CONFIG_SYS_LOAD_ADDR;
- boot_device = getenv ("bootdevice");
+ boot_device = getenv("bootdevice");
break;
case 2:
addr = simple_strtoul(argv[1], NULL, 16);
- boot_device = getenv ("bootdevice");
+ boot_device = getenv("bootdevice");
break;
case 3:
addr = simple_strtoul(argv[1], NULL, 16);
boot_device = argv[2];
break;
default:
- show_boot_progress (-42);
+ show_boot_progress(-42);
return cmd_usage(cmdtp);
}
- show_boot_progress (42);
+ show_boot_progress(42);
if (!boot_device) {
- puts ("\n** No boot device **\n");
- show_boot_progress (-43);
+ puts("\n** No boot device **\n");
+ show_boot_progress(-43);
return 1;
}
- show_boot_progress (43);
+ show_boot_progress(43);
dev = simple_strtoul(boot_device, &ep, 16);
- if (ide_dev_desc[dev].type==DEV_TYPE_UNKNOWN) {
- printf ("\n** Device %d not available\n", dev);
- show_boot_progress (-44);
+ if (ide_dev_desc[dev].type == DEV_TYPE_UNKNOWN) {
+ printf("\n** Device %d not available\n", dev);
+ show_boot_progress(-44);
return 1;
}
- show_boot_progress (44);
+ show_boot_progress(44);
if (*ep) {
if (*ep != ':') {
- puts ("\n** Invalid boot device, use `dev[:part]' **\n");
- show_boot_progress (-45);
+ puts("\n** Invalid boot device, use `dev[:part]' **\n");
+ show_boot_progress(-45);
return 1;
}
part = simple_strtoul(++ep, NULL, 16);
}
- show_boot_progress (45);
- if (get_partition_info (&ide_dev_desc[dev], part, &info)) {
- show_boot_progress (-46);
+ show_boot_progress(45);
+ if (get_partition_info(&ide_dev_desc[dev], part, &info)) {
+ show_boot_progress(-46);
return 1;
}
- show_boot_progress (46);
- if ((strncmp((char *)info.type, BOOT_PART_TYPE, sizeof(info.type)) != 0) &&
- (strncmp((char *)info.type, BOOT_PART_COMP, sizeof(info.type)) != 0)) {
- printf ("\n** Invalid partition type \"%.32s\""
- " (expect \"" BOOT_PART_TYPE "\")\n",
+ show_boot_progress(46);
+ if ((strncmp((char *)info.type, BOOT_PART_TYPE, sizeof(info.type)) != 0)
+ &&
+ (strncmp((char *)info.type, BOOT_PART_COMP, sizeof(info.type)) != 0)
+ ) {
+ printf("\n** Invalid partition type \"%.32s\"" " (expect \""
+ BOOT_PART_TYPE "\")\n",
info.type);
- show_boot_progress (-47);
+ show_boot_progress(-47);
return 1;
}
- show_boot_progress (47);
+ show_boot_progress(47);
- printf ("\nLoading from IDE device %d, partition %d: "
- "Name: %.32s Type: %.32s\n",
- dev, part, info.name, info.type);
+ printf("\nLoading from IDE device %d, partition %d: "
+ "Name: %.32s Type: %.32s\n", dev, part, info.name, info.type);
- debug ("First Block: %ld, # of blocks: %ld, Block Size: %ld\n",
- info.start, info.size, info.blksz);
+ debug("First Block: %ld, # of blocks: %ld, Block Size: %ld\n",
+ info.start, info.size, info.blksz);
- if (ide_dev_desc[dev].block_read (dev, info.start, 1, (ulong *)addr) != 1) {
- printf ("** Read error on %d:%d\n", dev, part);
- show_boot_progress (-48);
+ if (ide_dev_desc[dev].
+ block_read(dev, info.start, 1, (ulong *) addr) != 1) {
+ printf("** Read error on %d:%d\n", dev, part);
+ show_boot_progress(-48);
return 1;
}
- show_boot_progress (48);
+ show_boot_progress(48);
- switch (genimg_get_format ((void *)addr)) {
+ switch (genimg_get_format((void *) addr)) {
case IMAGE_FORMAT_LEGACY:
- hdr = (image_header_t *)addr;
+ hdr = (image_header_t *) addr;
- show_boot_progress (49);
+ show_boot_progress(49);
- if (!image_check_hcrc (hdr)) {
- puts ("\n** Bad Header Checksum **\n");
- show_boot_progress (-50);
+ if (!image_check_hcrc(hdr)) {
+ puts("\n** Bad Header Checksum **\n");
+ show_boot_progress(-50);
return 1;
}
- show_boot_progress (50);
+ show_boot_progress(50);
- image_print_contents (hdr);
+ image_print_contents(hdr);
- cnt = image_get_image_size (hdr);
+ cnt = image_get_image_size(hdr);
break;
#if defined(CONFIG_FIT)
case IMAGE_FORMAT_FIT:
- fit_hdr = (const void *)addr;
- puts ("Fit image detected...\n");
+ fit_hdr = (const void *) addr;
+ puts("Fit image detected...\n");
- cnt = fit_get_size (fit_hdr);
+ cnt = fit_get_size(fit_hdr);
break;
#endif
default:
- show_boot_progress (-49);
- puts ("** Unknown image type\n");
+ show_boot_progress(-49);
+ puts("** Unknown image type\n");
return 1;
}
@@ -463,24 +456,24 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
cnt /= info.blksz;
cnt -= 1;
- if (ide_dev_desc[dev].block_read (dev, info.start+1, cnt,
- (ulong *)(addr+info.blksz)) != cnt) {
- printf ("** Read error on %d:%d\n", dev, part);
- show_boot_progress (-51);
+ if (ide_dev_desc[dev].block_read(dev, info.start + 1, cnt,
+ (ulong *)(addr + info.blksz)) != cnt) {
+ printf("** Read error on %d:%d\n", dev, part);
+ show_boot_progress(-51);
return 1;
}
- show_boot_progress (51);
+ show_boot_progress(51);
#if defined(CONFIG_FIT)
/* This cannot be done earlier, we need complete FIT image in RAM first */
- if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT) {
- if (!fit_check_format (fit_hdr)) {
- show_boot_progress (-140);
- puts ("** Bad FIT image format\n");
+ if (genimg_get_format((void *) addr) == IMAGE_FORMAT_FIT) {
+ if (!fit_check_format(fit_hdr)) {
+ show_boot_progress(-140);
+ puts("** Bad FIT image format\n");
return 1;
}
- show_boot_progress (141);
- fit_print_contents (fit_hdr);
+ show_boot_progress(141);
+ fit_print_contents(fit_hdr);
}
#endif
@@ -493,11 +486,11 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
/* ------------------------------------------------------------------------- */
-void inline
-__ide_outb(int dev, int port, unsigned char val)
+inline void __ide_outb(int dev, int port, unsigned char val)
{
- debug ("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n",
- dev, port, val, (ATA_CURR_BASE(dev)+CONFIG_SYS_ATA_PORT_ADDR(port)));
+ debug("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n",
+ dev, port, val,
+ (ATA_CURR_BASE(dev) + CONFIG_SYS_ATA_PORT_ADDR(port)));
#if defined(CONFIG_IDE_AHB)
if (port) {
@@ -508,71 +501,74 @@ __ide_outb(int dev, int port, unsigned char val)
outb(val, (ATA_CURR_BASE(dev)));
}
#else
- outb(val, (ATA_CURR_BASE(dev)+CONFIG_SYS_ATA_PORT_ADDR(port)));
+ outb(val, (ATA_CURR_BASE(dev) + CONFIG_SYS_ATA_PORT_ADDR(port)));
#endif
}
-void ide_outb (int dev, int port, unsigned char val)
- __attribute__((weak, alias("__ide_outb")));
+void ide_outb(int dev, int port, unsigned char val)
+ __attribute__ ((weak, alias("__ide_outb")));
-unsigned char inline
-__ide_inb(int dev, int port)
+inline unsigned char __ide_inb(int dev, int port)
{
uchar val;
#if defined(CONFIG_IDE_AHB)
val = ide_read_register(dev, port);
#else
- val = inb((ATA_CURR_BASE(dev)+CONFIG_SYS_ATA_PORT_ADDR(port)));
+ val = inb((ATA_CURR_BASE(dev) + CONFIG_SYS_ATA_PORT_ADDR(port)));
#endif
- debug ("ide_inb (dev= %d, port= 0x%x) : @ 0x%08lx -> 0x%02x\n",
- dev, port, (ATA_CURR_BASE(dev)+CONFIG_SYS_ATA_PORT_ADDR(port)), val);
+ debug("ide_inb (dev= %d, port= 0x%x) : @ 0x%08lx -> 0x%02x\n",
+ dev, port,
+ (ATA_CURR_BASE(dev) + CONFIG_SYS_ATA_PORT_ADDR(port)), val);
return val;
}
+
unsigned char ide_inb(int dev, int port)
- __attribute__((weak, alias("__ide_inb")));
+ __attribute__ ((weak, alias("__ide_inb")));
#ifdef CONFIG_TUNE_PIO
-int inline
-__ide_set_piomode(int pio_mode)
+inline int __ide_set_piomode(int pio_mode)
{
return 0;
}
-int inline ide_set_piomode(int pio_mode)
- __attribute__((weak, alias("__ide_set_piomode")));
+
+inline int ide_set_piomode(int pio_mode)
+ __attribute__ ((weak, alias("__ide_set_piomode")));
#endif
-void ide_init (void)
+void ide_init(void)
{
#ifdef CONFIG_IDE_8xx_DIRECT
- volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+ volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
volatile pcmconf8xx_t *pcmp = &(immr->im_pcmcia);
#endif
unsigned char c;
int i, bus;
+
#if defined(CONFIG_SC3)
unsigned int ata_reset_time = ATA_RESET_TIME;
#endif
#ifdef CONFIG_IDE_8xx_PCCARD
- extern int pcmcia_on (void);
- extern int ide_devices_found; /* Initialized in check_ide_device() */
-#endif /* CONFIG_IDE_8xx_PCCARD */
+ extern int pcmcia_on(void);
+ extern int ide_devices_found; /* Initialized in check_ide_device() */
+#endif /* CONFIG_IDE_8xx_PCCARD */
#ifdef CONFIG_IDE_PREINIT
- extern int ide_preinit (void);
+ extern int ide_preinit(void);
+
WATCHDOG_RESET();
- if (ide_preinit ()) {
- puts ("ide_preinit failed\n");
+ if (ide_preinit()) {
+ puts("ide_preinit failed\n");
return;
}
-#endif /* CONFIG_IDE_PREINIT */
+#endif /* CONFIG_IDE_PREINIT */
#ifdef CONFIG_IDE_8xx_PCCARD
- extern int pcmcia_on (void);
- extern int ide_devices_found; /* Initialized in check_ide_device() */
+ extern int pcmcia_on(void);
+ extern int ide_devices_found; /* Initialized in check_ide_device() */
WATCHDOG_RESET();
@@ -581,35 +577,37 @@ void ide_init (void)
pcmcia_on();
if (!ide_devices_found)
return;
- udelay (1000000); /* 1 s */
-#endif /* CONFIG_IDE_8xx_PCCARD */
+ udelay(1000000); /* 1 s */
+#endif /* CONFIG_IDE_8xx_PCCARD */
WATCHDOG_RESET();
#ifdef CONFIG_IDE_8xx_DIRECT
/* Initialize PIO timing tables */
- for (i=0; i <= IDE_MAX_PIO_MODE; ++i) {
- pio_config_clk[i].t_setup = PCMCIA_MK_CLKS(pio_config_ns[i].t_setup,
- gd->bus_clk);
- pio_config_clk[i].t_length = PCMCIA_MK_CLKS(pio_config_ns[i].t_length,
- gd->bus_clk);
- pio_config_clk[i].t_hold = PCMCIA_MK_CLKS(pio_config_ns[i].t_hold,
- gd->bus_clk);
- debug ( "PIO Mode %d: setup=%2d ns/%d clk"
- " len=%3d ns/%d clk"
- " hold=%2d ns/%d clk\n",
- i,
- pio_config_ns[i].t_setup, pio_config_clk[i].t_setup,
- pio_config_ns[i].t_length, pio_config_clk[i].t_length,
- pio_config_ns[i].t_hold, pio_config_clk[i].t_hold);
+ for (i = 0; i <= IDE_MAX_PIO_MODE; ++i) {
+ pio_config_clk[i].t_setup =
+ PCMCIA_MK_CLKS(pio_config_ns[i].t_setup, gd->bus_clk);
+ pio_config_clk[i].t_length =
+ PCMCIA_MK_CLKS(pio_config_ns[i].t_length,
+ gd->bus_clk);
+ pio_config_clk[i].t_hold =
+ PCMCIA_MK_CLKS(pio_config_ns[i].t_hold, gd->bus_clk);
+ debug("PIO Mode %d: setup=%2d ns/%d clk" " len=%3d ns/%d clk"
+ " hold=%2d ns/%d clk\n", i, pio_config_ns[i].t_setup,
+ pio_config_clk[i].t_setup, pio_config_ns[i].t_length,
+ pio_config_clk[i].t_length, pio_config_ns[i].t_hold,
+ pio_config_clk[i].t_hold);
}
#endif /* CONFIG_IDE_8xx_DIRECT */
- /* Reset the IDE just to be sure.
+ /*
+ * Reset the IDE just to be sure.
* Light LED's to show
*/
- ide_led ((LED_IDE1 | LED_IDE2), 1); /* LED's on */
- ide_reset (); /* ATAPI Drives seems to need a proper IDE Reset */
+ ide_led((LED_IDE1 | LED_IDE2), 1); /* LED's on */
+
+ /* ATAPI Drives seems to need a proper IDE Reset */
+ ide_reset();
#ifdef CONFIG_IDE_8xx_DIRECT
/* PCMCIA / IDE initialization for common mem space */
@@ -617,93 +615,97 @@ void ide_init (void)
/* start in PIO mode 0 - most relaxed timings */
pio_mode = 0;
- set_pcmcia_timing (pio_mode);
+ set_pcmcia_timing(pio_mode);
#endif /* CONFIG_IDE_8xx_DIRECT */
/*
* Wait for IDE to get ready.
* According to spec, this can take up to 31 seconds!
*/
- for (bus=0; bus<CONFIG_SYS_IDE_MAXBUS; ++bus) {
- int dev = bus * (CONFIG_SYS_IDE_MAXDEVICE / CONFIG_SYS_IDE_MAXBUS);
+ for (bus = 0; bus < CONFIG_SYS_IDE_MAXBUS; ++bus) {
+ int dev =
+ bus * (CONFIG_SYS_IDE_MAXDEVICE /
+ CONFIG_SYS_IDE_MAXBUS);
#ifdef CONFIG_IDE_8xx_PCCARD
/* Skip non-ide devices from probing */
if ((ide_devices_found & (1 << bus)) == 0) {
- ide_led ((LED_IDE1 | LED_IDE2), 0); /* LED's off */
+ ide_led((LED_IDE1 | LED_IDE2), 0); /* LED's off */
continue;
}
#endif
- printf ("Bus %d: ", bus);
+ printf("Bus %d: ", bus);
ide_bus_ok[bus] = 0;
/* Select device
*/
- udelay (100000); /* 100 ms */
- ide_outb (dev, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(dev));
- udelay (100000); /* 100 ms */
+ udelay(100000); /* 100 ms */
+ ide_outb(dev, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(dev));
+ udelay(100000); /* 100 ms */
i = 0;
do {
- udelay (10000); /* 10 ms */
+ udelay(10000); /* 10 ms */
- c = ide_inb (dev, ATA_STATUS);
+ c = ide_inb(dev, ATA_STATUS);
i++;
#if defined(CONFIG_SC3)
if (i > (ata_reset_time * 100)) {
#else
if (i > (ATA_RESET_TIME * 100)) {
#endif
- puts ("** Timeout **\n");
- ide_led ((LED_IDE1 | LED_IDE2), 0); /* LED's off */
+ puts("** Timeout **\n");
+ /* LED's off */
+ ide_led((LED_IDE1 | LED_IDE2), 0);
return;
}
- if ((i >= 100) && ((i%100)==0)) {
- putc ('.');
- }
+ if ((i >= 100) && ((i % 100) == 0))
+ putc('.');
+
} while (c & ATA_STAT_BUSY);
if (c & (ATA_STAT_BUSY | ATA_STAT_FAULT)) {
- puts ("not available ");
- debug ("Status = 0x%02X ", c);
-#ifndef CONFIG_ATAPI /* ATAPI Devices do not set DRDY */
- } else if ((c & ATA_STAT_READY) == 0) {
- puts ("not available ");
- debug ("Status = 0x%02X ", c);
+ puts("not available ");
+ debug("Status = 0x%02X ", c);
+#ifndef CONFIG_ATAPI /* ATAPI Devices do not set DRDY */
+ } else if ((c & ATA_STAT_READY) == 0) {
+ puts("not available ");
+ debug("Status = 0x%02X ", c);
#endif
} else {
- puts ("OK ");
+ puts("OK ");
ide_bus_ok[bus] = 1;
}
WATCHDOG_RESET();
}
- putc ('\n');
+ putc('\n');
- ide_led ((LED_IDE1 | LED_IDE2), 0); /* LED's off */
+ ide_led((LED_IDE1 | LED_IDE2), 0); /* LED's off */
curr_device = -1;
- for (i=0; i<CONFIG_SYS_IDE_MAXDEVICE; ++i) {
+ for (i = 0; i < CONFIG_SYS_IDE_MAXDEVICE; ++i) {
#ifdef CONFIG_IDE_LED
int led = (IDE_BUS(i) == 0) ? LED_IDE1 : LED_IDE2;
#endif
- ide_dev_desc[i].type=DEV_TYPE_UNKNOWN;
- ide_dev_desc[i].if_type=IF_TYPE_IDE;
- ide_dev_desc[i].dev=i;
- ide_dev_desc[i].part_type=PART_TYPE_UNKNOWN;
- ide_dev_desc[i].blksz=0;
- ide_dev_desc[i].lba=0;
- ide_dev_desc[i].block_read=ide_read;
+ ide_dev_desc[i].type = DEV_TYPE_UNKNOWN;
+ ide_dev_desc[i].if_type = IF_TYPE_IDE;
+ ide_dev_desc[i].dev = i;
+ ide_dev_desc[i].part_type = PART_TYPE_UNKNOWN;
+ ide_dev_desc[i].blksz = 0;
+ ide_dev_desc[i].lba = 0;
+ ide_dev_desc[i].block_read = ide_read;
ide_dev_desc[i].block_write = ide_write;
if (!ide_bus_ok[IDE_BUS(i)])
continue;
- ide_led (led, 1); /* LED on */
+ ide_led(led, 1); /* LED on */
ide_ident(&ide_dev_desc[i]);
- ide_led (led, 0); /* LED off */
+ ide_led(led, 0); /* LED off */
dev_print(&ide_dev_desc[i]);
-/* ide_print (i); */
+
if ((ide_dev_desc[i].lba > 0) && (ide_dev_desc[i].blksz > 0)) {
- init_part (&ide_dev_desc[i]); /* initialize partition type */
+ /* initialize partition type */
+ init_part(&ide_dev_desc[i]);
if (curr_device < 0)
curr_device = i;
}
@@ -714,7 +716,7 @@ void ide_init (void)
/* ------------------------------------------------------------------------- */
#ifdef CONFIG_PARTITIONS
-block_dev_desc_t * ide_get_dev(int dev)
+block_dev_desc_t *ide_get_dev(int dev)
{
return (dev < CONFIG_SYS_IDE_MAXDEVICE) ? &ide_dev_desc[dev] : NULL;
}
@@ -723,91 +725,91 @@ block_dev_desc_t * ide_get_dev(int dev)
#ifdef CONFIG_IDE_8xx_DIRECT
-static void
-set_pcmcia_timing (int pmode)
+static void set_pcmcia_timing(int pmode)
{
- volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+ volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
volatile pcmconf8xx_t *pcmp = &(immr->im_pcmcia);
ulong timings;
- debug ("Set timing for PIO Mode %d\n", pmode);
+ debug("Set timing for PIO Mode %d\n", pmode);
timings = PCMCIA_SHT(pio_config_clk[pmode].t_hold)
| PCMCIA_SST(pio_config_clk[pmode].t_setup)
- | PCMCIA_SL (pio_config_clk[pmode].t_length)
- ;
+ | PCMCIA_SL(pio_config_clk[pmode].t_length);
- /* IDE 0
+ /*
+ * IDE 0
*/
pcmp->pcmc_pbr0 = CONFIG_SYS_PCMCIA_PBR0;
pcmp->pcmc_por0 = CONFIG_SYS_PCMCIA_POR0
#if (CONFIG_SYS_PCMCIA_POR0 != 0)
- | timings
+ | timings
#endif
- ;
- debug ("PBR0: %08x POR0: %08x\n", pcmp->pcmc_pbr0, pcmp->pcmc_por0);
+ ;
+ debug("PBR0: %08x POR0: %08x\n", pcmp->pcmc_pbr0, pcmp->pcmc_por0);
pcmp->pcmc_pbr1 = CONFIG_SYS_PCMCIA_PBR1;
pcmp->pcmc_por1 = CONFIG_SYS_PCMCIA_POR1
#if (CONFIG_SYS_PCMCIA_POR1 != 0)
- | timings
+ | timings
#endif
- ;
- debug ("PBR1: %08x POR1: %08x\n", pcmp->pcmc_pbr1, pcmp->pcmc_por1);
+ ;
+ debug("PBR1: %08x POR1: %08x\n", pcmp->pcmc_pbr1, pcmp->pcmc_por1);
pcmp->pcmc_pbr2 = CONFIG_SYS_PCMCIA_PBR2;
pcmp->pcmc_por2 = CONFIG_SYS_PCMCIA_POR2
#if (CONFIG_SYS_PCMCIA_POR2 != 0)
- | timings
+ | timings
#endif
- ;
- debug ("PBR2: %08x POR2: %08x\n", pcmp->pcmc_pbr2, pcmp->pcmc_por2);
+ ;
+ debug("PBR2: %08x POR2: %08x\n", pcmp->pcmc_pbr2, pcmp->pcmc_por2);
pcmp->pcmc_pbr3 = CONFIG_SYS_PCMCIA_PBR3;
pcmp->pcmc_por3 = CONFIG_SYS_PCMCIA_POR3
#if (CONFIG_SYS_PCMCIA_POR3 != 0)
- | timings
+ | timings
#endif
- ;
- debug ("PBR3: %08x POR3: %08x\n", pcmp->pcmc_pbr3, pcmp->pcmc_por3);
+ ;
+ debug("PBR3: %08x POR3: %08x\n", pcmp->pcmc_pbr3, pcmp->pcmc_por3);
- /* IDE 1
+ /*
+ * IDE 1
*/
pcmp->pcmc_pbr4 = CONFIG_SYS_PCMCIA_PBR4;
pcmp->pcmc_por4 = CONFIG_SYS_PCMCIA_POR4
#if (CONFIG_SYS_PCMCIA_POR4 != 0)
- | timings
+ | timings
#endif
- ;
- debug ("PBR4: %08x POR4: %08x\n", pcmp->pcmc_pbr4, pcmp->pcmc_por4);
+ ;
+ debug("PBR4: %08x POR4: %08x\n", pcmp->pcmc_pbr4, pcmp->pcmc_por4);
pcmp->pcmc_pbr5 = CONFIG_SYS_PCMCIA_PBR5;
pcmp->pcmc_por5 = CONFIG_SYS_PCMCIA_POR5
#if (CONFIG_SYS_PCMCIA_POR5 != 0)
- | timings
+ | timings
#endif
- ;
- debug ("PBR5: %08x POR5: %08x\n", pcmp->pcmc_pbr5, pcmp->pcmc_por5);
+ ;
+ debug("PBR5: %08x POR5: %08x\n", pcmp->pcmc_pbr5, pcmp->pcmc_por5);
pcmp->pcmc_pbr6 = CONFIG_SYS_PCMCIA_PBR6;
pcmp->pcmc_por6 = CONFIG_SYS_PCMCIA_POR6
#if (CONFIG_SYS_PCMCIA_POR6 != 0)
- | timings
+ | timings
#endif
- ;
- debug ("PBR6: %08x POR6: %08x\n", pcmp->pcmc_pbr6, pcmp->pcmc_por6);
+ ;
+ debug("PBR6: %08x POR6: %08x\n", pcmp->pcmc_pbr6, pcmp->pcmc_por6);
pcmp->pcmc_pbr7 = CONFIG_SYS_PCMCIA_PBR7;
pcmp->pcmc_por7 = CONFIG_SYS_PCMCIA_POR7
#if (CONFIG_SYS_PCMCIA_POR7 != 0)
- | timings
+ | timings
#endif
- ;
- debug ("PBR7: %08x POR7: %08x\n", pcmp->pcmc_pbr7, pcmp->pcmc_por7);
+ ;
+ debug("PBR7: %08x POR7: %08x\n", pcmp->pcmc_pbr7, pcmp->pcmc_por7);
}
-#endif /* CONFIG_IDE_8xx_DIRECT */
+#endif /* CONFIG_IDE_8xx_DIRECT */
/* ------------------------------------------------------------------------- */
@@ -817,32 +819,35 @@ set_pcmcia_timing (int pmode)
(defined(CONFIG_SOC_AU1X00) && !defined(CONFIG_GTH2))
#define input_swap_data(x,y,z) input_data(x,y,z)
#else
-static void
-input_swap_data(int dev, ulong *sect_buf, int words)
+static void input_swap_data(int dev, ulong *sect_buf, int words)
{
#if defined(CONFIG_CPC45)
uchar i;
- volatile uchar *pbuf_even = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_EVEN);
- volatile uchar *pbuf_odd = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_ODD);
- ushort *dbuf = (ushort *)sect_buf;
+ volatile uchar *pbuf_even =
+ (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
+ volatile uchar *pbuf_odd =
+ (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
+ ushort *dbuf = (ushort *) sect_buf;
while (words--) {
- for (i=0; i<2; i++) {
- *(((uchar *)(dbuf)) + 1) = *pbuf_even;
- *(uchar *)dbuf = *pbuf_odd;
- dbuf+=1;
+ for (i = 0; i < 2; i++) {
+ *(((uchar *) (dbuf)) + 1) = *pbuf_even;
+ *(uchar *) dbuf = *pbuf_odd;
+ dbuf += 1;
}
}
#else
- volatile ushort *pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
- ushort *dbuf = (ushort *)sect_buf;
+ volatile ushort *pbuf =
+ (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
+ ushort *dbuf = (ushort *) sect_buf;
- debug("in input swap data base for read is %lx\n", (unsigned long) pbuf);
+ debug("in input swap data base for read is %lx\n",
+ (unsigned long) pbuf);
while (words--) {
#ifdef __MIPS__
- *dbuf++ = swab16p((u16*)pbuf);
- *dbuf++ = swab16p((u16*)pbuf);
+ *dbuf++ = swab16p((u16 *) pbuf);
+ *dbuf++ = swab16p((u16 *) pbuf);
#elif defined(CONFIG_PCS440EP)
*dbuf++ = *pbuf;
*dbuf++ = *pbuf;
@@ -853,21 +858,20 @@ input_swap_data(int dev, ulong *sect_buf, int words)
}
#endif
}
-#endif /* __LITTLE_ENDIAN || CONFIG_AU1X00 */
+#endif /* __LITTLE_ENDIAN || CONFIG_AU1X00 */
#if defined(CONFIG_IDE_SWAP_IO)
-static void
-output_data(int dev, const ulong *sect_buf, int words)
+static void output_data(int dev, const ulong *sect_buf, int words)
{
#if defined(CONFIG_CPC45)
- uchar *dbuf;
- volatile uchar *pbuf_even;
- volatile uchar *pbuf_odd;
+ uchar *dbuf;
+ volatile uchar *pbuf_even;
+ volatile uchar *pbuf_odd;
- pbuf_even = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_EVEN);
- pbuf_odd = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_ODD);
- dbuf = (uchar *)sect_buf;
+ pbuf_even = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
+ pbuf_odd = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
+ dbuf = (uchar *) sect_buf;
while (words--) {
EIEIO;
*pbuf_even = *dbuf++;
@@ -879,11 +883,11 @@ output_data(int dev, const ulong *sect_buf, int words)
*pbuf_odd = *dbuf++;
}
#else
- ushort *dbuf;
- volatile ushort *pbuf;
+ ushort *dbuf;
+ volatile ushort *pbuf;
- pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
- dbuf = (ushort *)sect_buf;
+ pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
+ dbuf = (ushort *) sect_buf;
while (words--) {
#if defined(CONFIG_PCS440EP)
/* not tested, because CF was write protected */
@@ -900,30 +904,28 @@ output_data(int dev, const ulong *sect_buf, int words)
}
#endif
}
-#else /* ! CONFIG_IDE_SWAP_IO */
-static void
-output_data(int dev, const ulong *sect_buf, int words)
+#else /* ! CONFIG_IDE_SWAP_IO */
+static void output_data(int dev, const ulong *sect_buf, int words)
{
#if defined(CONFIG_IDE_AHB)
ide_write_data(dev, sect_buf, words);
#else
- outsw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words << 1);
+ outsw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, words << 1);
#endif
}
-#endif /* CONFIG_IDE_SWAP_IO */
+#endif /* CONFIG_IDE_SWAP_IO */
#if defined(CONFIG_IDE_SWAP_IO)
-static void
-input_data(int dev, ulong *sect_buf, int words)
+static void input_data(int dev, ulong *sect_buf, int words)
{
#if defined(CONFIG_CPC45)
- uchar *dbuf;
- volatile uchar *pbuf_even;
- volatile uchar *pbuf_odd;
+ uchar *dbuf;
+ volatile uchar *pbuf_even;
+ volatile uchar *pbuf_odd;
- pbuf_even = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_EVEN);
- pbuf_odd = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_ODD);
- dbuf = (uchar *)sect_buf;
+ pbuf_even = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
+ pbuf_odd = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
+ dbuf = (uchar *) sect_buf;
while (words--) {
*dbuf++ = *pbuf_even;
EIEIO;
@@ -939,11 +941,11 @@ input_data(int dev, ulong *sect_buf, int words)
SYNC;
}
#else
- ushort *dbuf;
- volatile ushort *pbuf;
+ ushort *dbuf;
+ volatile ushort *pbuf;
- pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
- dbuf = (ushort *)sect_buf;
+ pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
+ dbuf = (ushort *) sect_buf;
debug("in input data base for read is %lx\n", (unsigned long) pbuf);
@@ -962,22 +964,21 @@ input_data(int dev, ulong *sect_buf, int words)
}
#endif
}
-#else /* ! CONFIG_IDE_SWAP_IO */
-static void
-input_data(int dev, ulong *sect_buf, int words)
+#else /* ! CONFIG_IDE_SWAP_IO */
+static void input_data(int dev, ulong *sect_buf, int words)
{
#if defined(CONFIG_IDE_AHB)
ide_read_data(dev, sect_buf, words);
#else
- insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words << 1);
+ insw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, words << 1);
#endif
}
-#endif /* CONFIG_IDE_SWAP_IO */
+#endif /* CONFIG_IDE_SWAP_IO */
/* -------------------------------------------------------------------------
*/
-static void ide_ident (block_dev_desc_t *dev_desc)
+static void ide_ident(block_dev_desc_t *dev_desc)
{
unsigned char c;
hd_driveid_t iop;
@@ -995,82 +996,95 @@ static void ide_ident (block_dev_desc_t *dev_desc)
int mode, cycle_time;
#endif
int device;
- device=dev_desc->dev;
- printf (" Device %d: ", device);
- ide_led (DEVICE_LED(device), 1); /* LED on */
+ device = dev_desc->dev;
+ printf(" Device %d: ", device);
+
+ ide_led(DEVICE_LED(device), 1); /* LED on */
/* Select device
*/
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
- dev_desc->if_type=IF_TYPE_IDE;
+ ide_outb(device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
+ dev_desc->if_type = IF_TYPE_IDE;
#ifdef CONFIG_ATAPI
- do_retry = 0;
- retries = 0;
-
- /* Warning: This will be tricky to read */
- while (retries <= 1) {
- /* check signature */
- if ((ide_inb(device,ATA_SECT_CNT) == 0x01) &&
- (ide_inb(device,ATA_SECT_NUM) == 0x01) &&
- (ide_inb(device,ATA_CYL_LOW) == 0x14) &&
- (ide_inb(device,ATA_CYL_HIGH) == 0xEB)) {
- /* ATAPI Signature found */
- dev_desc->if_type=IF_TYPE_ATAPI;
- /* Start Ident Command
- */
- ide_outb (device, ATA_COMMAND, ATAPI_CMD_IDENT);
- /*
- * Wait for completion - ATAPI devices need more time
- * to become ready
- */
- c = ide_wait (device, ATAPI_TIME_OUT);
- } else
+ do_retry = 0;
+ retries = 0;
+
+ /* Warning: This will be tricky to read */
+ while (retries <= 1) {
+ /* check signature */
+ if ((ide_inb(device, ATA_SECT_CNT) == 0x01) &&
+ (ide_inb(device, ATA_SECT_NUM) == 0x01) &&
+ (ide_inb(device, ATA_CYL_LOW) == 0x14) &&
+ (ide_inb(device, ATA_CYL_HIGH) == 0xEB)) {
+ /* ATAPI Signature found */
+ dev_desc->if_type = IF_TYPE_ATAPI;
+ /*
+ * Start Ident Command
+ */
+ ide_outb(device, ATA_COMMAND, ATAPI_CMD_IDENT);
+ /*
+ * Wait for completion - ATAPI devices need more time
+ * to become ready
+ */
+ c = ide_wait(device, ATAPI_TIME_OUT);
+ } else
#endif
- {
- /* Start Ident Command
- */
- ide_outb (device, ATA_COMMAND, ATA_CMD_IDENT);
-
- /* Wait for completion
- */
- c = ide_wait (device, IDE_TIME_OUT);
- }
- ide_led (DEVICE_LED(device), 0); /* LED off */
-
- if (((c & ATA_STAT_DRQ) == 0) ||
- ((c & (ATA_STAT_FAULT|ATA_STAT_ERR)) != 0) ) {
-#ifdef CONFIG_ATAPI
{
- /* Need to soft reset the device in case it's an ATAPI... */
- debug ("Retrying...\n");
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
- udelay(100000);
- ide_outb (device, ATA_COMMAND, 0x08);
- udelay (500000); /* 500 ms */
+ /*
+ * Start Ident Command
+ */
+ ide_outb(device, ATA_COMMAND, ATA_CMD_IDENT);
+
+ /*
+ * Wait for completion
+ */
+ c = ide_wait(device, IDE_TIME_OUT);
}
- /* Select device
- */
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
- retries++;
+ ide_led(DEVICE_LED(device), 0); /* LED off */
+
+ if (((c & ATA_STAT_DRQ) == 0) ||
+ ((c & (ATA_STAT_FAULT | ATA_STAT_ERR)) != 0)) {
+#ifdef CONFIG_ATAPI
+ {
+ /*
+ * Need to soft reset the device
+ * in case it's an ATAPI...
+ */
+ debug("Retrying...\n");
+ ide_outb(device, ATA_DEV_HD,
+ ATA_LBA | ATA_DEVICE(device));
+ udelay(100000);
+ ide_outb(device, ATA_COMMAND, 0x08);
+ udelay(500000); /* 500 ms */
+ }
+ /*
+ * Select device
+ */
+ ide_outb(device, ATA_DEV_HD,
+ ATA_LBA | ATA_DEVICE(device));
+ retries++;
#else
- return;
+ return;
#endif
- }
+ }
#ifdef CONFIG_ATAPI
- else
- break;
- } /* see above - ugly to read */
+ else
+ break;
+ } /* see above - ugly to read */
- if (retries == 2) /* Not found */
+ if (retries == 2) /* Not found */
return;
#endif
- input_swap_data (device, (ulong *)&iop, ATA_SECTORWORDS);
+ input_swap_data(device, (ulong *)&iop, ATA_SECTORWORDS);
- ident_cpy ((unsigned char*)dev_desc->revision, iop.fw_rev, sizeof(dev_desc->revision));
- ident_cpy ((unsigned char*)dev_desc->vendor, iop.model, sizeof(dev_desc->vendor));
- ident_cpy ((unsigned char*)dev_desc->product, iop.serial_no, sizeof(dev_desc->product));
+ ident_cpy((unsigned char *) dev_desc->revision, iop.fw_rev,
+ sizeof(dev_desc->revision));
+ ident_cpy((unsigned char *) dev_desc->vendor, iop.model,
+ sizeof(dev_desc->vendor));
+ ident_cpy((unsigned char *) dev_desc->product, iop.serial_no,
+ sizeof(dev_desc->product));
#ifdef __LITTLE_ENDIAN
/*
* firmware revision, model, and serial number have Big Endian Byte
@@ -1080,9 +1094,9 @@ static void ide_ident (block_dev_desc_t *dev_desc)
* 6.2.1.6: Identify Drive, Table 39 for more details
*/
- strswab (dev_desc->revision);
- strswab (dev_desc->vendor);
- strswab (dev_desc->product);
+ strswab(dev_desc->revision);
+ strswab(dev_desc->vendor);
+ strswab(dev_desc->product);
#endif /* __LITTLE_ENDIAN */
if ((iop.config & 0x0080) == 0x0080)
@@ -1095,7 +1109,8 @@ static void ide_ident (block_dev_desc_t *dev_desc)
pio_mode = iop.tPIO;
if (pio_mode > 2) {
printf("WARNING: Invalid PIO (word 51 = %d).\n", pio_mode);
- pio_mode = 0; /* Force it to dead slow, and hope for the best... */
+ /* Force it to dead slow, and hope for the best... */
+ pio_mode = 0;
}
/* Any CompactFlash Storage Card that supports PIO mode 3 or above
@@ -1103,7 +1118,8 @@ static void ide_ident (block_dev_desc_t *dev_desc)
* in words 64 through 70.
*/
if (iop.field_valid & 0x02) {
- /* Mode 3 and above are possible. Check in order from slow
+ /*
+ * Mode 3 and above are possible. Check in order from slow
* to fast, so we wind up with the highest mode allowed.
*/
if (iop.eide_pio_modes & 0x01)
@@ -1128,30 +1144,34 @@ static void ide_ident (block_dev_desc_t *dev_desc)
*/
mode = iop.tPIO;
- printf ("tPIO = 0x%02x = %d\n",mode, mode);
+ printf("tPIO = 0x%02x = %d\n", mode, mode);
if (mode > 2) { /* 2 is maximum allowed tPIO value */
mode = 2;
- debug ("Override tPIO -> 2\n");
+ debug("Override tPIO -> 2\n");
}
if (iop.field_valid & 2) { /* drive implements ATA2? */
- debug ("Drive implements ATA2\n");
+ debug("Drive implements ATA2\n");
if (iop.capability & 8) { /* drive supports use_iordy? */
cycle_time = iop.eide_pio_iordy;
} else {
cycle_time = iop.eide_pio;
}
- debug ("cycle time = %d\n", cycle_time);
+ debug("cycle time = %d\n", cycle_time);
mode = 4;
- if (cycle_time > 120) mode = 3; /* 120 ns for PIO mode 4 */
- if (cycle_time > 180) mode = 2; /* 180 ns for PIO mode 3 */
- if (cycle_time > 240) mode = 1; /* 240 ns for PIO mode 4 */
- if (cycle_time > 383) mode = 0; /* 383 ns for PIO mode 4 */
+ if (cycle_time > 120)
+ mode = 3; /* 120 ns for PIO mode 4 */
+ if (cycle_time > 180)
+ mode = 2; /* 180 ns for PIO mode 3 */
+ if (cycle_time > 240)
+ mode = 1; /* 240 ns for PIO mode 4 */
+ if (cycle_time > 383)
+ mode = 0; /* 383 ns for PIO mode 4 */
}
- printf ("PIO mode to use: PIO %d\n", mode);
+ printf("PIO mode to use: PIO %d\n", mode);
#endif /* 0 */
#ifdef CONFIG_ATAPI
- if (dev_desc->if_type==IF_TYPE_ATAPI) {
+ if (dev_desc->if_type == IF_TYPE_ATAPI) {
atapi_inquiry(dev_desc);
return;
}
@@ -1160,7 +1180,7 @@ static void ide_ident (block_dev_desc_t *dev_desc)
#ifdef __BIG_ENDIAN
/* swap shorts */
dev_desc->lba = (iop.lba_capacity << 16) | (iop.lba_capacity >> 16);
-#else /* ! __BIG_ENDIAN */
+#else /* ! __BIG_ENDIAN */
/*
* do not swap shorts on little endian
*
@@ -1168,48 +1188,49 @@ static void ide_ident (block_dev_desc_t *dev_desc)
* 6.2.1.6: Identfy Drive, Table 39, Word Address 57-58 for details.
*/
dev_desc->lba = iop.lba_capacity;
-#endif /* __BIG_ENDIAN */
+#endif /* __BIG_ENDIAN */
#ifdef CONFIG_LBA48
- if (iop.command_set_2 & 0x0400) { /* LBA 48 support */
+ if (iop.command_set_2 & 0x0400) { /* LBA 48 support */
dev_desc->lba48 = 1;
- dev_desc->lba = (unsigned long long)iop.lba48_capacity[0] |
- ((unsigned long long)iop.lba48_capacity[1] << 16) |
- ((unsigned long long)iop.lba48_capacity[2] << 32) |
- ((unsigned long long)iop.lba48_capacity[3] << 48);
+ dev_desc->lba = (unsigned long long) iop.lba48_capacity[0] |
+ ((unsigned long long) iop.lba48_capacity[1] << 16) |
+ ((unsigned long long) iop.lba48_capacity[2] << 32) |
+ ((unsigned long long) iop.lba48_capacity[3] << 48);
} else {
dev_desc->lba48 = 0;
}
#endif /* CONFIG_LBA48 */
/* assuming HD */
- dev_desc->type=DEV_TYPE_HARDDISK;
- dev_desc->blksz=ATA_BLOCKSIZE;
- dev_desc->lun=0; /* just to fill something in... */
-
-#if 0 /* only used to test the powersaving mode,
- * if enabled, the drive goes after 5 sec
- * in standby mode */
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
- c = ide_wait (device, IDE_TIME_OUT);
- ide_outb (device, ATA_SECT_CNT, 1);
- ide_outb (device, ATA_LBA_LOW, 0);
- ide_outb (device, ATA_LBA_MID, 0);
- ide_outb (device, ATA_LBA_HIGH, 0);
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
- ide_outb (device, ATA_COMMAND, 0xe3);
- udelay (50);
- c = ide_wait (device, IDE_TIME_OUT); /* can't take over 500 ms */
+ dev_desc->type = DEV_TYPE_HARDDISK;
+ dev_desc->blksz = ATA_BLOCKSIZE;
+ dev_desc->lun = 0; /* just to fill something in... */
+
+#if 0 /* only used to test the powersaving mode,
+ * if enabled, the drive goes after 5 sec
+ * in standby mode */
+ ide_outb(device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
+ c = ide_wait(device, IDE_TIME_OUT);
+ ide_outb(device, ATA_SECT_CNT, 1);
+ ide_outb(device, ATA_LBA_LOW, 0);
+ ide_outb(device, ATA_LBA_MID, 0);
+ ide_outb(device, ATA_LBA_HIGH, 0);
+ ide_outb(device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
+ ide_outb(device, ATA_COMMAND, 0xe3);
+ udelay(50);
+ c = ide_wait(device, IDE_TIME_OUT); /* can't take over 500 ms */
#endif
}
/* ------------------------------------------------------------------------- */
-ulong ide_read (int device, lbaint_t blknr, ulong blkcnt, void *buffer)
+ulong ide_read(int device, lbaint_t blknr, ulong blkcnt, void *buffer)
{
ulong n = 0;
unsigned char c;
- unsigned char pwrsave=0; /* power save */
+ unsigned char pwrsave = 0; /* power save */
+
#ifdef CONFIG_LBA48
unsigned char lba48 = 0;
@@ -1219,121 +1240,125 @@ ulong ide_read (int device, lbaint_t blknr, ulong blkcnt, void *buffer)
}
#endif
debug("ide_read dev %d start %lX, blocks %lX buffer at %lX\n",
- device, blknr, blkcnt, (ulong)buffer);
+ device, blknr, blkcnt, (ulong) buffer);
- ide_led (DEVICE_LED(device), 1); /* LED on */
+ ide_led(DEVICE_LED(device), 1); /* LED on */
/* Select device
*/
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
- c = ide_wait (device, IDE_TIME_OUT);
+ ide_outb(device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
+ c = ide_wait(device, IDE_TIME_OUT);
if (c & ATA_STAT_BUSY) {
- printf ("IDE read: device %d not ready\n", device);
+ printf("IDE read: device %d not ready\n", device);
goto IDE_READ_E;
}
/* first check if the drive is in Powersaving mode, if yes,
* increase the timeout value */
- ide_outb (device, ATA_COMMAND, ATA_CMD_CHK_PWR);
- udelay (50);
+ ide_outb(device, ATA_COMMAND, ATA_CMD_CHK_PWR);
+ udelay(50);
- c = ide_wait (device, IDE_TIME_OUT); /* can't take over 500 ms */
+ c = ide_wait(device, IDE_TIME_OUT); /* can't take over 500 ms */
if (c & ATA_STAT_BUSY) {
- printf ("IDE read: device %d not ready\n", device);
+ printf("IDE read: device %d not ready\n", device);
goto IDE_READ_E;
}
if ((c & ATA_STAT_ERR) == ATA_STAT_ERR) {
- printf ("No Powersaving mode %X\n", c);
+ printf("No Powersaving mode %X\n", c);
} else {
- c = ide_inb(device,ATA_SECT_CNT);
- debug ("Powersaving %02X\n",c);
- if(c==0)
- pwrsave=1;
+ c = ide_inb(device, ATA_SECT_CNT);
+ debug("Powersaving %02X\n", c);
+ if (c == 0)
+ pwrsave = 1;
}
while (blkcnt-- > 0) {
- c = ide_wait (device, IDE_TIME_OUT);
+ c = ide_wait(device, IDE_TIME_OUT);
if (c & ATA_STAT_BUSY) {
- printf ("IDE read: device %d not ready\n", device);
+ printf("IDE read: device %d not ready\n", device);
break;
}
#ifdef CONFIG_LBA48
if (lba48) {
/* write high bits */
- ide_outb (device, ATA_SECT_CNT, 0);
- ide_outb (device, ATA_LBA_LOW, (blknr >> 24) & 0xFF);
+ ide_outb(device, ATA_SECT_CNT, 0);
+ ide_outb(device, ATA_LBA_LOW, (blknr >> 24) & 0xFF);
#ifdef CONFIG_SYS_64BIT_LBA
- ide_outb (device, ATA_LBA_MID, (blknr >> 32) & 0xFF);
- ide_outb (device, ATA_LBA_HIGH, (blknr >> 40) & 0xFF);
+ ide_outb(device, ATA_LBA_MID, (blknr >> 32) & 0xFF);
+ ide_outb(device, ATA_LBA_HIGH, (blknr >> 40) & 0xFF);
#else
- ide_outb (device, ATA_LBA_MID, 0);
- ide_outb (device, ATA_LBA_HIGH, 0);
+ ide_outb(device, ATA_LBA_MID, 0);
+ ide_outb(device, ATA_LBA_HIGH, 0);
#endif
}
#endif
- ide_outb (device, ATA_SECT_CNT, 1);
- ide_outb (device, ATA_LBA_LOW, (blknr >> 0) & 0xFF);
- ide_outb (device, ATA_LBA_MID, (blknr >> 8) & 0xFF);
- ide_outb (device, ATA_LBA_HIGH, (blknr >> 16) & 0xFF);
+ ide_outb(device, ATA_SECT_CNT, 1);
+ ide_outb(device, ATA_LBA_LOW, (blknr >> 0) & 0xFF);
+ ide_outb(device, ATA_LBA_MID, (blknr >> 8) & 0xFF);
+ ide_outb(device, ATA_LBA_HIGH, (blknr >> 16) & 0xFF);
#ifdef CONFIG_LBA48
if (lba48) {
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device) );
- ide_outb (device, ATA_COMMAND, ATA_CMD_READ_EXT);
+ ide_outb(device, ATA_DEV_HD,
+ ATA_LBA | ATA_DEVICE(device));
+ ide_outb(device, ATA_COMMAND, ATA_CMD_READ_EXT);
} else
#endif
{
- ide_outb (device, ATA_DEV_HD, ATA_LBA |
- ATA_DEVICE(device) |
- ((blknr >> 24) & 0xF) );
- ide_outb (device, ATA_COMMAND, ATA_CMD_READ);
+ ide_outb(device, ATA_DEV_HD, ATA_LBA |
+ ATA_DEVICE(device) | ((blknr >> 24) & 0xF));
+ ide_outb(device, ATA_COMMAND, ATA_CMD_READ);
}
- udelay (50);
+ udelay(50);
- if(pwrsave) {
- c = ide_wait (device, IDE_SPIN_UP_TIME_OUT); /* may take up to 4 sec */
- pwrsave=0;
+ if (pwrsave) {
+ /* may take up to 4 sec */
+ c = ide_wait(device, IDE_SPIN_UP_TIME_OUT);
+ pwrsave = 0;
} else {
- c = ide_wait (device, IDE_TIME_OUT); /* can't take over 500 ms */
+ /* can't take over 500 ms */
+ c = ide_wait(device, IDE_TIME_OUT);
}
- if ((c&(ATA_STAT_DRQ|ATA_STAT_BUSY|ATA_STAT_ERR)) != ATA_STAT_DRQ) {
+ if ((c & (ATA_STAT_DRQ | ATA_STAT_BUSY | ATA_STAT_ERR)) !=
+ ATA_STAT_DRQ) {
#if defined(CONFIG_SYS_64BIT_LBA)
- printf ("Error (no IRQ) dev %d blk %Ld: status 0x%02x\n",
+ printf("Error (no IRQ) dev %d blk %lld: status 0x%02x\n",
device, blknr, c);
#else
- printf ("Error (no IRQ) dev %d blk %ld: status 0x%02x\n",
- device, (ulong)blknr, c);
+ printf("Error (no IRQ) dev %d blk %ld: status 0x%02x\n",
+ device, (ulong) blknr, c);
#endif
break;
}
- input_data (device, buffer, ATA_SECTORWORDS);
- (void) ide_inb (device, ATA_STATUS); /* clear IRQ */
+ input_data(device, buffer, ATA_SECTORWORDS);
+ (void) ide_inb(device, ATA_STATUS); /* clear IRQ */
++n;
++blknr;
buffer += ATA_BLOCKSIZE;
}
IDE_READ_E:
- ide_led (DEVICE_LED(device), 0); /* LED off */
+ ide_led(DEVICE_LED(device), 0); /* LED off */
return (n);
}
/* ------------------------------------------------------------------------- */
-ulong ide_write (int device, lbaint_t blknr, ulong blkcnt, const void *buffer)
+ulong ide_write(int device, lbaint_t blknr, ulong blkcnt, const void *buffer)
{
ulong n = 0;
unsigned char c;
+
#ifdef CONFIG_LBA48
unsigned char lba48 = 0;
@@ -1343,76 +1368,78 @@ ulong ide_write (int device, lbaint_t blknr, ulong blkcnt, const void *buffer)
}
#endif
- ide_led (DEVICE_LED(device), 1); /* LED on */
+ ide_led(DEVICE_LED(device), 1); /* LED on */
/* Select device
*/
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
+ ide_outb(device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
while (blkcnt-- > 0) {
- c = ide_wait (device, IDE_TIME_OUT);
+ c = ide_wait(device, IDE_TIME_OUT);
if (c & ATA_STAT_BUSY) {
- printf ("IDE read: device %d not ready\n", device);
+ printf("IDE read: device %d not ready\n", device);
goto WR_OUT;
}
#ifdef CONFIG_LBA48
if (lba48) {
/* write high bits */
- ide_outb (device, ATA_SECT_CNT, 0);
- ide_outb (device, ATA_LBA_LOW, (blknr >> 24) & 0xFF);
+ ide_outb(device, ATA_SECT_CNT, 0);
+ ide_outb(device, ATA_LBA_LOW, (blknr >> 24) & 0xFF);
#ifdef CONFIG_SYS_64BIT_LBA
- ide_outb (device, ATA_LBA_MID, (blknr >> 32) & 0xFF);
- ide_outb (device, ATA_LBA_HIGH, (blknr >> 40) & 0xFF);
+ ide_outb(device, ATA_LBA_MID, (blknr >> 32) & 0xFF);
+ ide_outb(device, ATA_LBA_HIGH, (blknr >> 40) & 0xFF);
#else
- ide_outb (device, ATA_LBA_MID, 0);
- ide_outb (device, ATA_LBA_HIGH, 0);
+ ide_outb(device, ATA_LBA_MID, 0);
+ ide_outb(device, ATA_LBA_HIGH, 0);
#endif
}
#endif
- ide_outb (device, ATA_SECT_CNT, 1);
- ide_outb (device, ATA_LBA_LOW, (blknr >> 0) & 0xFF);
- ide_outb (device, ATA_LBA_MID, (blknr >> 8) & 0xFF);
- ide_outb (device, ATA_LBA_HIGH, (blknr >> 16) & 0xFF);
+ ide_outb(device, ATA_SECT_CNT, 1);
+ ide_outb(device, ATA_LBA_LOW, (blknr >> 0) & 0xFF);
+ ide_outb(device, ATA_LBA_MID, (blknr >> 8) & 0xFF);
+ ide_outb(device, ATA_LBA_HIGH, (blknr >> 16) & 0xFF);
#ifdef CONFIG_LBA48
if (lba48) {
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device) );
- ide_outb (device, ATA_COMMAND, ATA_CMD_WRITE_EXT);
+ ide_outb(device, ATA_DEV_HD,
+ ATA_LBA | ATA_DEVICE(device));
+ ide_outb(device, ATA_COMMAND, ATA_CMD_WRITE_EXT);
} else
#endif
{
- ide_outb (device, ATA_DEV_HD, ATA_LBA |
- ATA_DEVICE(device) |
- ((blknr >> 24) & 0xF) );
- ide_outb (device, ATA_COMMAND, ATA_CMD_WRITE);
+ ide_outb(device, ATA_DEV_HD, ATA_LBA |
+ ATA_DEVICE(device) | ((blknr >> 24) & 0xF));
+ ide_outb(device, ATA_COMMAND, ATA_CMD_WRITE);
}
- udelay (50);
+ udelay(50);
- c = ide_wait (device, IDE_TIME_OUT); /* can't take over 500 ms */
+ /* can't take over 500 ms */
+ c = ide_wait(device, IDE_TIME_OUT);
- if ((c&(ATA_STAT_DRQ|ATA_STAT_BUSY|ATA_STAT_ERR)) != ATA_STAT_DRQ) {
+ if ((c & (ATA_STAT_DRQ | ATA_STAT_BUSY | ATA_STAT_ERR)) !=
+ ATA_STAT_DRQ) {
#if defined(CONFIG_SYS_64BIT_LBA)
- printf ("Error (no IRQ) dev %d blk %Ld: status 0x%02x\n",
+ printf("Error (no IRQ) dev %d blk %lld: status 0x%02x\n",
device, blknr, c);
#else
- printf ("Error (no IRQ) dev %d blk %ld: status 0x%02x\n",
- device, (ulong)blknr, c);
+ printf("Error (no IRQ) dev %d blk %ld: status 0x%02x\n",
+ device, (ulong) blknr, c);
#endif
goto WR_OUT;
}
- output_data (device, buffer, ATA_SECTORWORDS);
- c = ide_inb (device, ATA_STATUS); /* clear IRQ */
+ output_data(device, buffer, ATA_SECTORWORDS);
+ c = ide_inb(device, ATA_STATUS); /* clear IRQ */
++n;
++blknr;
buffer += ATA_BLOCKSIZE;
}
WR_OUT:
- ide_led (DEVICE_LED(device), 0); /* LED off */
+ ide_led(DEVICE_LED(device), 0); /* LED off */
return (n);
}
@@ -1423,23 +1450,24 @@ WR_OUT:
* terminate the string
* "len" is the size of available memory including the terminating '\0'
*/
-static void ident_cpy (unsigned char *dst, unsigned char *src, unsigned int len)
+static void ident_cpy(unsigned char *dst, unsigned char *src,
+ unsigned int len)
{
unsigned char *end, *last;
last = dst;
- end = src + len - 1;
+ end = src + len - 1;
/* reserve space for '\0' */
if (len < 2)
goto OUT;
/* skip leading white space */
- while ((*src) && (src<end) && (*src==' '))
+ while ((*src) && (src < end) && (*src == ' '))
++src;
/* copy string, omitting trailing white space */
- while ((*src) && (src<end)) {
+ while ((*src) && (src < end)) {
*dst++ = *src;
if (*src++ != ' ')
last = dst;
@@ -1454,16 +1482,15 @@ OUT:
* Wait until Busy bit is off, or timeout (in ms)
* Return last status
*/
-static uchar ide_wait (int dev, ulong t)
+static uchar ide_wait(int dev, ulong t)
{
- ulong delay = 10 * t; /* poll every 100 us */
+ ulong delay = 10 * t; /* poll every 100 us */
uchar c;
while ((c = ide_inb(dev, ATA_STATUS)) & ATA_STAT_BUSY) {
- udelay (100);
- if (delay-- == 0) {
+ udelay(100);
+ if (delay-- == 0)
break;
- }
}
return (c);
}
@@ -1473,20 +1500,20 @@ static uchar ide_wait (int dev, ulong t)
#ifdef CONFIG_IDE_RESET
extern void ide_set_reset(int idereset);
-static void ide_reset (void)
+static void ide_reset(void)
{
#if defined(CONFIG_SYS_PB_12V_ENABLE) || defined(CONFIG_SYS_PB_IDE_MOTOR)
- volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+ volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
#endif
int i;
curr_device = -1;
- for (i=0; i<CONFIG_SYS_IDE_MAXBUS; ++i)
+ for (i = 0; i < CONFIG_SYS_IDE_MAXBUS; ++i)
ide_bus_ok[i] = 0;
- for (i=0; i<CONFIG_SYS_IDE_MAXDEVICE; ++i)
+ for (i = 0; i < CONFIG_SYS_IDE_MAXDEVICE; ++i)
ide_dev_desc[i].type = DEV_TYPE_UNKNOWN;
- ide_set_reset (1); /* assert reset */
+ ide_set_reset(1); /* assert reset */
/* the reset signal shall be asserted for et least 25 us */
udelay(25);
@@ -1494,19 +1521,20 @@ static void ide_reset (void)
WATCHDOG_RESET();
#ifdef CONFIG_SYS_PB_12V_ENABLE
- immr->im_cpm.cp_pbdat &= ~(CONFIG_SYS_PB_12V_ENABLE); /* 12V Enable output OFF */
+ /* 12V Enable output OFF */
+ immr->im_cpm.cp_pbdat &= ~(CONFIG_SYS_PB_12V_ENABLE);
+
immr->im_cpm.cp_pbpar &= ~(CONFIG_SYS_PB_12V_ENABLE);
immr->im_cpm.cp_pbodr &= ~(CONFIG_SYS_PB_12V_ENABLE);
- immr->im_cpm.cp_pbdir |= CONFIG_SYS_PB_12V_ENABLE;
+ immr->im_cpm.cp_pbdir |= CONFIG_SYS_PB_12V_ENABLE;
- /* wait 500 ms for the voltage to stabilize
- */
- for (i=0; i<500; ++i) {
- udelay (1000);
- }
+ /* wait 500 ms for the voltage to stabilize */
+ for (i = 0; i < 500; ++i)
+ udelay(1000);
- immr->im_cpm.cp_pbdat |= CONFIG_SYS_PB_12V_ENABLE; /* 12V Enable output ON */
-#endif /* CONFIG_SYS_PB_12V_ENABLE */
+ /* 12V Enable output ON */
+ immr->im_cpm.cp_pbdat |= CONFIG_SYS_PB_12V_ENABLE;
+#endif /* CONFIG_SYS_PB_12V_ENABLE */
#ifdef CONFIG_SYS_PB_IDE_MOTOR
/* configure IDE Motor voltage monitor pin as input */
@@ -1514,27 +1542,26 @@ static void ide_reset (void)
immr->im_cpm.cp_pbodr &= ~(CONFIG_SYS_PB_IDE_MOTOR);
immr->im_cpm.cp_pbdir &= ~(CONFIG_SYS_PB_IDE_MOTOR);
- /* wait up to 1 s for the motor voltage to stabilize
- */
- for (i=0; i<1000; ++i) {
+ /* wait up to 1 s for the motor voltage to stabilize */
+ for (i = 0; i < 1000; ++i) {
if ((immr->im_cpm.cp_pbdat & CONFIG_SYS_PB_IDE_MOTOR) != 0) {
break;
}
- udelay (1000);
+ udelay(1000);
}
if (i == 1000) { /* Timeout */
- printf ("\nWarning: 5V for IDE Motor missing\n");
-# ifdef CONFIG_STATUS_LED
-# ifdef STATUS_LED_YELLOW
- status_led_set (STATUS_LED_YELLOW, STATUS_LED_ON );
-# endif
-# ifdef STATUS_LED_GREEN
- status_led_set (STATUS_LED_GREEN, STATUS_LED_OFF);
-# endif
-# endif /* CONFIG_STATUS_LED */
+ printf("\nWarning: 5V for IDE Motor missing\n");
+#ifdef CONFIG_STATUS_LED
+#ifdef STATUS_LED_YELLOW
+ status_led_set(STATUS_LED_YELLOW, STATUS_LED_ON);
+#endif
+#ifdef STATUS_LED_GREEN
+ status_led_set(STATUS_LED_GREEN, STATUS_LED_OFF);
+#endif
+#endif /* CONFIG_STATUS_LED */
}
-#endif /* CONFIG_SYS_PB_IDE_MOTOR */
+#endif /* CONFIG_SYS_PB_IDE_MOTOR */
WATCHDOG_RESET();
@@ -1542,12 +1569,11 @@ static void ide_reset (void)
ide_set_reset(0);
/* wait 250 ms */
- for (i=0; i<250; ++i) {
- udelay (1000);
- }
+ for (i = 0; i < 250; ++i)
+ udelay(1000);
}
-#endif /* CONFIG_IDE_RESET */
+#endif /* CONFIG_IDE_RESET */
/* ------------------------------------------------------------------------- */
@@ -1556,22 +1582,21 @@ static void ide_reset (void)
!defined(CONFIG_KUP4K) && \
!defined(CONFIG_KUP4X)
-static uchar led_buffer = 0; /* Buffer for current LED status */
+static uchar led_buffer; /* Buffer for current LED status */
-static void ide_led (uchar led, uchar status)
+static void ide_led(uchar led, uchar status)
{
uchar *led_port = LED_PORT;
- if (status) { /* switch LED on */
- led_buffer |= led;
- } else { /* switch LED off */
+ if (status) /* switch LED on */
+ led_buffer |= led;
+ else /* switch LED off */
led_buffer &= ~led;
- }
*led_port = led_buffer;
}
-#endif /* CONFIG_IDE_LED */
+#endif /* CONFIG_IDE_LED */
#if defined(CONFIG_OF_IDE_FIXUP)
int ide_device_present(int dev)
@@ -1591,16 +1616,15 @@ int ide_device_present(int dev)
#if defined(CONFIG_IDE_SWAP_IO)
/* since ATAPI may use commands with not 4 bytes alligned length
* we have our own transfer functions, 2 bytes alligned */
-static void
-output_data_shorts(int dev, ushort *sect_buf, int shorts)
+static void output_data_shorts(int dev, ushort *sect_buf, int shorts)
{
#if defined(CONFIG_CPC45)
- uchar *dbuf;
- volatile uchar *pbuf_even;
- volatile uchar *pbuf_odd;
+ uchar *dbuf;
+ volatile uchar *pbuf_even;
+ volatile uchar *pbuf_odd;
- pbuf_even = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_EVEN);
- pbuf_odd = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_ODD);
+ pbuf_even = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
+ pbuf_odd = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
while (shorts--) {
EIEIO;
*pbuf_even = *dbuf++;
@@ -1608,13 +1632,14 @@ output_data_shorts(int dev, ushort *sect_buf, int shorts)
*pbuf_odd = *dbuf++;
}
#else
- ushort *dbuf;
- volatile ushort *pbuf;
+ ushort *dbuf;
+ volatile ushort *pbuf;
- pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
- dbuf = (ushort *)sect_buf;
+ pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
+ dbuf = (ushort *) sect_buf;
- debug ("in output data shorts base for read is %lx\n", (unsigned long) pbuf);
+ debug("in output data shorts base for read is %lx\n",
+ (unsigned long) pbuf);
while (shorts--) {
EIEIO;
@@ -1623,16 +1648,15 @@ output_data_shorts(int dev, ushort *sect_buf, int shorts)
#endif
}
-static void
-input_data_shorts(int dev, ushort *sect_buf, int shorts)
+static void input_data_shorts(int dev, ushort *sect_buf, int shorts)
{
#if defined(CONFIG_CPC45)
- uchar *dbuf;
- volatile uchar *pbuf_even;
- volatile uchar *pbuf_odd;
+ uchar *dbuf;
+ volatile uchar *pbuf_even;
+ volatile uchar *pbuf_odd;
- pbuf_even = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_EVEN);
- pbuf_odd = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_ODD);
+ pbuf_even = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
+ pbuf_odd = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
while (shorts--) {
EIEIO;
*dbuf++ = *pbuf_even;
@@ -1640,13 +1664,14 @@ input_data_shorts(int dev, ushort *sect_buf, int shorts)
*dbuf++ = *pbuf_odd;
}
#else
- ushort *dbuf;
- volatile ushort *pbuf;
+ ushort *dbuf;
+ volatile ushort *pbuf;
- pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
- dbuf = (ushort *)sect_buf;
+ pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
+ dbuf = (ushort *) sect_buf;
- debug("in input data shorts base for read is %lx\n", (unsigned long) pbuf);
+ debug("in input data shorts base for read is %lx\n",
+ (unsigned long) pbuf);
while (shorts--) {
EIEIO;
@@ -1655,20 +1680,18 @@ input_data_shorts(int dev, ushort *sect_buf, int shorts)
#endif
}
-#else /* ! CONFIG_IDE_SWAP_IO */
-static void
-output_data_shorts(int dev, ushort *sect_buf, int shorts)
+#else /* ! CONFIG_IDE_SWAP_IO */
+static void output_data_shorts(int dev, ushort *sect_buf, int shorts)
{
- outsw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, shorts);
+ outsw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, shorts);
}
-static void
-input_data_shorts(int dev, ushort *sect_buf, int shorts)
+static void input_data_shorts(int dev, ushort *sect_buf, int shorts)
{
- insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, shorts);
+ insw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, shorts);
}
-#endif /* CONFIG_IDE_SWAP_IO */
+#endif /* CONFIG_IDE_SWAP_IO */
/*
* Wait until (Status & mask) == res, or timeout (in ms)
@@ -1676,20 +1699,21 @@ input_data_shorts(int dev, ushort *sect_buf, int shorts)
* This is used since some ATAPI CD ROMs clears their Busy Bit first
* and then they set their DRQ Bit
*/
-static uchar atapi_wait_mask (int dev, ulong t,uchar mask, uchar res)
+static uchar atapi_wait_mask(int dev, ulong t, uchar mask, uchar res)
{
- ulong delay = 10 * t; /* poll every 100 us */
+ ulong delay = 10 * t; /* poll every 100 us */
uchar c;
- c = ide_inb(dev,ATA_DEV_CTL); /* prevents to read the status before valid */
+ /* prevents to read the status before valid */
+ c = ide_inb(dev, ATA_DEV_CTL);
+
while (((c = ide_inb(dev, ATA_STATUS)) & mask) != res) {
/* break if error occurs (doesn't make sense to wait more) */
- if((c & ATA_STAT_ERR)==ATA_STAT_ERR)
+ if ((c & ATA_STAT_ERR) == ATA_STAT_ERR)
break;
- udelay (100);
- if (delay-- == 0) {
+ udelay(100);
+ if (delay-- == 0)
break;
- }
}
return (c);
}
@@ -1697,106 +1721,122 @@ static uchar atapi_wait_mask (int dev, ulong t,uchar mask, uchar res)
/*
* issue an atapi command
*/
-unsigned char atapi_issue(int device,unsigned char* ccb,int ccblen, unsigned char * buffer,int buflen)
+unsigned char atapi_issue(int device, unsigned char *ccb, int ccblen,
+ unsigned char *buffer, int buflen)
{
- unsigned char c,err,mask,res;
+ unsigned char c, err, mask, res;
int n;
- ide_led (DEVICE_LED(device), 1); /* LED on */
+
+ ide_led(DEVICE_LED(device), 1); /* LED on */
/* Select device
*/
- mask = ATA_STAT_BUSY|ATA_STAT_DRQ;
+ mask = ATA_STAT_BUSY | ATA_STAT_DRQ;
res = 0;
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
- c = atapi_wait_mask(device,ATAPI_TIME_OUT,mask,res);
+ ide_outb(device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
+ c = atapi_wait_mask(device, ATAPI_TIME_OUT, mask, res);
if ((c & mask) != res) {
- printf ("ATAPI_ISSUE: device %d not ready status %X\n", device,c);
- err=0xFF;
+ printf("ATAPI_ISSUE: device %d not ready status %X\n", device,
+ c);
+ err = 0xFF;
goto AI_OUT;
}
/* write taskfile */
- ide_outb (device, ATA_ERROR_REG, 0); /* no DMA, no overlaped */
- ide_outb (device, ATA_SECT_CNT, 0);
- ide_outb (device, ATA_SECT_NUM, 0);
- ide_outb (device, ATA_CYL_LOW, (unsigned char)(buflen & 0xFF));
- ide_outb (device, ATA_CYL_HIGH, (unsigned char)((buflen>>8) & 0xFF));
- ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
-
- ide_outb (device, ATA_COMMAND, ATAPI_CMD_PACKET);
- udelay (50);
-
- mask = ATA_STAT_DRQ|ATA_STAT_BUSY|ATA_STAT_ERR;
+ ide_outb(device, ATA_ERROR_REG, 0); /* no DMA, no overlaped */
+ ide_outb(device, ATA_SECT_CNT, 0);
+ ide_outb(device, ATA_SECT_NUM, 0);
+ ide_outb(device, ATA_CYL_LOW, (unsigned char) (buflen & 0xFF));
+ ide_outb(device, ATA_CYL_HIGH,
+ (unsigned char) ((buflen >> 8) & 0xFF));
+ ide_outb(device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device));
+
+ ide_outb(device, ATA_COMMAND, ATAPI_CMD_PACKET);
+ udelay(50);
+
+ mask = ATA_STAT_DRQ | ATA_STAT_BUSY | ATA_STAT_ERR;
res = ATA_STAT_DRQ;
- c = atapi_wait_mask(device,ATAPI_TIME_OUT,mask,res);
+ c = atapi_wait_mask(device, ATAPI_TIME_OUT, mask, res);
- if ((c & mask) != res) { /* DRQ must be 1, BSY 0 */
- printf ("ATAPI_ISSUE: Error (no IRQ) before sending ccb dev %d status 0x%02x\n",device,c);
- err=0xFF;
+ if ((c & mask) != res) { /* DRQ must be 1, BSY 0 */
+ printf("ATAPI_ISSUE: Error (no IRQ) before sending ccb dev %d status 0x%02x\n",
+ device, c);
+ err = 0xFF;
goto AI_OUT;
}
- output_data_shorts (device, (unsigned short *)ccb,ccblen/2); /* write command block */
+ /* write command block */
+ output_data_shorts(device, (unsigned short *) ccb, ccblen / 2);
+
/* ATAPI Command written wait for completition */
- udelay (5000); /* device must set bsy */
+ udelay(5000); /* device must set bsy */
- mask = ATA_STAT_DRQ|ATA_STAT_BUSY|ATA_STAT_ERR;
- /* if no data wait for DRQ = 0 BSY = 0
- * if data wait for DRQ = 1 BSY = 0 */
- res=0;
- if(buflen)
+ mask = ATA_STAT_DRQ | ATA_STAT_BUSY | ATA_STAT_ERR;
+ /*
+ * if no data wait for DRQ = 0 BSY = 0
+ * if data wait for DRQ = 1 BSY = 0
+ */
+ res = 0;
+ if (buflen)
res = ATA_STAT_DRQ;
- c = atapi_wait_mask(device,ATAPI_TIME_OUT,mask,res);
- if ((c & mask) != res ) {
+ c = atapi_wait_mask(device, ATAPI_TIME_OUT, mask, res);
+ if ((c & mask) != res) {
if (c & ATA_STAT_ERR) {
- err=(ide_inb(device,ATA_ERROR_REG))>>4;
- debug ("atapi_issue 1 returned sense key %X status %02X\n",err,c);
+ err = (ide_inb(device, ATA_ERROR_REG)) >> 4;
+ debug("atapi_issue 1 returned sense key %X status %02X\n",
+ err, c);
} else {
- printf ("ATAPI_ISSUE: (no DRQ) after sending ccb (%x) status 0x%02x\n", ccb[0],c);
- err=0xFF;
+ printf("ATAPI_ISSUE: (no DRQ) after sending ccb (%x) status 0x%02x\n",
+ ccb[0], c);
+ err = 0xFF;
}
goto AI_OUT;
}
- n=ide_inb(device, ATA_CYL_HIGH);
- n<<=8;
- n+=ide_inb(device, ATA_CYL_LOW);
- if(n>buflen) {
- printf("ERROR, transfer bytes %d requested only %d\n",n,buflen);
- err=0xff;
+ n = ide_inb(device, ATA_CYL_HIGH);
+ n <<= 8;
+ n += ide_inb(device, ATA_CYL_LOW);
+ if (n > buflen) {
+ printf("ERROR, transfer bytes %d requested only %d\n", n,
+ buflen);
+ err = 0xff;
goto AI_OUT;
}
- if((n==0)&&(buflen<0)) {
- printf("ERROR, transfer bytes %d requested %d\n",n,buflen);
- err=0xff;
+ if ((n == 0) && (buflen < 0)) {
+ printf("ERROR, transfer bytes %d requested %d\n", n, buflen);
+ err = 0xff;
goto AI_OUT;
}
- if(n!=buflen) {
- debug ("WARNING, transfer bytes %d not equal with requested %d\n",n,buflen);
+ if (n != buflen) {
+ debug("WARNING, transfer bytes %d not equal with requested %d\n",
+ n, buflen);
}
- if(n!=0) { /* data transfer */
- debug ("ATAPI_ISSUE: %d Bytes to transfer\n",n);
- /* we transfer shorts */
- n>>=1;
+ if (n != 0) { /* data transfer */
+ debug("ATAPI_ISSUE: %d Bytes to transfer\n", n);
+ /* we transfer shorts */
+ n >>= 1;
/* ok now decide if it is an in or output */
- if ((ide_inb(device, ATA_SECT_CNT)&0x02)==0) {
- debug ("Write to device\n");
- output_data_shorts(device,(unsigned short *)buffer,n);
+ if ((ide_inb(device, ATA_SECT_CNT) & 0x02) == 0) {
+ debug("Write to device\n");
+ output_data_shorts(device, (unsigned short *) buffer,
+ n);
} else {
- debug ("Read from device @ %p shorts %d\n",buffer,n);
- input_data_shorts(device,(unsigned short *)buffer,n);
+ debug("Read from device @ %p shorts %d\n", buffer, n);
+ input_data_shorts(device, (unsigned short *) buffer,
+ n);
}
}
- udelay(5000); /* seems that some CD ROMs need this... */
- mask = ATA_STAT_BUSY|ATA_STAT_ERR;
- res=0;
- c = atapi_wait_mask(device,ATAPI_TIME_OUT,mask,res);
+ udelay(5000); /* seems that some CD ROMs need this... */
+ mask = ATA_STAT_BUSY | ATA_STAT_ERR;
+ res = 0;
+ c = atapi_wait_mask(device, ATAPI_TIME_OUT, mask, res);
if ((c & ATA_STAT_ERR) == ATA_STAT_ERR) {
- err=(ide_inb(device,ATA_ERROR_REG) >> 4);
- debug ("atapi_issue 2 returned sense key %X status %X\n",err,c);
+ err = (ide_inb(device, ATA_ERROR_REG) >> 4);
+ debug("atapi_issue 2 returned sense key %X status %X\n", err,
+ c);
} else {
err = 0;
}
AI_OUT:
- ide_led (DEVICE_LED(device), 0); /* LED off */
+ ide_led(DEVICE_LED(device), 0); /* LED off */
return (err);
}
@@ -1808,155 +1848,153 @@ AI_OUT:
#define ATAPI_DRIVE_NOT_READY 100
#define ATAPI_UNIT_ATTN 10
-unsigned char atapi_issue_autoreq (int device,
- unsigned char* ccb,
- int ccblen,
- unsigned char *buffer,
- int buflen)
+unsigned char atapi_issue_autoreq(int device,
+ unsigned char *ccb,
+ int ccblen,
+ unsigned char *buffer, int buflen)
{
- unsigned char sense_data[18],sense_ccb[12];
- unsigned char res,key,asc,ascq;
- int notready,unitattn;
+ unsigned char sense_data[18], sense_ccb[12];
+ unsigned char res, key, asc, ascq;
+ int notready, unitattn;
- unitattn=ATAPI_UNIT_ATTN;
- notready=ATAPI_DRIVE_NOT_READY;
+ unitattn = ATAPI_UNIT_ATTN;
+ notready = ATAPI_DRIVE_NOT_READY;
retry:
- res= atapi_issue(device,ccb,ccblen,buffer,buflen);
- if (res==0)
- return (0); /* Ok */
-
- if (res==0xFF)
- return (0xFF); /* error */
-
- debug ("(auto_req)atapi_issue returned sense key %X\n",res);
-
- memset(sense_ccb,0,sizeof(sense_ccb));
- memset(sense_data,0,sizeof(sense_data));
- sense_ccb[0]=ATAPI_CMD_REQ_SENSE;
- sense_ccb[4]=18; /* allocation Length */
-
- res=atapi_issue(device,sense_ccb,12,sense_data,18);
- key=(sense_data[2]&0xF);
- asc=(sense_data[12]);
- ascq=(sense_data[13]);
-
- debug ("ATAPI_CMD_REQ_SENSE returned %x\n",res);
- debug (" Sense page: %02X key %02X ASC %02X ASCQ %02X\n",
- sense_data[0],
- key,
- asc,
- ascq);
-
- if((key==0))
- return 0; /* ok device ready */
-
- if((key==6)|| (asc==0x29) || (asc==0x28)) { /* Unit Attention */
- if(unitattn-->0) {
- udelay(200*1000);
+ res = atapi_issue(device, ccb, ccblen, buffer, buflen);
+ if (res == 0)
+ return 0; /* Ok */
+
+ if (res == 0xFF)
+ return 0xFF; /* error */
+
+ debug("(auto_req)atapi_issue returned sense key %X\n", res);
+
+ memset(sense_ccb, 0, sizeof(sense_ccb));
+ memset(sense_data, 0, sizeof(sense_data));
+ sense_ccb[0] = ATAPI_CMD_REQ_SENSE;
+ sense_ccb[4] = 18; /* allocation Length */
+
+ res = atapi_issue(device, sense_ccb, 12, sense_data, 18);
+ key = (sense_data[2] & 0xF);
+ asc = (sense_data[12]);
+ ascq = (sense_data[13]);
+
+ debug("ATAPI_CMD_REQ_SENSE returned %x\n", res);
+ debug(" Sense page: %02X key %02X ASC %02X ASCQ %02X\n",
+ sense_data[0], key, asc, ascq);
+
+ if ((key == 0))
+ return 0; /* ok device ready */
+
+ if ((key == 6) || (asc == 0x29) || (asc == 0x28)) { /* Unit Attention */
+ if (unitattn-- > 0) {
+ udelay(200 * 1000);
goto retry;
}
- printf("Unit Attention, tried %d\n",ATAPI_UNIT_ATTN);
+ printf("Unit Attention, tried %d\n", ATAPI_UNIT_ATTN);
goto error;
}
- if((asc==0x4) && (ascq==0x1)) { /* not ready, but will be ready soon */
- if (notready-->0) {
- udelay(200*1000);
+ if ((asc == 0x4) && (ascq == 0x1)) {
+ /* not ready, but will be ready soon */
+ if (notready-- > 0) {
+ udelay(200 * 1000);
goto retry;
}
- printf("Drive not ready, tried %d times\n",ATAPI_DRIVE_NOT_READY);
+ printf("Drive not ready, tried %d times\n",
+ ATAPI_DRIVE_NOT_READY);
goto error;
}
- if(asc==0x3a) {
- debug ("Media not present\n");
+ if (asc == 0x3a) {
+ debug("Media not present\n");
goto error;
}
- printf ("ERROR: Unknown Sense key %02X ASC %02X ASCQ %02X\n",key,asc,ascq);
+ printf("ERROR: Unknown Sense key %02X ASC %02X ASCQ %02X\n", key, asc,
+ ascq);
error:
- debug ("ERROR Sense key %02X ASC %02X ASCQ %02X\n",key,asc,ascq);
+ debug("ERROR Sense key %02X ASC %02X ASCQ %02X\n", key, asc, ascq);
return (0xFF);
}
-static void atapi_inquiry(block_dev_desc_t * dev_desc)
+static void atapi_inquiry(block_dev_desc_t *dev_desc)
{
- unsigned char ccb[12]; /* Command descriptor block */
- unsigned char iobuf[64]; /* temp buf */
+ unsigned char ccb[12]; /* Command descriptor block */
+ unsigned char iobuf[64]; /* temp buf */
unsigned char c;
int device;
- device=dev_desc->dev;
- dev_desc->type=DEV_TYPE_UNKNOWN; /* not yet valid */
- dev_desc->block_read=atapi_read;
+ device = dev_desc->dev;
+ dev_desc->type = DEV_TYPE_UNKNOWN; /* not yet valid */
+ dev_desc->block_read = atapi_read;
- memset(ccb,0,sizeof(ccb));
- memset(iobuf,0,sizeof(iobuf));
+ memset(ccb, 0, sizeof(ccb));
+ memset(iobuf, 0, sizeof(iobuf));
- ccb[0]=ATAPI_CMD_INQUIRY;
- ccb[4]=40; /* allocation Legnth */
- c=atapi_issue_autoreq(device,ccb,12,(unsigned char *)iobuf,40);
+ ccb[0] = ATAPI_CMD_INQUIRY;
+ ccb[4] = 40; /* allocation Legnth */
+ c = atapi_issue_autoreq(device, ccb, 12, (unsigned char *) iobuf, 40);
- debug ("ATAPI_CMD_INQUIRY returned %x\n",c);
- if (c!=0)
+ debug("ATAPI_CMD_INQUIRY returned %x\n", c);
+ if (c != 0)
return;
/* copy device ident strings */
- ident_cpy((unsigned char*)dev_desc->vendor,&iobuf[8],8);
- ident_cpy((unsigned char*)dev_desc->product,&iobuf[16],16);
- ident_cpy((unsigned char*)dev_desc->revision,&iobuf[32],5);
+ ident_cpy((unsigned char *) dev_desc->vendor, &iobuf[8], 8);
+ ident_cpy((unsigned char *) dev_desc->product, &iobuf[16], 16);
+ ident_cpy((unsigned char *) dev_desc->revision, &iobuf[32], 5);
- dev_desc->lun=0;
- dev_desc->lba=0;
- dev_desc->blksz=0;
- dev_desc->type=iobuf[0] & 0x1f;
+ dev_desc->lun = 0;
+ dev_desc->lba = 0;
+ dev_desc->blksz = 0;
+ dev_desc->type = iobuf[0] & 0x1f;
- if ((iobuf[1]&0x80)==0x80)
+ if ((iobuf[1] & 0x80) == 0x80)
dev_desc->removable = 1;
else
dev_desc->removable = 0;
- memset(ccb,0,sizeof(ccb));
- memset(iobuf,0,sizeof(iobuf));
- ccb[0]=ATAPI_CMD_START_STOP;
- ccb[4]=0x03; /* start */
+ memset(ccb, 0, sizeof(ccb));
+ memset(iobuf, 0, sizeof(iobuf));
+ ccb[0] = ATAPI_CMD_START_STOP;
+ ccb[4] = 0x03; /* start */
- c=atapi_issue_autoreq(device,ccb,12,(unsigned char *)iobuf,0);
+ c = atapi_issue_autoreq(device, ccb, 12, (unsigned char *) iobuf, 0);
- debug ("ATAPI_CMD_START_STOP returned %x\n",c);
- if (c!=0)
+ debug("ATAPI_CMD_START_STOP returned %x\n", c);
+ if (c != 0)
return;
- memset(ccb,0,sizeof(ccb));
- memset(iobuf,0,sizeof(iobuf));
- c=atapi_issue_autoreq(device,ccb,12,(unsigned char *)iobuf,0);
+ memset(ccb, 0, sizeof(ccb));
+ memset(iobuf, 0, sizeof(iobuf));
+ c = atapi_issue_autoreq(device, ccb, 12, (unsigned char *) iobuf, 0);
- debug ("ATAPI_CMD_UNIT_TEST_READY returned %x\n",c);
- if (c!=0)
+ debug("ATAPI_CMD_UNIT_TEST_READY returned %x\n", c);
+ if (c != 0)
return;
- memset(ccb,0,sizeof(ccb));
- memset(iobuf,0,sizeof(iobuf));
- ccb[0]=ATAPI_CMD_READ_CAP;
- c=atapi_issue_autoreq(device,ccb,12,(unsigned char *)iobuf,8);
- debug ("ATAPI_CMD_READ_CAP returned %x\n",c);
- if (c!=0)
+ memset(ccb, 0, sizeof(ccb));
+ memset(iobuf, 0, sizeof(iobuf));
+ ccb[0] = ATAPI_CMD_READ_CAP;
+ c = atapi_issue_autoreq(device, ccb, 12, (unsigned char *) iobuf, 8);
+ debug("ATAPI_CMD_READ_CAP returned %x\n", c);
+ if (c != 0)
return;
- debug ("Read Cap: LBA %02X%02X%02X%02X blksize %02X%02X%02X%02X\n",
- iobuf[0],iobuf[1],iobuf[2],iobuf[3],
- iobuf[4],iobuf[5],iobuf[6],iobuf[7]);
-
- dev_desc->lba =((unsigned long)iobuf[0]<<24) +
- ((unsigned long)iobuf[1]<<16) +
- ((unsigned long)iobuf[2]<< 8) +
- ((unsigned long)iobuf[3]);
- dev_desc->blksz=((unsigned long)iobuf[4]<<24) +
- ((unsigned long)iobuf[5]<<16) +
- ((unsigned long)iobuf[6]<< 8) +
- ((unsigned long)iobuf[7]);
+ debug("Read Cap: LBA %02X%02X%02X%02X blksize %02X%02X%02X%02X\n",
+ iobuf[0], iobuf[1], iobuf[2], iobuf[3],
+ iobuf[4], iobuf[5], iobuf[6], iobuf[7]);
+
+ dev_desc->lba = ((unsigned long) iobuf[0] << 24) +
+ ((unsigned long) iobuf[1] << 16) +
+ ((unsigned long) iobuf[2] << 8) + ((unsigned long) iobuf[3]);
+ dev_desc->blksz = ((unsigned long) iobuf[4] << 24) +
+ ((unsigned long) iobuf[5] << 16) +
+ ((unsigned long) iobuf[6] << 8) + ((unsigned long) iobuf[7]);
#ifdef CONFIG_LBA48
- dev_desc->lba48 = 0; /* ATAPI devices cannot use 48bit addressing (ATA/ATAPI v7) */
+ /* ATAPI devices cannot use 48bit addressing (ATA/ATAPI v7) */
+ dev_desc->lba48 = 0;
#endif
return;
}
@@ -1969,45 +2007,46 @@ static void atapi_inquiry(block_dev_desc_t * dev_desc)
*/
#define ATAPI_READ_MAX_BYTES 2048 /* we read max 2kbytes */
#define ATAPI_READ_BLOCK_SIZE 2048 /* assuming CD part */
-#define ATAPI_READ_MAX_BLOCK ATAPI_READ_MAX_BYTES/ATAPI_READ_BLOCK_SIZE /* max blocks */
+#define ATAPI_READ_MAX_BLOCK (ATAPI_READ_MAX_BYTES/ATAPI_READ_BLOCK_SIZE)
-ulong atapi_read (int device, lbaint_t blknr, ulong blkcnt, void *buffer)
+ulong atapi_read(int device, lbaint_t blknr, ulong blkcnt, void *buffer)
{
ulong n = 0;
- unsigned char ccb[12]; /* Command descriptor block */
+ unsigned char ccb[12]; /* Command descriptor block */
ulong cnt;
- debug ("atapi_read dev %d start %lX, blocks %lX buffer at %lX\n",
- device, blknr, blkcnt, (ulong)buffer);
+ debug("atapi_read dev %d start %lX, blocks %lX buffer at %lX\n",
+ device, blknr, blkcnt, (ulong) buffer);
do {
- if (blkcnt>ATAPI_READ_MAX_BLOCK) {
- cnt=ATAPI_READ_MAX_BLOCK;
- } else {
- cnt=blkcnt;
- }
- ccb[0]=ATAPI_CMD_READ_12;
- ccb[1]=0; /* reserved */
- ccb[2]=(unsigned char) (blknr>>24) & 0xFF; /* MSB Block */
- ccb[3]=(unsigned char) (blknr>>16) & 0xFF; /* */
- ccb[4]=(unsigned char) (blknr>> 8) & 0xFF;
- ccb[5]=(unsigned char) blknr & 0xFF; /* LSB Block */
- ccb[6]=(unsigned char) (cnt >>24) & 0xFF; /* MSB Block count */
- ccb[7]=(unsigned char) (cnt >>16) & 0xFF;
- ccb[8]=(unsigned char) (cnt >> 8) & 0xFF;
- ccb[9]=(unsigned char) cnt & 0xFF; /* LSB Block */
- ccb[10]=0; /* reserved */
- ccb[11]=0; /* reserved */
-
- if (atapi_issue_autoreq(device,ccb,12,
- (unsigned char *)buffer,
- cnt*ATAPI_READ_BLOCK_SIZE) == 0xFF) {
+ if (blkcnt > ATAPI_READ_MAX_BLOCK)
+ cnt = ATAPI_READ_MAX_BLOCK;
+ else
+ cnt = blkcnt;
+
+ ccb[0] = ATAPI_CMD_READ_12;
+ ccb[1] = 0; /* reserved */
+ ccb[2] = (unsigned char) (blknr >> 24) & 0xFF; /* MSB Block */
+ ccb[3] = (unsigned char) (blknr >> 16) & 0xFF; /* */
+ ccb[4] = (unsigned char) (blknr >> 8) & 0xFF;
+ ccb[5] = (unsigned char) blknr & 0xFF; /* LSB Block */
+ ccb[6] = (unsigned char) (cnt >> 24) & 0xFF; /* MSB Block cnt */
+ ccb[7] = (unsigned char) (cnt >> 16) & 0xFF;
+ ccb[8] = (unsigned char) (cnt >> 8) & 0xFF;
+ ccb[9] = (unsigned char) cnt & 0xFF; /* LSB Block */
+ ccb[10] = 0; /* reserved */
+ ccb[11] = 0; /* reserved */
+
+ if (atapi_issue_autoreq(device, ccb, 12,
+ (unsigned char *) buffer,
+ cnt * ATAPI_READ_BLOCK_SIZE)
+ == 0xFF) {
return (n);
}
- n+=cnt;
- blkcnt-=cnt;
- blknr+=cnt;
- buffer+=(cnt*ATAPI_READ_BLOCK_SIZE);
+ n += cnt;
+ blkcnt -= cnt;
+ blknr += cnt;
+ buffer += (cnt * ATAPI_READ_BLOCK_SIZE);
} while (blkcnt > 0);
return (n);
}
@@ -2016,21 +2055,16 @@ ulong atapi_read (int device, lbaint_t blknr, ulong blkcnt, void *buffer)
#endif /* CONFIG_ATAPI */
-U_BOOT_CMD(
- ide, 5, 1, do_ide,
- "IDE sub-system",
- "reset - reset IDE controller\n"
- "ide info - show available IDE devices\n"
- "ide device [dev] - show or set current device\n"
- "ide part [dev] - print partition table of one or all IDE devices\n"
- "ide read addr blk# cnt\n"
- "ide write addr blk# cnt - read/write `cnt'"
- " blocks starting at block `blk#'\n"
- " to/from memory address `addr'"
-);
-
-U_BOOT_CMD(
- diskboot, 3, 1, do_diskboot,
- "boot from IDE device",
- "loadAddr dev:part"
-);
+U_BOOT_CMD(ide, 5, 1, do_ide,
+ "IDE sub-system",
+ "reset - reset IDE controller\n"
+ "ide info - show available IDE devices\n"
+ "ide device [dev] - show or set current device\n"
+ "ide part [dev] - print partition table of one or all IDE devices\n"
+ "ide read addr blk# cnt\n"
+ "ide write addr blk# cnt - read/write `cnt'"
+ " blocks starting at block `blk#'\n"
+ " to/from memory address `addr'");
+
+U_BOOT_CMD(diskboot, 3, 1, do_diskboot,
+ "boot from IDE device", "loadAddr dev:part");
--
1.7.6.4
1
3

03 Nov '11
Fix:
ds1337.c: In function 'rtc_get':
ds1337.c:88:52: warning: variable 'control' set but not used
[-Wunused-but-set-variable]
Signed-off-by: Wolfgang Denk <wd(a)denx.de>
---
drivers/rtc/ds1337.c | 16 +++-------------
1 files changed, 3 insertions(+), 13 deletions(-)
diff --git a/drivers/rtc/ds1337.c b/drivers/rtc/ds1337.c
index 7abf041..5bb9f94 100644
--- a/drivers/rtc/ds1337.c
+++ b/drivers/rtc/ds1337.c
@@ -34,16 +34,6 @@
#if defined(CONFIG_CMD_DATE)
-/*---------------------------------------------------------------------*/
-#undef DEBUG_RTC
-
-#ifdef DEBUG_RTC
-#define DEBUGR(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGR(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
/*
* RTC register addresses
*/
@@ -97,7 +87,7 @@ int rtc_get (struct rtc_time *tmp)
mon_cent = rtc_read (RTC_MON_REG_ADDR);
year = rtc_read (RTC_YR_REG_ADDR);
- DEBUGR ("Get RTC year: %02x mon/cent: %02x mday: %02x wday: %02x "
+ debug("Get RTC year: %02x mon/cent: %02x mday: %02x wday: %02x "
"hr: %02x min: %02x sec: %02x control: %02x status: %02x\n",
year, mon_cent, mday, wday, hour, min, sec, control, status);
@@ -119,7 +109,7 @@ int rtc_get (struct rtc_time *tmp)
tmp->tm_yday = 0;
tmp->tm_isdst= 0;
- DEBUGR ("Get DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
+ debug("Get DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
@@ -134,7 +124,7 @@ int rtc_set (struct rtc_time *tmp)
{
uchar century;
- DEBUGR ("Set DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
+ debug("Set DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
--
1.7.6.4
2
4

[U-Boot] [PATCH] 4xx_pci.c: add error checking, fix GCC 4.6 build warning
by Wolfgang Denk 03 Nov '11
by Wolfgang Denk 03 Nov '11
03 Nov '11
Fix:
4xx_pci.c: In function 'pci_init_board':
4xx_pci.c:855:6: warning: variable 'busno' set but not used
[-Wunused-but-set-variable]
Signed-off-by: Wolfgang Denk <wd(a)denx.de>
Cc: Stefan Roese <sr(a)denx.de>
---
arch/powerpc/cpu/ppc4xx/4xx_pci.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/cpu/ppc4xx/4xx_pci.c b/arch/powerpc/cpu/ppc4xx/4xx_pci.c
index 80b0c1c..2ca355b 100644
--- a/arch/powerpc/cpu/ppc4xx/4xx_pci.c
+++ b/arch/powerpc/cpu/ppc4xx/4xx_pci.c
@@ -707,7 +707,7 @@ void pci_master_init(struct pci_controller *hose)
#endif /* CONFIG_SYS_PCI_MASTER_INIT */
#if defined(CONFIG_SYS_PCI_MASTER_INIT) || defined(CONFIG_SYS_PCI_TARGET_INIT)
-int pci_440_init (struct pci_controller *hose)
+static int pci_440_init (struct pci_controller *hose)
{
int reg_num = 0;
@@ -859,7 +859,9 @@ void pci_init_board(void)
* is selected.
*/
#if defined(CONFIG_SYS_PCI_MASTER_INIT) || defined(CONFIG_SYS_PCI_TARGET_INIT)
- busno = pci_440_init (&ppc440_hose);
+ busno = pci_440_init(&ppc440_hose);
+ if (busno < 0)
+ return;
#endif
#if (defined(CONFIG_440SPE) || \
defined(CONFIG_460EX) || defined(CONFIG_460GT)) && \
--
1.7.6.4
2
2

[U-Boot] [PATCH] board/prodrive/p3mx/mv_eth.c: fix GCC 4.6 build warnings
by Wolfgang Denk 03 Nov '11
by Wolfgang Denk 03 Nov '11
03 Nov '11
Fix:
mv_eth.c: In function 'mv64460_eth_real_open':
mv_eth.c:471:6: warning: variable 'port_status' set but not used [-Wunused-but-set-variable]
mv_eth.c: In function 'mv64460_eth_stop':
mv_eth.c:722:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable]
mv_eth.c: In function 'mv64460_eth_xmit':
mv_eth.c:796:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable]
mv_eth.c: In function 'mv64460_eth_receive':
mv_eth.c:877:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable]
mv_eth.c: In function 'mv64460_eth_get_stats':
mv_eth.c:979:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable]
mv_eth.c: In function 'mv64460_eth_update_stat':
mv_eth.c:1006:24: warning: variable 'dummy' set but not used [-Wunused-but-set-variable]
mv_eth.c:1005:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable]
mv_eth.c: In function 'mv64460_eth_print_stat':
mv_eth.c:1087:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable]
mv_eth.c: In function 'eth_clear_mib_counters':
mv_eth.c:2141:15: warning: variable 'dummy' set but not used [-Wunused-but-set-variable]
Signed-off-by: Wolfgang Denk <wd(a)denx.de>
---
board/prodrive/p3mx/mv_eth.c | 33 ++++++---------------------------
1 files changed, 6 insertions(+), 27 deletions(-)
diff --git a/board/prodrive/p3mx/mv_eth.c b/board/prodrive/p3mx/mv_eth.c
index fac7633..15b3bfc 100644
--- a/board/prodrive/p3mx/mv_eth.c
+++ b/board/prodrive/p3mx/mv_eth.c
@@ -468,7 +468,6 @@ static int mv64460_eth_real_open (struct eth_device *dev)
ETH_PORT_INFO *ethernet_private;
struct mv64460_eth_priv *port_private;
unsigned int port_num;
- u32 port_status;
ushort reg_short;
int speed;
int duplex;
@@ -569,7 +568,7 @@ static int mv64460_eth_real_open (struct eth_device *dev)
*/
MV_REG_WRITE (MV64460_ETH_MAXIMUM_TRANSMIT_UNIT (port_num), 0);
- port_status = MV_REG_READ (MV64460_ETH_PORT_STATUS_REG (port_num));
+ MV_REG_READ (MV64460_ETH_PORT_STATUS_REG (port_num));
#if defined(CONFIG_PHY_RESET)
/*
@@ -717,15 +716,6 @@ static int mv64460_eth_free_rx_rings (struct eth_device *dev)
int mv64460_eth_stop (struct eth_device *dev)
{
- ETH_PORT_INFO *ethernet_private;
- struct mv64460_eth_priv *port_private;
- unsigned int port_num;
-
- ethernet_private = (ETH_PORT_INFO *) dev->priv;
- port_private =
- (struct mv64460_eth_priv *) ethernet_private->port_private;
- port_num = port_private->port_num;
-
/* Disable all gigE address decoder */
MV_REG_WRITE (MV64460_ETH_BASE_ADDR_ENABLE_REG, 0x3f);
DP (printf ("%s Ethernet stop called ... \n", __FUNCTION__));
@@ -793,7 +783,6 @@ int mv64460_eth_xmit (struct eth_device *dev, volatile void *dataPtr,
{
ETH_PORT_INFO *ethernet_private;
struct mv64460_eth_priv *port_private;
- unsigned int port_num;
PKT_INFO pkt_info;
ETH_FUNC_RET_STATUS status;
struct net_device_stats *stats;
@@ -802,7 +791,6 @@ int mv64460_eth_xmit (struct eth_device *dev, volatile void *dataPtr,
ethernet_private = (ETH_PORT_INFO *) dev->priv;
port_private =
(struct mv64460_eth_priv *) ethernet_private->port_private;
- port_num = port_private->port_num;
stats = port_private->stats;
@@ -874,13 +862,11 @@ int mv64460_eth_receive (struct eth_device *dev)
{
ETH_PORT_INFO *ethernet_private;
struct mv64460_eth_priv *port_private;
- unsigned int port_num;
PKT_INFO pkt_info;
struct net_device_stats *stats;
ethernet_private = (ETH_PORT_INFO *) dev->priv;
port_private = (struct mv64460_eth_priv *) ethernet_private->port_private;
- port_num = port_private->port_num;
stats = port_private->stats;
while ((eth_port_receive (ethernet_private, ETH_Q0, &pkt_info) == ETH_OK)) {
@@ -976,12 +962,10 @@ static struct net_device_stats *mv64460_eth_get_stats (struct eth_device *dev)
{
ETH_PORT_INFO *ethernet_private;
struct mv64460_eth_priv *port_private;
- unsigned int port_num;
ethernet_private = (ETH_PORT_INFO *) dev->priv;
port_private =
(struct mv64460_eth_priv *) ethernet_private->port_private;
- port_num = port_private->port_num;
mv64460_eth_update_stat (dev);
@@ -1002,13 +986,10 @@ static void mv64460_eth_update_stat (struct eth_device *dev)
ETH_PORT_INFO *ethernet_private;
struct mv64460_eth_priv *port_private;
struct net_device_stats *stats;
- unsigned int port_num;
- volatile unsigned int dummy;
ethernet_private = (ETH_PORT_INFO *) dev->priv;
port_private =
(struct mv64460_eth_priv *) ethernet_private->port_private;
- port_num = port_private->port_num;
stats = port_private->stats;
/* These are false updates */
@@ -1031,12 +1012,12 @@ static void mv64460_eth_update_stat (struct eth_device *dev)
* But the unsigned long in PowerPC and MIPS are 32bit. So the next read
* is just a dummy read for proper work of the GigE port
*/
- dummy = eth_read_mib_counter (ethernet_private->port_num,
+ (void)eth_read_mib_counter (ethernet_private->port_num,
ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH);
stats->tx_bytes += (unsigned long)
eth_read_mib_counter (ethernet_private->port_num,
ETH_MIB_GOOD_OCTETS_SENT_LOW);
- dummy = eth_read_mib_counter (ethernet_private->port_num,
+ (void)eth_read_mib_counter (ethernet_private->port_num,
ETH_MIB_GOOD_OCTETS_SENT_HIGH);
stats->rx_errors += (unsigned long)
eth_read_mib_counter (ethernet_private->port_num,
@@ -1084,12 +1065,10 @@ static void mv64460_eth_print_stat (struct eth_device *dev)
ETH_PORT_INFO *ethernet_private;
struct mv64460_eth_priv *port_private;
struct net_device_stats *stats;
- unsigned int port_num;
ethernet_private = (ETH_PORT_INFO *) dev->priv;
port_private =
(struct mv64460_eth_priv *) ethernet_private->port_private;
- port_num = port_private->port_num;
stats = port_private->stats;
/* These are false updates */
@@ -2138,13 +2117,13 @@ static void eth_port_init_mac_tables (ETH_PORT eth_port_num)
static void eth_clear_mib_counters (ETH_PORT eth_port_num)
{
int i;
- unsigned int dummy;
/* Perform dummy reads from MIB counters */
for (i = ETH_MIB_GOOD_OCTETS_RECEIVED_LOW; i < ETH_MIB_LATE_COLLISION;
- i += 4)
- dummy = MV_REG_READ ((MV64460_ETH_MIB_COUNTERS_BASE
+ i += 4) {
+ (void)MV_REG_READ ((MV64460_ETH_MIB_COUNTERS_BASE
(eth_port_num) + i));
+ }
return;
}
--
1.7.6.4
1
1
Fix:
4xx_enet.c: In function 'enet_rcv':
4xx_enet.c:1772:21: warning: variable 'ef_ptr' set but not used
[-Wunused-but-set-variable]
Signed-off-by: Wolfgang Denk <wd(a)denx.de>
Cc: Stefan Roese <sr(a)denx.de>
---
drivers/net/4xx_enet.c | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/drivers/net/4xx_enet.c b/drivers/net/4xx_enet.c
index 8013ad9..a771139 100644
--- a/drivers/net/4xx_enet.c
+++ b/drivers/net/4xx_enet.c
@@ -1769,7 +1769,6 @@ static void emac_err (struct eth_device *dev, unsigned long isr)
*-----------------------------------------------------------------------------*/
static void enet_rcv (struct eth_device *dev, unsigned long malisr)
{
- struct enet_frame *ef_ptr;
unsigned long data_len;
unsigned long rx_eob_isr;
EMAC_4XX_HW_PST hw_p = dev->priv;
@@ -1828,8 +1827,6 @@ static void enet_rcv (struct eth_device *dev, unsigned long malisr)
} else {
hw_p->stats.rx_frames++;
hw_p->stats.rx += data_len;
- ef_ptr = (struct enet_frame *) hw_p->rx[i].
- data_ptr;
#ifdef INFO_4XX_ENET
hw_p->stats.pkts_rx++;
#endif
--
1.7.6.4
1
1
50% OFF MBT Shoes
Wesite:http://www.discount-mbt-store.com
MBT sport shoes help us. In spring, we are able to physical exercise operating outside, it aids our legs started to be moreagile.The MBT footwear (Masai Barefoot Technologies) has produced into a household name in Europe and in the U.s.. This can be because the shoes have already been clinically proven to have fitness and wellbeing rewards.
Best Rgd
From:Christian Louboutin Team
1
0