From: wdenk Date: Wed, 16 Jan 2002 12:47:10 +0000 (+0000) Subject: Added command to switch LSB on LWMON boards X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d82497960fc484c35ccb80853697ffd53d803e9e;p=users%2Frw%2Fppcboot.git Added command to switch LSB on LWMON boards --- diff --git a/CHANGELOG b/CHANGELOG index d4493ca..12d4d81 100644 --- 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 diff --git a/board/lwmon/lwmon.c b/board/lwmon/lwmon.c index 8fc8c43..61bed00 100644 --- a/board/lwmon/lwmon.c +++ b/board/lwmon/lwmon.c @@ -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 */ /*----------------------------------------------------------------------- diff --git a/include/cmd_bsp.h b/include/cmd_bsp.h index cbe6a92..bbbb5c1 100644 --- a/include/cmd_bsp.h +++ b/include/cmd_bsp.h @@ -42,9 +42,16 @@ "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 */ /* ----------------------------------------------------------------------------*/