]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/lwmon/lwmon.c
Merge branch 'master' of git://git.denx.de/u-boot-mips
[karo-tx-uboot.git] / board / lwmon / lwmon.c
index 9e8ea2db194b91260188638b825bd927e07a0e6e..225b1ef25827d16a834a34724a783a43e565da43 100644 (file)
@@ -7,29 +7,12 @@ M* Content:       LWMON specific U-Boot commands.
  * (C) Copyright 2001, 2002
  * DENX Software Engineering
  * Wolfgang Denk, wd@denx.de
- * All rights reserved.
  *
 D* Design:        wd@denx.de
 C* Coding:        wd@denx.de
 V* Verification:  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+
  ***********************************************************************/
 
 /*---------------------------- Headerfiles ----------------------------*/
@@ -66,7 +49,7 @@ extern void disable_putc(void);
  */
 const uint sdram_table[] =
 {
-#if defined(CFG_MEMORY_75) || defined(CFG_MEMORY_8E)
+#if defined(CONFIG_SYS_MEMORY_75) || defined(CONFIG_SYS_MEMORY_8E)
        /*
         * Single Read. (Offset 0 in UPM RAM)
         */
@@ -114,7 +97,7 @@ const uint sdram_table[] =
        0x7FFFFC07, /* last */
                    0xFFFFFCFF, 0xFFFFFCFF, 0xFFFFFCFF,
 #endif
-#ifdef CFG_MEMORY_7E
+#ifdef CONFIG_SYS_MEMORY_7E
        /*
         * Single Read. (Offset 0 in UPM RAM)
         */
@@ -192,7 +175,7 @@ int checkboard (void)
 }
 
 /***********************************************************************
-F* Function:     long int initdram (int board_type) P*A*Z*
+F* Function:     phys_size_t initdram (int board_type) P*A*Z*
  *
 P* Parameters:   int board_type
 P*                - Usually type of the board - ignored here.
@@ -209,9 +192,9 @@ D* Design:       wd@denx.de
 C* Coding:       wd@denx.de
 V* Verification: dzu@denx.de
  ***********************************************************************/
