* (C) Copyright 2009 Detlev Zundel,
* DENX Software Engineering, dzu@denx.de.
*
- * 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
+ * SPDX-License-Identifier: GPL-2.0+
*/
#include <asm/io.h>
#include <common.h>
#include <config.h>
+#include <console.h>
#include <mpc5xxx.h>
#include <pci.h>
}
static int do_inkadiag_io(cmd_tbl_t *cmdtp, int flag, int argc,
- char *argv[]) {
+ char * const argv[]) {
unsigned int state, val;
switch (argc) {
printf("exit code: 0x%X\n", val);
return 0;
default:
- cmd_usage(cmdtp);
- break;
+ return cmd_usage(cmdtp);
}
return -1;
/* select clock sources */
out_be16(&psc->psc_clock_select, 0);
- baseclk = (gd->ipb_clk + 16) / 32;
+ baseclk = (gd->arch.ipb_clk + 16) / 32;
/* switch to UART mode */
out_be32(&psc->sicr, 0);
}
static int do_inkadiag_serial(cmd_tbl_t *cmdtp, int flag, int argc,
- char *argv[]) {
+ char * const argv[]) {
volatile struct NS16550 *uart;
volatile struct mpc5xxx_psc *psc;
unsigned int num, mode;
int combrd, baudrate, i, j, len;
int address;
- if (argc < 5) {
- cmd_usage(cmdtp);
- return 1;
- }
+ if (argc < 5)
+ return cmd_usage(cmdtp);
argc--;
argv++;
{
volatile struct mpc5xxx_gpt *gpt = (struct mpc5xxx_gpt *)(BUZZER_GPT);
- const u32 prescale = gd->ipb_clk / freq / 128;
+ const u32 prescale = gd->arch.ipb_clk / freq / 128;
const u32 count = 128;
const u32 width = 64;
}
static int do_inkadiag_buzzer(cmd_tbl_t *cmdtp, int flag, int argc,
- char *argv[]) {
+ char * const argv[]) {
unsigned int period, freq;
int prev, i;
- if (argc != 3) {
- cmd_usage(cmdtp);
- return 1;
- }
+ if (argc != 3)
+ return cmd_usage(cmdtp);
argc--;
argv++;
freq = simple_strtol(argv[0], NULL, 0);
/* avoid zero prescale in buzzer_turn_on() */
- if (freq > gd->ipb_clk / 128) {
+ if (freq > gd->arch.ipb_clk / 128) {
printf("%dHz exceeds maximum (%ldHz)\n", freq,
- gd->ipb_clk / 128);
+ gd->arch.ipb_clk / 128);
} else if (!freq)
printf("Zero frequency is senseless\n");
else
return 0;
}
-static int do_inkadiag_help(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+static int do_inkadiag_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
cmd_tbl_t cmd_inkadiag_sub[] = {
U_BOOT_CMD_MKENT(io, 1, 1, do_inkadiag_io, "read digital input",
- "<drawer1|drawer2|other> [value] - get or set specified signal\n"),
+ "<drawer1|drawer2|other> [value] - get or set specified signal"),
U_BOOT_CMD_MKENT(serial, 4, 1, do_inkadiag_serial, "test serial port",
"<num> <mode> <baudrate> <msg> - test uart num [0..11] in mode\n"
- "and baudrate with msg\n"),
+ "and baudrate with msg"),
U_BOOT_CMD_MKENT(buzzer, 2, 1, do_inkadiag_buzzer, "activate buzzer",
- "<period> <freq> - turn buzzer on for period ms with freq hz\n"),
+ "<period> <freq> - turn buzzer on for period ms with freq hz"),
U_BOOT_CMD_MKENT(help, 4, 1, do_inkadiag_help, "get help",
- "[command] - get help for command\n"),
+ "[command] - get help for command"),
};
static int do_inkadiag_help(cmd_tbl_t *cmdtp, int flag,
- int argc, char *argv[]) {
+ int argc, char * const argv[]) {
extern int _do_help (cmd_tbl_t *cmd_start, int cmd_items,
cmd_tbl_t *cmdtp, int flag,
- int argc, char *argv[]);
+ int argc, char * const argv[]);
/* do_help prints command name - we prepend inkadiag to our subcommands! */
#ifdef CONFIG_SYS_LONGHELP
puts ("inkadiag ");
}
static int do_inkadiag(cmd_tbl_t *cmdtp, int flag, int argc,
- char *argv[]) {
+ char * const argv[]) {
cmd_tbl_t *c;
c = find_cmd_tbl(argv[1], &cmd_inkadiag_sub[0], ARRAY_SIZE(cmd_inkadiag_sub));
return c->cmd(c, flag, argc, argv);
} else {
/* Unrecognized command */
- cmd_usage(cmdtp);
- return 1;
+ return cmd_usage(cmdtp);
}
}
"inkadiag - inka diagnosis\n",
"[inkadiag what ...]\n"
" - perform a diagnosis on inka hardware\n"
- "'inkadiag' performs hardware tests.\n\n");
-
-/* Relocate the command table function pointers when running in RAM */
-int inkadiag_init_r (void) {
- cmd_tbl_t *cmdtp;
-
- for (cmdtp = &cmd_inkadiag_sub[0]; cmdtp !=
- &cmd_inkadiag_sub[ARRAY_SIZE(cmd_inkadiag_sub)]; cmdtp++) {
- ulong addr;
-
- addr = (ulong) (cmdtp->cmd) + gd->reloc_off;
- cmdtp->cmd = (int (*)(struct cmd_tbl_s *, int, int, char *[]))addr;
-
- addr = (ulong)(cmdtp->name) + gd->reloc_off;
- cmdtp->name = (char *)addr;
-
- if (cmdtp->usage) {
- addr = (ulong)(cmdtp->usage) + gd->reloc_off;
- cmdtp->usage = (char *)addr;
- }
-#ifdef CONFIG_SYS_LONGHELP
- if (cmdtp->help) {
- addr = (ulong)(cmdtp->help) + gd->reloc_off;
- cmdtp->help = (char *)addr;
- }
-#endif
- }
- return 0;
-}
+ "'inkadiag' performs hardware tests.");