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> 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_ax_init(void); 30 static int parport_setup_ptr __initdata
=0; 32 __initfunc(voidparport_setup(char*str
,int*ints
)) 35 if(str
&& !strncmp(str
,"auto",4)) { 36 irq
[0] = PARPORT_IRQ_AUTO
; 37 dma
[0] = PARPORT_DMA_AUTO
; 40 printk(KERN_ERR
"parport: `%s': huh?\n", str
); 42 printk(KERN_ERR
"parport: parport=.. what?\n"); 46 else if(ints
[1] ==0) { 47 /* Disable parport if "parport=0" in cmdline */ 48 io
[0] = PARPORT_DISABLE
; 52 if(parport_setup_ptr
< PARPORT_MAX
) { 54 io
[parport_setup_ptr
] = ints
[1]; 55 irq
[parport_setup_ptr
] = PARPORT_IRQ_NONE
; 56 dma
[parport_setup_ptr
] = PARPORT_DMA_NONE
; 58 irq
[parport_setup_ptr
] = ints
[2]; 60 dma
[parport_setup_ptr
] = ints
[3]; 71 else if(!strncmp(str
,"auto",4)) 72 irq
[parport_setup_ptr
] = PARPORT_IRQ_AUTO
; 73 else if(strncmp(str
,"none",4) !=0) { 74 printk(KERN_ERR
"parport: bad irq `%s'\n", str
); 78 if((sep
=strchr(str
,',')) == NULL
)goto done
; 81 if(!strncmp(str
,"auto",4)) 82 dma
[parport_setup_ptr
] = PARPORT_DMA_AUTO
; 83 else if(strncmp(str
,"none",4) !=0) { 85 dma
[parport_setup_ptr
] =simple_strtoul(str
, &ep
,0); 87 printk(KERN_ERR
"parport: bad dma `%s'\n", 95 printk(KERN_ERR
"parport=%s ignored, too many ports\n", str
); 103 parport_default_proc_register(); 108 voidcleanup_module(void) 111 parport_default_proc_unregister(); 117 __initfunc(intparport_init(void)) 119 if(io
[0] == PARPORT_DISABLE
) 123 parport_default_proc_register(); 126 #ifdef CONFIG_PARPORT_PC 127 parport_pc_init(io
, io_hi
, irq
, dma
); 129 #ifdef CONFIG_PARPORT_AX 132 #ifdef CONFIG_PARPORT_AMIGA 133 parport_amiga_init(); 135 #ifdef CONFIG_PARPORT_MFC3 138 #ifdef CONFIG_PARPORT_ATARI 139 parport_atari_init(); 141 #ifdef CONFIG_PARPORT_ARC 148 /* Exported symbols for modules. */ 150 EXPORT_SYMBOL(parport_claim
); 151 EXPORT_SYMBOL(parport_claim_or_block
); 152 EXPORT_SYMBOL(parport_release
); 153 EXPORT_SYMBOL(parport_register_port
); 154 EXPORT_SYMBOL(parport_announce_port
); 155 EXPORT_SYMBOL(parport_unregister_port
); 156 EXPORT_SYMBOL(parport_register_driver
); 157 EXPORT_SYMBOL(parport_unregister_driver
); 158 EXPORT_SYMBOL(parport_register_device
); 159 EXPORT_SYMBOL(parport_unregister_device
); 160 EXPORT_SYMBOL(parport_enumerate
); 161 EXPORT_SYMBOL(parport_negotiate
); 162 EXPORT_SYMBOL(parport_write
); 163 EXPORT_SYMBOL(parport_read
); 164 EXPORT_SYMBOL(parport_ieee1284_wakeup
); 165 EXPORT_SYMBOL(parport_wait_peripheral
); 166 EXPORT_SYMBOL(parport_wait_event
); 167 EXPORT_SYMBOL(parport_set_timeout
); 168 EXPORT_SYMBOL(parport_ieee1284_interrupt
); 169 EXPORT_SYMBOL(parport_ieee1284_ecp_write_data
); 170 EXPORT_SYMBOL(parport_ieee1284_ecp_read_data
); 171 EXPORT_SYMBOL(parport_ieee1284_ecp_write_addr
); 172 EXPORT_SYMBOL(parport_ieee1284_write_compat
); 173 EXPORT_SYMBOL(parport_ieee1284_read_nibble
); 174 EXPORT_SYMBOL(parport_ieee1284_read_byte
); 175 EXPORT_SYMBOL(parport_ieee1284_epp_write_data
); 176 EXPORT_SYMBOL(parport_ieee1284_epp_read_data
); 177 EXPORT_SYMBOL(parport_ieee1284_epp_write_addr
); 178 EXPORT_SYMBOL(parport_ieee1284_epp_read_addr
); 179 EXPORT_SYMBOL(parport_proc_register
); 180 EXPORT_SYMBOL(parport_proc_unregister
); 181 EXPORT_SYMBOL(parport_device_proc_register
); 182 EXPORT_SYMBOL(parport_device_proc_unregister
); 183 EXPORT_SYMBOL(parport_default_proc_register
); 184 EXPORT_SYMBOL(parport_default_proc_unregister
); 185 EXPORT_SYMBOL(parport_parse_irqs
); 186 EXPORT_SYMBOL(parport_parse_dmas
); 187 #ifdef CONFIG_PARPORT_1284 188 EXPORT_SYMBOL(parport_open
); 189 EXPORT_SYMBOL(parport_close
); 190 EXPORT_SYMBOL(parport_device_id
); 191 EXPORT_SYMBOL(parport_device_num
); 192 EXPORT_SYMBOL(parport_device_coords
); 193 EXPORT_SYMBOL(parport_daisy_deselect_all
); 194 EXPORT_SYMBOL(parport_daisy_select
); 195 EXPORT_SYMBOL(parport_daisy_init
); 198 voidinc_parport_count(void) 205 voiddec_parport_count(void)