-long int initdram (int board_type)
+phys_size_t initdram (int board_type)
 {
-       volatile immap_t *immr = (immap_t *) CFG_IMMR;
+       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
        volatile memctl8xx_t *memctl = &immr->im_memctl;
        long int size_b0;
        long int size8, size9;
@@ -222,19 +205,19 @@ long int initdram (int board_type)
         */
        upmconfig (UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
 
-       memctl->memc_mptpr = CFG_MPTPR;
+       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
 
        /* burst length=4, burst type=sequential, CAS latency=2 */
-       memctl->memc_mar = CFG_MAR;
+       memctl->memc_mar = CONFIG_SYS_MAR;
 
        /*
         * Map controller bank 3 to the SDRAM bank at preliminary address.
         */
-       memctl->memc_or3 = CFG_OR3_PRELIM;
-       memctl->memc_br3 = CFG_BR3_PRELIM;
+       memctl->memc_or3 = CONFIG_SYS_OR3_PRELIM;
+       memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM;
 
        /* initialize memory address register */
-       memctl->memc_mamr = CFG_MAMR_8COL;      /* refresh not enabled yet */
+       memctl->memc_mamr = CONFIG_SYS_MAMR_8COL;       /* refresh not enabled yet */
 
        /* mode initialization (offset 5) */
        udelay (200);                           /* 0x80006105 */
@@ -268,22 +251,22 @@ long int initdram (int board_type)
         *
         * try 8 column mode
         */
-       size8 = dram_size (CFG_MAMR_8COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
+       size8 = dram_size (CONFIG_SYS_MAMR_8COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
 
        udelay (1000);
 
        /*
         * try 9 column mode
         */
-       size9 = dram_size (CFG_MAMR_9COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
+       size9 = dram_size (CONFIG_SYS_MAMR_9COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
 
        if (size8 < size9) {            /* leave configuration at 9 columns */
                size_b0 = size9;
-               memctl->memc_mamr = CFG_MAMR_9COL | MAMR_PTAE;
+               memctl->memc_mamr = CONFIG_SYS_MAMR_9COL | MAMR_PTAE;
                udelay (500);
        } else {                        /* back to 8 columns            */
                size_b0 = size8;
-               memctl->memc_mamr = CFG_MAMR_8COL | MAMR_PTAE;
+               memctl->memc_mamr = CONFIG_SYS_MAMR_8COL | MAMR_PTAE;
                udelay (500);
        }
 
@@ -293,7 +276,7 @@ long int initdram (int board_type)
 
        memctl->memc_or3 = ((-size_b0) & 0xFFFF0000) |
                        OR_CSNT_SAM | OR_G5LS | SDRAM_TIMING;
-       memctl->memc_br3 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
+       memctl->memc_br3 = (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
        udelay (1000);
 
        return (size_b0);
@@ -327,7 +310,7 @@ V* Verification: dzu@denx.de
  ***********************************************************************/
 static long int dram_size (long int mamr_value, long int *base, long int maxsize)
 {
-       volatile immap_t *immr = (immap_t *) CFG_IMMR;
+       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
        volatile memctl8xx_t *memctl = &immr->im_memctl;
 
        memctl->memc_mamr = mamr_value;
@@ -359,14 +342,14 @@ V* Verification: dzu@denx.de
  ***********************************************************************/
 int board_early_init_f (void)
 {
-       volatile immap_t *immr = (immap_t *) CFG_IMMR;
+       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
 
        /* Disable Ethernet TENA on Port B
         * Necessary because of pull up in COM3 port.
         *
         * This is just a preliminary fix, intended to turn off TENA
         * as soon as possible to avoid noise on the network. Once
-        * I²C is running we will make sure the interface is
+        * I2C is running we will make sure the interface is
         * correctly initialized.
         */
        immr->im_cpm.cp_pbpar &= ~PB_ENET_TENA;
@@ -437,7 +420,7 @@ void reset_phy (void)
 
 /* maximum number of "magic" key codes that can be assigned */
 
-static uchar kbd_addr = CFG_I2C_KEYBD_ADDR;
+static uchar kbd_addr = CONFIG_SYS_I2C_KEYBD_ADDR;
 
 static uchar *key_match (uchar *);
 
@@ -481,9 +464,9 @@ static void kbd_init (void)
        uchar val, errcd;
        int i;
 
-       i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
+       i2c_set_bus_num(0);
 
-       gd->kbd_status = 0;
+       gd->arch.kbd_status = 0;
 
        /* Forced by PIC. Delays <= 175us loose */
        udelay(1000);
@@ -497,7 +480,7 @@ static void kbd_init (void)
        /* clear "irrelevant" bits. Recommended by Martin Rajek, LWN */
        errcd &= ~(KEYBD_STATUS_H_RESET|KEYBD_STATUS_BROWNOUT);
        if (errcd) {
-               gd->kbd_status |= errcd << 8;
+               gd->arch.kbd_status |= errcd << 8;
        }
        /* Reset error code and verify */
        val = KEYBD_CMD_RESET_ERRORS;
@@ -510,7 +493,7 @@ static void kbd_init (void)
 
        val &= KEYBD_STATUS_MASK;       /* clear unused bits */
        if (val) {                      /* permanent error, report it */
-               gd->kbd_status |= val;
+               gd->arch.kbd_status |= val;
                return;
        }
 
@@ -569,8 +552,8 @@ int misc_init_r (void)
 {
        uchar kbd_data[KEYBD_DATALEN];
        char keybd_env[2 * KEYBD_DATALEN + 1];
-       uchar kbd_init_status = gd->kbd_status >> 8;
-       uchar kbd_status = gd->kbd_status;
+       uchar kbd_init_status = gd->arch.kbd_status >> 8;
+       uchar kbd_status = gd->arch.kbd_status;
        uchar val;
        char *str;
        int i;
@@ -759,12 +742,40 @@ static uchar *key_match (uchar *kbd_data)
 }
 #endif /* CONFIG_PREBOOT */
 
+#ifdef CONFIG_LCD_INFO
+#include <lcd.h>
+#include <version.h>
+#include <timestamp.h>
+
+void lcd_show_board_info(void)
+{
+       char temp[32];
+
+       lcd_printf ("%s (%s - %s)\n", U_BOOT_VERSION, U_BOOT_DATE, U_BOOT_TIME);
+       lcd_printf ("(C) 2008 DENX Software Engineering GmbH\n");
+       lcd_printf ("    Wolfgang DENK, wd@denx.de\n");
+#ifdef CONFIG_LCD_INFO_BELOW_LOGO
+       lcd_printf ("MPC823 CPU at %s MHz\n",
+               strmhz(temp, gd->cpu_clk));
+       lcd_printf ("  %ld MB RAM, %ld MB Flash\n",
+               gd->ram_size >> 20,
+               gd->bd->bi_flashsize >> 20 );
+#else
+       /* leave one blank line */
+       lcd_printf ("\nMPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash\n",
+               strmhz(temp, gd->cpu_clk),
+               gd->ram_size >> 20,
+               gd->bd->bi_flashsize >> 20 );
+#endif /* CONFIG_LCD_INFO_BELOW_LOGO */
+}
+#endif /* CONFIG_LCD_INFO */
+
 /*---------------Board Special Commands: PIC read/write ---------------*/
 
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
+#if defined(CONFIG_CMD_BSP)
 /***********************************************************************
 F* Function:     int do_pic (cmd_tbl_t *cmdtp, int flag,
-F*                           int argc, char *argv[]) P*A*Z*
+F*                           int argc, char * const argv[]) P*A*Z*
  *
 P* Parameters:   cmd_tbl_t *cmdtp
 P*                - Pointer to our command table entry
@@ -773,7 +784,7 @@ P*                - If the CMD_FLAG_REPEAT bit is set, then this call is
 P*                  a repetition
 P*               int argc
 P*                - Argument count
-P*               char *argv[]
+P*               char * const argv[]
 P*                - Array of the actual arguments
 P*
 P* Returnvalue:  int
@@ -789,7 +800,7 @@ D* Design:       wd@denx.de
 C* Coding:       wd@denx.de
 V* Verification: dzu@denx.de
  ***********************************************************************/
-int do_pic (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+int do_pic (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        uchar reg, val;
 
@@ -818,19 +829,18 @@ int do_pic (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        default:
                break;
        }
-       printf ("Usage:\n%s\n", cmdtp->usage);
-       return 1;
+       return cmd_usage(cmdtp);
 }
 U_BOOT_CMD(
        pic,    4,      1,      do_pic,
-       "pic     - read and write PIC registers\n",
+       "read and write PIC registers",
        "read  reg      - read PIC register `reg'\n"
-       "pic write reg val  - write value `val' to PIC register `reg'\n"
+       "pic write reg val  - write value `val' to PIC register `reg'"
 );
 
 /***********************************************************************
 F* Function:     int do_kbd (cmd_tbl_t *cmdtp, int flag,
-F*                           int argc, char *argv[]) P*A*Z*
+F*                           int argc, char * const argv[]) P*A*Z*
  *
 P* Parameters:   cmd_tbl_t *cmdtp
 P*                - Pointer to our command table entry
@@ -839,7 +849,7 @@ P*                - If the CMD_FLAG_REPEAT bit is set, then this call is
 P*                  a repetition
 P*               int argc
 P*                - Argument count
-P*               char *argv[]
+P*               char * const argv[]
 P*                - Array of the actual arguments
 P*
 P* Returnvalue:  int
@@ -854,7 +864,7 @@ D* Design:       wd@denx.de
 C* Coding:       wd@denx.de
 V* Verification: dzu@denx.de
  ***********************************************************************/
-int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        uchar kbd_data[KEYBD_DATALEN];
        char keybd_env[2 * KEYBD_DATALEN + 1];
@@ -862,7 +872,7 @@ int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        int i;
 
 #if 0 /* Done in kbd_init */
-       i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
+       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
 #endif
 
        /* Read keys */
@@ -882,16 +892,16 @@ int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
 U_BOOT_CMD(
        kbd,    1,      1,      do_kbd,
-       "kbd     - read keyboard status\n",
-       NULL
+       "read keyboard status",
+       ""
 );
 
 /* Read and set LSB switch */
-#define CFG_PC_TXD1_ENA                0x0008          /* PC.12 */
+#define CONFIG_SYS_PC_TXD1_ENA         0x0008          /* PC.12 */
 
 /***********************************************************************
 F* Function:     int do_lsb (cmd_tbl_t *cmdtp, int flag,
-F*                           int argc, char *argv[]) P*A*Z*
+F*                           int argc, char * const argv[]) P*A*Z*
  *
 P* Parameters:   cmd_tbl_t *cmdtp
 P*                - Pointer to our command table entry
@@ -900,7 +910,7 @@ P*                - If the CMD_FLAG_REPEAT bit is set, then this call is
 P*                  a repetition
 P*               int argc
 P*                - Argument count
-P*               char *argv[]
+P*               char * const argv[]
 P*                - Array of the actual arguments
 P*
 P* Returnvalue:  int
@@ -917,10 +927,10 @@ D* Design:       wd@denx.de
 C* Coding:       wd@denx.de
 V* Verification: dzu@denx.de
  ***********************************************************************/
-int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        uchar val;
-       immap_t *immr = (immap_t *) CFG_IMMR;
+       immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
 
        switch (argc) {
        case 1:                                 /* lsb - print setting */
@@ -932,14 +942,14 @@ int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
                if (strcmp (argv[1], "on") == 0) {
                        val |= 0x20;
-                       immr->im_ioport.iop_pcpar &= ~(CFG_PC_TXD1_ENA);
-                       immr->im_ioport.iop_pcdat |= CFG_PC_TXD1_ENA;
-                       immr->im_ioport.iop_pcdir |= CFG_PC_TXD1_ENA;
+                       immr->im_ioport.iop_pcpar &= ~(CONFIG_SYS_PC_TXD1_ENA);
+                       immr->im_ioport.iop_pcdat |= CONFIG_SYS_PC_TXD1_ENA;
+                       immr->im_ioport.iop_pcdir |= CONFIG_SYS_PC_TXD1_ENA;
                } else if (strcmp (argv[1], "off") == 0) {
                        val &= ~0x20;
-                       immr->im_ioport.iop_pcpar &= ~(CFG_PC_TXD1_ENA);
-                       immr->im_ioport.iop_pcdat &= ~(CFG_PC_TXD1_ENA);
-                       immr->im_ioport.iop_pcdir |= CFG_PC_TXD1_ENA;
+                       immr->im_ioport.iop_pcpar &= ~(CONFIG_SYS_PC_TXD1_ENA);
+                       immr->im_ioport.iop_pcdat &= ~(CONFIG_SYS_PC_TXD1_ENA);
+                       immr->im_ioport.iop_pcdir |= CONFIG_SYS_PC_TXD1_ENA;
                } else {
                        break;
                }
@@ -948,19 +958,18 @@ int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        default:
                break;
        }
-       printf ("Usage:\n%s\n", cmdtp->usage);
-       return 1;
+       return cmd_usage(cmdtp);
 }
 
 U_BOOT_CMD(
        lsb,    2,      1,      do_lsb,
-       "lsb     - check and set LSB switch\n",
+       "check and set LSB switch",
        "on  - switch LSB on\n"
        "lsb off - switch LSB off\n"
-       "lsb     - print current setting\n"
+       "lsb     - print current setting"
 );
 
-#endif /* CFG_CMD_BSP */
+#endif
 
 /*----------------------------- Utilities -----------------------------*/
 /***********************************************************************
@@ -980,7 +989,7 @@ V* Verification: dzu@denx.de
  ***********************************************************************/
 uchar pic_read (uchar reg)
 {
-       return (i2c_reg_read (CFG_I2C_PICIO_ADDR, reg));
+       return (i2c_reg_read (CONFIG_SYS_I2C_PICIO_ADDR, reg));
 }
 
 /***********************************************************************
@@ -1001,7 +1010,7 @@ V* Verification: dzu@denx.de
  ***********************************************************************/
 void pic_write (uchar reg, uchar val)
 {
-       i2c_reg_write (CFG_I2C_PICIO_ADDR, reg, val);
+       i2c_reg_write (CONFIG_SYS_I2C_PICIO_ADDR, reg, val);
 }
 
 /*---------------------- Board Control Functions ----------------------*/
@@ -1022,7 +1031,7 @@ V* Verification: dzu@denx.de
 void board_poweroff (void)
 {
     /* Turn battery off */
-    ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat &= ~(1 << (31 - 13));
+    ((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pcdat &= ~(1 << (31 - 13));
 
     while (1);
 }