1 /* Parallel-port initialisation code. 3 * Authors: David Campbell <campbell@torque.net> 4 * Tim Waugh <tim@cyberelk.demon.co.uk> 5 * Jose Renau <renau@acm.org> 7 * based on work by Grant Guenther <grant@torque.net> 8 * and Philip Blundell <Philip.Blundell@pobox.com> 11 #include <linux/config.h> 12 #include <linux/module.h> 13 #include <linux/threads.h> 14 #include <linux/string.h> 15 #include <linux/parport.h> 16 #include <linux/errno.h> 17 #include <linux/kernel.h> 18 #include <linux/malloc.h> 19 #include <linux/init.h> 22 static int io
[PARPORT_MAX
+1] __initdata
= { [0... PARPORT_MAX
] =0}; 23 static int io_hi
[PARPORT_MAX
+1] __initdata
= { [0... PARPORT_MAX
] =0}; 24 static int irq
[PARPORT_MAX
] __initdata
= { [0... PARPORT_MAX
-1] = PARPORT_IRQ_PROBEONLY
}; 25 static int dma
[PARPORT_MAX
] __initdata
= { [0... PARPORT_MAX
-1] = PARPORT_DMA_NONE
}; 27 externintparport_pc_init(int*io
,int*io_hi
,int*irq
,int*dma
); 28 externintparport_sunbpp_init(void); 30 static int parport_setup_ptr __initdata
=0; 33 * Acceptable parameters: 37 * parport=0xBASE[,IRQ[,DMA]] 39 * IRQ/DMA may be numeric or 'auto' or 'none' 41 static int __init
parport_setup(char*str
) 47 if(!str
|| !*str
|| (*str
=='0'&& !*(str
+1))) { 48 /* Disable parport if "parport=0" in cmdline */ 49 io
[0] = PARPORT_DISABLE
; 53 if(!strncmp(str
,"auto",4)) { 54 irq
[0] = PARPORT_IRQ_AUTO
; 55 dma
[0] = PARPORT_DMA_AUTO
; 59 val
=simple_strtoul(str
, &endptr
,0); 61 printk(KERN_WARNING
"parport=%s not understood\n", str
); 65 if(parport_setup_ptr
== PARPORT_MAX
) { 66 printk(KERN_ERR
"parport=%s ignored, too many ports\n", str
); 70 io
[parport_setup_ptr
] = val
; 71 irq
[parport_setup_ptr
] = PARPORT_IRQ_NONE
; 72 dma
[parport_setup_ptr
] = PARPORT_DMA_NONE
; 76 if(!strncmp(sep
,"auto",4)) 77 irq
[parport_setup_ptr
] = PARPORT_IRQ_AUTO
; 78 else if(strncmp(sep
,"none",4)) { 79 val
=simple_strtoul(sep
, &endptr
,0); 82 "parport=%s: irq not understood\n", 86 irq
[parport_setup_ptr
] = val
; 92 if(!strncmp(sep
,"auto",4)) 93 dma
[parport_setup_ptr
] = PARPORT_DMA_AUTO
; 94 else if(strncmp(sep
,"none",4)) { 95 val
=simple_strtoul(sep
, &endptr
,0); 98 "parport=%s: dma not understood\n", 102 dma
[parport_setup_ptr
] = val
; 110 __setup("parport=", parport_setup
); 118 parport_default_proc_register(); 123 voidcleanup_module(void) 126 parport_default_proc_unregister(); 132 int __init
parport_init(void) 134 if(io
[0] == PARPORT_DISABLE
) 138 parport_default_proc_register(); 141 #ifdef CONFIG_PARPORT_PC 142 parport_pc_init(io
, io_hi
, irq
, dma
); 144 #ifdef CONFIG_PARPORT_AMIGA 145 parport_amiga_init(); 147 #ifdef CONFIG_PARPORT_MFC3 150 #ifdef CONFIG_PARPORT_ATARI 151 parport_atari_init(); 153 #ifdef CONFIG_PARPORT_ARC 156 #ifdef CONFIG_PARPORT_SUNBPP 157 parport_sunbpp_init(); 164 /* Exported symbols for modules. */ 166 EXPORT_SYMBOL(parport_claim
); 167 EXPORT_SYMBOL(parport_claim_or_block
); 168 EXPORT_SYMBOL(parport_release
); 169 EXPORT_SYMBOL(parport_register_port
); 170 EXPORT_SYMBOL(parport_announce_port
); 171 EXPORT_SYMBOL(parport_unregister_port
); 172 EXPORT_SYMBOL(parport_register_driver
); 173 EXPORT_SYMBOL(parport_unregister_driver
); 174 EXPORT_SYMBOL(parport_register_device
); 175 EXPORT_SYMBOL(parport_unregister_device
); 176 EXPORT_SYMBOL(parport_enumerate
); 177 EXPORT_SYMBOL(parport_negotiate
); 178 EXPORT_SYMBOL(parport_write
); 179 EXPORT_SYMBOL(parport_read
); 180 EXPORT_SYMBOL(parport_ieee1284_wakeup
); 181 EXPORT_SYMBOL(parport_wait_peripheral
); 182 EXPORT_SYMBOL(parport_wait_event
); 183 EXPORT_SYMBOL(parport_set_timeout
); 184 EXPORT_SYMBOL(parport_ieee1284_interrupt
); 185 EXPORT_SYMBOL(parport_ieee1284_ecp_write_data
); 186 EXPORT_SYMBOL(parport_ieee1284_ecp_read_data
); 187 EXPORT_SYMBOL(parport_ieee1284_ecp_write_addr
); 188 EXPORT_SYMBOL(parport_ieee1284_write_compat
); 189 EXPORT_SYMBOL(parport_ieee1284_read_nibble
); 190 EXPORT_SYMBOL(parport_ieee1284_read_byte
); 191 EXPORT_SYMBOL(parport_ieee1284_epp_write_data
); 192 EXPORT_SYMBOL(parport_ieee1284_epp_read_data
); 193 EXPORT_SYMBOL(parport_ieee1284_epp_write_addr
); 194 EXPORT_SYMBOL(parport_ieee1284_epp_read_addr
); 195 EXPORT_SYMBOL(parport_proc_register
); 196 EXPORT_SYMBOL(parport_proc_unregister
); 197 EXPORT_SYMBOL(parport_device_proc_register
); 198 EXPORT_SYMBOL(parport_device_proc_unregister
); 199 EXPORT_SYMBOL(parport_default_proc_register
); 200 EXPORT_SYMBOL(parport_default_proc_unregister
); 201 EXPORT_SYMBOL(parport_parse_irqs
); 202 EXPORT_SYMBOL(parport_parse_dmas
); 203 #ifdef CONFIG_PARPORT_1284 204 EXPORT_SYMBOL(parport_open
); 205 EXPORT_SYMBOL(parport_close
); 206 EXPORT_SYMBOL(parport_device_id
); 207 EXPORT_SYMBOL(parport_device_num
); 208 EXPORT_SYMBOL(parport_device_coords
); 209 EXPORT_SYMBOL(parport_daisy_deselect_all
); 210 EXPORT_SYMBOL(parport_daisy_select
); 211 EXPORT_SYMBOL(parport_daisy_init
); 214 voidinc_parport_count(void) 221 voiddec_parport_count(void)