diff options
Diffstat (limited to 'drivers/char/ftape/lowlevel/ftape-setup.c')
-rw-r--r-- | drivers/char/ftape/lowlevel/ftape-setup.c | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/drivers/char/ftape/lowlevel/ftape-setup.c b/drivers/char/ftape/lowlevel/ftape-setup.c new file mode 100644 index 000000000000..280a1a55d87e --- /dev/null +++ b/drivers/char/ftape/lowlevel/ftape-setup.c | |||
@@ -0,0 +1,105 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1996, 1997 Claus-Justus Heine. | ||
3 | |||
4 | This program is free software; you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation; either version 2, or (at your option) | ||
7 | any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program; see the file COPYING. If not, write to | ||
16 | the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | ||
17 | |||
18 | * | ||
19 | * $Source: /homes/cvs/ftape-stacked/ftape/lowlevel/ftape-setup.c,v $ | ||
20 | * $Revision: 1.7 $ | ||
21 | * $Date: 1997/10/10 09:57:06 $ | ||
22 | * | ||
23 | * This file contains the code for processing the kernel command | ||
24 | * line options for the QIC-40/80/3010/3020 floppy-tape driver | ||
25 | * "ftape" for Linux. | ||
26 | */ | ||
27 | |||
28 | #include <linux/config.h> | ||
29 | #include <linux/string.h> | ||
30 | #include <linux/errno.h> | ||
31 | #include <linux/mm.h> | ||
32 | |||
33 | #include <linux/ftape.h> | ||
34 | #include <linux/init.h> | ||
35 | #include "../lowlevel/ftape-tracing.h" | ||
36 | #include "../lowlevel/fdc-io.h" | ||
37 | |||
38 | static struct param_table { | ||
39 | const char *name; | ||
40 | int *var; | ||
41 | int def_param; | ||
42 | int min; | ||
43 | int max; | ||
44 | } config_params[] __initdata = { | ||
45 | #ifndef CONFIG_FT_NO_TRACE_AT_ALL | ||
46 | { "tracing", &ftape_tracing, 3, ft_t_bug, ft_t_any}, | ||
47 | #endif | ||
48 | { "ioport", &ft_fdc_base, CONFIG_FT_FDC_BASE, 0x0, 0xfff}, | ||
49 | { "irq", &ft_fdc_irq, CONFIG_FT_FDC_IRQ, 2, 15}, | ||
50 | { "dma", &ft_fdc_dma, CONFIG_FT_FDC_DMA, 0, 3}, | ||
51 | { "threshold", &ft_fdc_threshold, CONFIG_FT_FDC_THR, 1, 16}, | ||
52 | { "datarate", &ft_fdc_rate_limit, CONFIG_FT_FDC_MAX_RATE, 500, 2000}, | ||
53 | { "fc10", &ft_probe_fc10, CONFIG_FT_PROBE_FC10, 0, 1}, | ||
54 | { "mach2", &ft_mach2, CONFIG_FT_MACH2, 0, 1} | ||
55 | }; | ||
56 | |||
57 | static int __init ftape_setup(char *str) | ||
58 | { | ||
59 | int i; | ||
60 | int param; | ||
61 | int ints[2]; | ||
62 | |||
63 | TRACE_FUN(ft_t_flow); | ||
64 | |||
65 | str = get_options(str, ARRAY_SIZE(ints), ints); | ||
66 | if (str) { | ||
67 | for (i=0; i < NR_ITEMS(config_params); i++) { | ||
68 | if (strcmp(str,config_params[i].name) == 0){ | ||
69 | if (ints[0]) { | ||
70 | param = ints[1]; | ||
71 | } else { | ||
72 | param = config_params[i].def_param; | ||
73 | } | ||
74 | if (param < config_params[i].min || | ||
75 | param > config_params[i].max) { | ||
76 | TRACE(ft_t_err, | ||
77 | "parameter %s out of range %d ... %d", | ||
78 | config_params[i].name, | ||
79 | config_params[i].min, | ||
80 | config_params[i].max); | ||
81 | goto out; | ||
82 | } | ||
83 | if(config_params[i].var) { | ||
84 | TRACE(ft_t_info, "%s=%d", str, param); | ||
85 | *config_params[i].var = param; | ||
86 | } | ||
87 | goto out; | ||
88 | } | ||
89 | } | ||
90 | } | ||
91 | if (str) { | ||
92 | TRACE(ft_t_err, "unknown ftape option [%s]", str); | ||
93 | |||
94 | TRACE(ft_t_err, "allowed options are:"); | ||
95 | for (i=0; i < NR_ITEMS(config_params); i++) { | ||
96 | TRACE(ft_t_err, " %s",config_params[i].name); | ||
97 | } | ||
98 | } else { | ||
99 | TRACE(ft_t_err, "botched ftape option"); | ||
100 | } | ||
101 | out: | ||
102 | TRACE_EXIT 1; | ||
103 | } | ||
104 | |||
105 | __setup("ftape=", ftape_setup); | ||