]> www.infradead.org Git - users/rw/ppcboot.git/commitdiff
Added command to switch LSB on LWMON boards
authorwdenk <wdenk>
Wed, 16 Jan 2002 12:47:10 +0000 (12:47 +0000)
committerwdenk <wdenk>
Wed, 16 Jan 2002 12:47:10 +0000 (12:47 +0000)
CHANGELOG
board/lwmon/lwmon.c
include/cmd_bsp.h

index d4493cafc6e2fba3c688991986454f6563a6ddc0..12d4d81866510ae8069f500df2dab290b9b6fd4b 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,8 @@ Modifications for 1.1.4:
 
 * Support for GESPAC PCIPPC2 board
 
+* added command to switch LSB on LWMON boards
+
 * increased IDE_TIME_OUT as needed on some boards
 
 * Renamed board/ivms8 directory into board/ivm to fit better with new
index 8fc8c43ffdf2382884fdf17e255f01f7cfb12683..61bed005bc6fd6daa16b044c59cb9fc74cca0edd 100644 (file)
@@ -549,6 +549,45 @@ int do_kbd (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
        setenv ("keybd", keybd_env);
        return 0;
 }
+
+/* Read and set LSB switch */
+#define CFG_PC_TXD1_ENA                0x0008
+
+int do_lsb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
+{
+       uchar val;
+       immap_t *immr = (immap_t *)CFG_IMMR;
+
+       switch (argc) {
+       case 1:                 /* lsb - print setting */
+               val = pic_read (0x60);
+               printf ("LSB is o%s\n", (val & 0x20) ? "n" : "ff");
+               return 0;
+       case 2:                 /* lsb on or lsb off - set switch */
+               val = pic_read (0x60);
+
+               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;
+               } 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;
+               } else {
+                       break;
+               }
+               pic_write (0x60, val);
+               return 0;
+       default:
+               break;
+       }
+       printf ("Usage:\n%s\n", cmdtp->usage);
+       return 1;
+}
+
 #endif /* CFG_CMD_BSP */
 
 /*-----------------------------------------------------------------------
index cbe6a9276601149de7d4a7bdbdd42e5c7be0b167..bbbb5c1bebf116344ffd0597f86a65d8e0a4e7bc 100644 (file)
        "kbd",  3,      1,      1,      do_kbd,                                 \
        "kbd     - read keyboard status\n",                                     \
        NULL                                                                    \
+),  MK_CMD_TBL_ENTRY(                                                          \
+       "lsb",  3,      2,      1,      do_lsb,                                 \
+       "lsb     - check and set LSB switch\n",                                 \
+       "on  - switch LSB on\n"                                                 \
+       "lsb off - switch LSB off\n"                                            \
+       "lsb     - print current setting\n"                                     \
 ),
 int do_pic (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
 int do_kbd (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
+int do_lsb (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]);
 
 #endif /* CONFIG_LWMON */
 /* ----------------------------------------------------------------------------*/