Merge from vendor branch LIBARCHIVE:
[dragonfly.git] / usr.sbin / pcvt / set2061 / main.c
1 /*
2  * Copyright (c) 1994 Hellmuth Michaelis
3  *
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. All advertising materials mentioning features or use of this software
15  *    must display the following acknowledgement:
16  *      This product includes software developed by
17  *      Hellmuth Michaelis
18  * 4. The name authors may not be used to endorse or promote products
19  *    derived from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
22  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * $DragonFly: src/usr.sbin/pcvt/set2061/Attic/main.c,v 1.2 2004/03/24 17:46:23 cpressey Exp $
33  */
34
35 static char *id =
36         "@(#)set2061.c, 1.00, Last Edit-Date: [Sun Jan 15 19:52:05 1995]";
37
38 /*---------------------------------------------------------------------------*
39  *
40  *      history:
41  *
42  *      -hm     start using 132 columns on my Elsa Winner
43  *
44  *---------------------------------------------------------------------------*/
45
46 #include <stdio.h>
47 #include <fcntl.h>
48 #include <machine/pcvt_ioctl.h>
49
50 #define DEFAULTFD 0
51
52 extern void AltICD2061SetClock(long frequency, int select);
53
54 static void usage(void);
55
56 int
57 main(int argc, char **argv)
58 {
59         extern int optind;
60         extern int opterr;
61         extern char *optarg;
62
63         int fd;
64         int c;
65         long freq = -1;
66         int no = -1;
67
68         while( (c = getopt(argc, argv, "f:n:")) != -1)
69         {
70                 switch(c)
71                 {
72                         case 'f':
73                                 freq = atoi(optarg);
74                                 break;
75
76                         case 'n':
77                                 no = atoi(optarg);
78                                 break;
79
80                         case '?':
81                         default:
82                                 usage();
83                                 break;
84                 }
85         }
86
87         if(freq == -1 || no == -1)
88                 usage();
89
90         if((fd = open("/dev/console", O_RDONLY)) < 0)
91                 fd = DEFAULTFD;
92
93         if(ioctl(fd, KDENABIO, 0) < 0)
94         {
95                 perror("ioctl(KDENABIO)");
96                 return 1;
97         }
98
99         AltICD2061SetClock(freq, no);
100
101         (void)ioctl(fd, KDDISABIO, 0);
102
103         exit(0);
104 }
105
106 void
107 usage(void)
108 {
109         fprintf(stderr,"\nset2061 - program the ICD2061 video clock chip\n");
110         fprintf(stderr,"usage: set2061 -f <freq> -n <no>\n");
111         fprintf(stderr,"       -f <freq>     frequency in Hz\n");
112         fprintf(stderr,"       -n <no>       clock generator number\n");
113         exit(1);
114 }
115