summaryrefslogtreecommitdiff
path: root/hw/xfree86/utils/ioport/ioport.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xfree86/utils/ioport/ioport.c')
-rw-r--r--hw/xfree86/utils/ioport/ioport.c491
1 files changed, 0 insertions, 491 deletions
diff --git a/hw/xfree86/utils/ioport/ioport.c b/hw/xfree86/utils/ioport/ioport.c
deleted file mode 100644
index 737043462..000000000
--- a/hw/xfree86/utils/ioport/ioport.c
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * Copyright 2002 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting documentation, and
- * that the name of Marc Aurele La France not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. Marc Aurele La France makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as-is" without express or implied warranty.
- *
- * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
- * EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "compiler.h"
-#include "xf86_OSproc.h"
-
-#include <errno.h>
-
-static char *MyName;
-static int Port = -1, Index = -1;
-static unsigned int Value;
-
-static void
-inb_usage
-(
-#ifdef __STDC__
- void
-#endif
-)
-{
- fprintf(stderr, "inb [-i <index>] <port>\n");
-}
-
-static void
-inw_usage
-(
-#ifdef __STDC__
- void
-#endif
-)
-{
- fprintf(stderr, "inw [-i <index>] <port>\n");
-}
-
-static void
-inl_usage
-(
-#ifdef __STDC__
- void
-#endif
-)
-{
- fprintf(stderr, "inl [-i <index>] <port>\n");
-}
-
-
-static void
-outb_usage
-(
-#ifdef __STDC__
- void
-#endif
-)
-{
- fprintf(stderr, "outb [-i <index>] <port> <value>\n");
-}
-
-static void
-outw_usage
-(
-#ifdef __STDC__
- void
-#endif
-)
-{
- fprintf(stderr, "outw [-i <index>] <port> <value>\n");
-}
-
-static void
-outl_usage
-(
-#ifdef __STDC__
- void
-#endif
-)
-{
- fprintf(stderr, "outl [-i <index>] <port> <value>\n");
-}
-
-static int
-#ifdef __STDC__
-parse_number
-(
- const char *String,
- void (* Usage)(void),
- unsigned int Maximum)
-#else
-parse_number(String, Usage, Maximum)
- const char *String;
- void (* Usage)();
- unsigned int Maximum;
-#endif
-{
- char *BadString = (char *)0;
- unsigned int Number = strtoul(String, &BadString, 0);
- if ((Number > Maximum) || errno ||
- (BadString && *BadString))
- {
- (*Usage)();
- exit(1);
- }
-
- return (Number);
-}
-
-static void
-#ifdef __STDC__
-input_parse
-(
- int argc,
- char **argv,
- void (* Usage)(void))
-#else
-input_parse(argc, argv, Usage)
- int argc;
- char **argv;
- void (* Usage)();
-#endif
-{
- if ((argc < 2) || (argc > 4))
- {
- (*Usage)();
- exit(1);
- }
-
- for(; (++argv, --argc); )
- {
- if ((Index < 0) &&
- (argv[0][0] == '-') &&
- (argv[0][1] == 'i'))
- {
- if ((++argv[0], *(++argv[0])) || (++argv, --argc))
- Index = parse_number(argv[0], Usage, 0xFFU);
- else
- {
- (*Usage)();
- exit(1);
- }
- }
- else if (Port < 0)
- {
- Port = parse_number(argv[0], Usage, 0xFFFFU);
- }
- else
- {
- (*Usage)();
- exit(1);
- }
- }
-}
-
-static void
-#ifdef __STDC__
-output_parse
-(
- int argc,
- char **argv,
- void (* Usage)(void),
- unsigned int Maximum
-)
-#else
-output_parse(argc, argv, Usage, Maximum)
- int argc;
- char **argv;
- void (* Usage)();
- unsigned int Maximum;
-#endif
-{
- char ValueSpecified = 0;
-
- if ((argc < 3) || (argc > 5))
- {
- (*Usage)();
- exit(1);
- }
-
- for (; (++argv, --argc); )
- {
- if ((Index < 0) &&
- (argv[0][0] == '-') &&
- (argv[0][1] == 'i'))
- {
- if ((++argv[0], *(++argv[0])) || (++argv, --argc))
- Index = parse_number(argv[0], Usage, 0xFFU);
- else
- {
- (*Usage)();
- exit(1);
- }
- }
- else if (Port < 0)
- {
- Port = parse_number(argv[0], Usage, 0xFFFFU);
- }
- else if (!ValueSpecified)
- {
- Value = parse_number(argv[0], Usage, Maximum);
- ValueSpecified = 1;
- }
- else
- {
- (*Usage)();
- exit(1);
- }
- }
-
- if (!ValueSpecified)
- {
- (*Usage)();
- exit(1);
- }
-}
-
-static void
-#ifdef __STDC__
-do_inb
-(
- int argc,
- char **argv
-)
-#else
-do_inb(argc, argv)
- int argc;
- char **argv;
-#endif
-{
- input_parse(argc, argv, inb_usage);
-
- xf86EnableIO();
-
- if (Index >= 0)
- {
- if (Port == 0x03C0U)
- { /* Attribute Controller is different */
- unsigned short gens1;
-
- gens1 = ((inb(0x03CCU) & 0x01U) << 5) + 0x03BA;
- (void) inb(gens1);
- Index = (Index & 0x1FU) | 0x20U;
- }
- outb(Port, Index);
- Port++;
- }
- Value = inb(Port);
-
- xf86DisableIO();
-
- printf("0x%02X\n", Value);
-}
-
-static void
-#ifdef __STDC__
-do_inw
-(
- int argc,
- char **argv
-)
-#else
-do_inw(argc, argv)
- int argc;
- char **argv;
-#endif
-{
- input_parse(argc, argv, inw_usage);
-
- xf86EnableIO();
-
- if (Index >= 0)
- {
- outb(Port, Index);
- Port++;
- }
- Value = inw(Port);
-
- xf86DisableIO();
-
- printf("0x%04X\n", Value);
-}
-
-static void
-#ifdef __STDC__
-do_inl
-(
- int argc,
- char **argv
-)
-#else
-do_inl(argc, argv)
- int argc;
- char **argv;
-#endif
-{
- input_parse(argc, argv, inl_usage);
-
- xf86EnableIO();
-
- if (Index >= 0)
- {
- outb(Port, Index);
- Port++;
- }
- Value = inl(Port);
-
- xf86DisableIO();
-
- printf("0x%08X\n", Value);
-}
-
-static void
-#ifdef __STDC__
-do_outb
-(
- int argc,
- char **argv
-)
-#else
-do_outb(argc, argv)
- int argc;
- char **argv;
-#endif
-{
- output_parse(argc, argv, outb_usage, 0xFFU);
-
- xf86EnableIO();
-
- if (Index >= 0)
- {
- if (Port == 0x03C0U)
- { /* Attribute controller is different */
- unsigned short gens1;
-
- gens1 = ((inb(0x03CCU) & 0x01U) << 5) + 0x03BA;
- (void) inb(gens1);
- outb(0x03C0U, (Index & 0x1FU) | 0x20U);
- }
- else
- {
- outb(Port, Index);
- Port++;
- }
- }
- outb(Port, Value);
-
- xf86DisableIO();
-
-}
-
-static void
-#ifdef __STDC__
-do_outw
-(
- int argc,
- char **argv
-)
-#else
-do_outw(argc, argv)
- int argc;
- char **argv;
-#endif
-{
- output_parse(argc, argv, outw_usage, 0xFFFFU);
-
- xf86EnableIO();
-
- if (Index >= 0)
- {
- outb(Port, Index);
- Port++;
- }
- outw(Port, Value);
-
- xf86DisableIO();
-
-}
-
-static void
-#ifdef __STDC__
-do_outl
-(
- int argc,
- char **argv
-)
-#else
-do_outl(argc, argv)
- int argc;
- char **argv;
-#endif
-{
- output_parse(argc, argv, outl_usage, 0xFFFFFFFFU);
-
- xf86EnableIO();
-
- if (Index >= 0)
- {
- outb(Port, Index);
- Port++;
- }
- outl(Port, Value);
-
- xf86DisableIO();
-
-}
-
-static void
-usage
-(
-#ifdef __STDC__
- void
-#endif
-)
-{
- inb_usage();
- inw_usage();
- inl_usage();
- outb_usage();
- outw_usage();
- outl_usage();
- exit(1);
-}
-
-int
-#ifdef __STDC__
-main
-(
- int argc,
- char **argv
-)
-#else
-main(argc, argv)
- int argc;
- char **argv;
-#endif
-{
- struct
- {
- char *Name;
-#ifdef __STDC__
- void (* Function)(int, char **);
-#else
- void (* Function)();
-#endif
- }
- *Function_Entry, Function_Table[] =
- {
- {"inb", do_inb},
- {"inw", do_inw},
- {"inl", do_inl},
- {"outb", do_outb},
- {"outw", do_outw},
- {"outl", do_outl},
-#ifdef __STDC__
- {(char *)0, (void (*)(int, char **))usage}
-#else
- {(char *)0, usage}
-#endif
- };
-
- /* Get name by which we were invoked */
- for (MyName = argv[0]; argv[0][0]; )
- if (*(argv[0]++) == '/')
- MyName = argv[0];
-
- /* Look up name in table and call corresponding function */
- for (Function_Entry = Function_Table;
- Function_Entry->Name &&
- strcmp(MyName, Function_Entry->Name);
- Function_Entry++);
- (*Function_Entry->Function)(argc, argv);
-
- return (0);
-}
-