mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 03:15:00 +00:00
console: Squelch pre-console output in console functions
There are some locations in the code which anticipate printf() being called before the console is ready by squelching printf() on gd->have_console. Move this squelching into printf(), vprintf(), puts() and putc(). Also make tstc() and getc() return 0 if console is not yet initialised Signed-off-by: Graeme Russ <graeme.russ@gmail.com> Tested-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
79df1208ee
commit
e3e454cd72
5 changed files with 35 additions and 37 deletions
|
@ -332,8 +332,7 @@ static int mpc_get_fdr(int speed)
|
||||||
if (gd->flags & GD_FLG_RELOC) {
|
if (gd->flags & GD_FLG_RELOC) {
|
||||||
fdr = divider;
|
fdr = divider;
|
||||||
} else {
|
} else {
|
||||||
if (gd->have_console)
|
printf("%ld kHz, ", best_speed / 1000);
|
||||||
printf("%ld kHz, ", best_speed / 1000);
|
|
||||||
return divider;
|
return divider;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -374,34 +373,29 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len)
|
||||||
xaddr[3] = addr & 0xFF;
|
xaddr[3] = addr & 0xFF;
|
||||||
|
|
||||||
if (wait_for_bb()) {
|
if (wait_for_bb()) {
|
||||||
if (gd->have_console)
|
printf("i2c_read: bus is busy\n");
|
||||||
printf("i2c_read: bus is busy\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
mpc_reg_out(®s->mcr, I2C_STA, I2C_STA);
|
mpc_reg_out(®s->mcr, I2C_STA, I2C_STA);
|
||||||
if (do_address(chip, 0)) {
|
if (do_address(chip, 0)) {
|
||||||
if (gd->have_console)
|
printf("i2c_read: failed to address chip\n");
|
||||||
printf("i2c_read: failed to address chip\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_bytes(chip, &xaddr[4-alen], alen)) {
|
if (send_bytes(chip, &xaddr[4-alen], alen)) {
|
||||||
if (gd->have_console)
|
printf("i2c_read: send_bytes failed\n");
|
||||||
printf("i2c_read: send_bytes failed\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
mpc_reg_out(®s->mcr, I2C_RSTA, I2C_RSTA);
|
mpc_reg_out(®s->mcr, I2C_RSTA, I2C_RSTA);
|
||||||
if (do_address(chip, 1)) {
|
if (do_address(chip, 1)) {
|
||||||
if (gd->have_console)
|
printf("i2c_read: failed to address chip\n");
|
||||||
printf("i2c_read: failed to address chip\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (receive_bytes(chip, (char *)buf, len)) {
|
if (receive_bytes(chip, (char *)buf, len)) {
|
||||||
if (gd->have_console)
|
printf("i2c_read: receive_bytes failed\n");
|
||||||
printf("i2c_read: receive_bytes failed\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -423,27 +417,23 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len)
|
||||||
xaddr[3] = addr & 0xFF;
|
xaddr[3] = addr & 0xFF;
|
||||||
|
|
||||||
if (wait_for_bb()) {
|
if (wait_for_bb()) {
|
||||||
if (gd->have_console)
|
printf("i2c_write: bus is busy\n");
|
||||||
printf("i2c_write: bus is busy\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
mpc_reg_out(®s->mcr, I2C_STA, I2C_STA);
|
mpc_reg_out(®s->mcr, I2C_STA, I2C_STA);
|
||||||
if (do_address(chip, 0)) {
|
if (do_address(chip, 0)) {
|
||||||
if (gd->have_console)
|
printf("i2c_write: failed to address chip\n");
|
||||||
printf("i2c_write: failed to address chip\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_bytes(chip, &xaddr[4-alen], alen)) {
|
if (send_bytes(chip, &xaddr[4-alen], alen)) {
|
||||||
if (gd->have_console)
|
printf("i2c_write: send_bytes failed\n");
|
||||||
printf("i2c_write: send_bytes failed\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_bytes(chip, (char *)buf, len)) {
|
if (send_bytes(chip, (char *)buf, len)) {
|
||||||
if (gd->have_console)
|
printf("i2c_write: send_bytes failed\n");
|
||||||
printf("i2c_write: send_bytes failed\n");
|
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -633,22 +633,19 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)
|
||||||
|
|
||||||
rc = i2c_send(&state, chip, 0, I2CF_START_COND, alen, &xaddr[4-alen]);
|
rc = i2c_send(&state, chip, 0, I2CF_START_COND, alen, &xaddr[4-alen]);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
if (gd->have_console)
|
printf("i2c_read: i2c_send failed (%d)\n", rc);
|
||||||
printf("i2c_read: i2c_send failed (%d)\n", rc);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = i2c_receive(&state, chip, 0, I2CF_STOP_COND, len, buffer);
|
rc = i2c_receive(&state, chip, 0, I2CF_STOP_COND, len, buffer);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
if (gd->have_console)
|
printf("i2c_read: i2c_receive failed (%d)\n", rc);
|
||||||
printf("i2c_read: i2c_receive failed (%d)\n", rc);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = i2c_doio(&state);
|
rc = i2c_doio(&state);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
if (gd->have_console)
|
printf("i2c_read: i2c_doio failed (%d)\n", rc);
|
||||||
printf("i2c_read: i2c_doio failed (%d)\n", rc);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -683,22 +680,19 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)
|
||||||
|
|
||||||
rc = i2c_send(&state, chip, 0, I2CF_START_COND, alen, &xaddr[4-alen]);
|
rc = i2c_send(&state, chip, 0, I2CF_START_COND, alen, &xaddr[4-alen]);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
if (gd->have_console)
|
printf("i2c_write: first i2c_send failed (%d)\n", rc);
|
||||||
printf("i2c_write: first i2c_send failed (%d)\n", rc);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = i2c_send(&state, 0, 0, I2CF_STOP_COND, len, buffer);
|
rc = i2c_send(&state, 0, 0, I2CF_STOP_COND, len, buffer);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
if (gd->have_console)
|
printf("i2c_write: second i2c_send failed (%d)\n", rc);
|
||||||
printf("i2c_write: second i2c_send failed (%d)\n", rc);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = i2c_doio(&state);
|
rc = i2c_doio(&state);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
if (gd->have_console)
|
printf("i2c_write: i2c_doio failed (%d)\n", rc);
|
||||||
printf("i2c_write: i2c_doio failed (%d)\n", rc);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -298,6 +298,9 @@ int getc(void)
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!gd->have_console)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (gd->flags & GD_FLG_DEVINIT) {
|
if (gd->flags & GD_FLG_DEVINIT) {
|
||||||
/* Get from the standard input */
|
/* Get from the standard input */
|
||||||
return fgetc(stdin);
|
return fgetc(stdin);
|
||||||
|
@ -314,6 +317,9 @@ int tstc(void)
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!gd->have_console)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (gd->flags & GD_FLG_DEVINIT) {
|
if (gd->flags & GD_FLG_DEVINIT) {
|
||||||
/* Test the standard input */
|
/* Test the standard input */
|
||||||
return ftstc(stdin);
|
return ftstc(stdin);
|
||||||
|
@ -335,6 +341,9 @@ void putc(const char c)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!gd->have_console)
|
||||||
|
return;
|
||||||
|
|
||||||
if (gd->flags & GD_FLG_DEVINIT) {
|
if (gd->flags & GD_FLG_DEVINIT) {
|
||||||
/* Send to the standard output */
|
/* Send to the standard output */
|
||||||
fputc(stdout, c);
|
fputc(stdout, c);
|
||||||
|
@ -356,6 +365,9 @@ void puts(const char *s)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!gd->have_console)
|
||||||
|
return;
|
||||||
|
|
||||||
if (gd->flags & GD_FLG_DEVINIT) {
|
if (gd->flags & GD_FLG_DEVINIT) {
|
||||||
/* Send to the standard output */
|
/* Send to the standard output */
|
||||||
fputs(stdout, s);
|
fputs(stdout, s);
|
||||||
|
@ -371,6 +383,9 @@ int printf(const char *fmt, ...)
|
||||||
uint i;
|
uint i;
|
||||||
char printbuffer[CONFIG_SYS_PBSIZE];
|
char printbuffer[CONFIG_SYS_PBSIZE];
|
||||||
|
|
||||||
|
if (!gd->have_console)
|
||||||
|
return 0;
|
||||||
|
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
/* For this to work, printbuffer must be larger than
|
||||||
|
@ -389,6 +404,9 @@ int vprintf(const char *fmt, va_list args)
|
||||||
uint i;
|
uint i;
|
||||||
char printbuffer[CONFIG_SYS_PBSIZE];
|
char printbuffer[CONFIG_SYS_PBSIZE];
|
||||||
|
|
||||||
|
if (!gd->have_console)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
/* For this to work, printbuffer must be larger than
|
||||||
* anything we ever want to print.
|
* anything we ever want to print.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -396,10 +396,7 @@ static int ppc4xx_i2c_transfer(uchar chip, uint addr, int alen, uchar *buffer,
|
||||||
#endif
|
#endif
|
||||||
if ((ret = i2c_transfer(read, chip << 1, &xaddr[4 - alen], alen,
|
if ((ret = i2c_transfer(read, chip << 1, &xaddr[4 - alen], alen,
|
||||||
buffer, len)) != 0) {
|
buffer, len)) != 0) {
|
||||||
if (gd->have_console) {
|
printf("I2C %s: failed %d\n", read ? "read" : "write", ret);
|
||||||
printf("I2C %s: failed %d\n",
|
|
||||||
read ? "read" : "write", ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,7 +119,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
#ifdef DEBUG_I2C
|
#ifdef DEBUG_I2C
|
||||||
#define PRINTD(fmt,args...) do { \
|
#define PRINTD(fmt,args...) do { \
|
||||||
if (gd->have_console) \
|
|
||||||
printf (fmt ,##args); \
|
printf (fmt ,##args); \
|
||||||
} while (0)
|
} while (0)
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Add table
Reference in a new issue