Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
8e96b6e0
Commit
8e96b6e0
authored
Nov 14, 2002
by
Alexander Viro
Committed by
Jens Axboe
Nov 14, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] paride.c fed through Lindent
parent
82a5acd5
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
221 additions
and
207 deletions
+221
-207
drivers/block/paride/paride.c
drivers/block/paride/paride.c
+221
-207
No files found.
drivers/block/paride/paride.c
View file @
8e96b6e0
...
@@ -46,43 +46,43 @@ static struct pi_protocol *protocols[MAX_PROTOS];
...
@@ -46,43 +46,43 @@ static struct pi_protocol *protocols[MAX_PROTOS];
static
spinlock_t
pi_spinlock
=
SPIN_LOCK_UNLOCKED
;
static
spinlock_t
pi_spinlock
=
SPIN_LOCK_UNLOCKED
;
void
pi_write_regr
(
PIA
*
pi
,
int
cont
,
int
regr
,
int
val
)
void
pi_write_regr
(
PIA
*
pi
,
int
cont
,
int
regr
,
int
val
)
{
{
pi
->
proto
->
write_regr
(
pi
,
cont
,
regr
,
val
);
pi
->
proto
->
write_regr
(
pi
,
cont
,
regr
,
val
);
}
}
EXPORT_SYMBOL
(
pi_write_regr
);
EXPORT_SYMBOL
(
pi_write_regr
);
int
pi_read_regr
(
PIA
*
pi
,
int
cont
,
int
regr
)
int
pi_read_regr
(
PIA
*
pi
,
int
cont
,
int
regr
)
{
{
return
pi
->
proto
->
read_regr
(
pi
,
cont
,
regr
);
return
pi
->
proto
->
read_regr
(
pi
,
cont
,
regr
);
}
}
EXPORT_SYMBOL
(
pi_read_regr
);
EXPORT_SYMBOL
(
pi_read_regr
);
void
pi_write_block
(
PIA
*
pi
,
char
*
buf
,
int
count
)
void
pi_write_block
(
PIA
*
pi
,
char
*
buf
,
int
count
)
{
{
pi
->
proto
->
write_block
(
pi
,
buf
,
count
);
pi
->
proto
->
write_block
(
pi
,
buf
,
count
);
}
}
EXPORT_SYMBOL
(
pi_write_block
);
EXPORT_SYMBOL
(
pi_write_block
);
void
pi_read_block
(
PIA
*
pi
,
char
*
buf
,
int
count
)
void
pi_read_block
(
PIA
*
pi
,
char
*
buf
,
int
count
)
{
{
pi
->
proto
->
read_block
(
pi
,
buf
,
count
);
pi
->
proto
->
read_block
(
pi
,
buf
,
count
);
}
}
EXPORT_SYMBOL
(
pi_read_block
);
EXPORT_SYMBOL
(
pi_read_block
);
#ifdef CONFIG_PARPORT
#ifdef CONFIG_PARPORT
static
void
pi_wake_up
(
void
*
p
)
static
void
pi_wake_up
(
void
*
p
)
{
{
PIA
*
pi
=
(
PIA
*
)
p
;
PIA
*
pi
=
(
PIA
*
)
p
;
unsigned
long
flags
;
unsigned
long
flags
;
void
(
*
cont
)(
void
)
=
NULL
;
void
(
*
cont
)
(
void
)
=
NULL
;
spin_lock_irqsave
(
&
pi_spinlock
,
flags
);
spin_lock_irqsave
(
&
pi_spinlock
,
flags
);
if
(
pi
->
claim_cont
&&
!
parport_claim
(
pi
->
pardev
))
{
if
(
pi
->
claim_cont
&&
!
parport_claim
(
pi
->
pardev
))
{
cont
=
pi
->
claim_cont
;
cont
=
pi
->
claim_cont
;
...
@@ -90,94 +90,90 @@ static void pi_wake_up( void *p)
...
@@ -90,94 +90,90 @@ static void pi_wake_up( void *p)
pi
->
claimed
=
1
;
pi
->
claimed
=
1
;
}
}
spin_unlock_irqrestore
(
&
pi_spinlock
,
flags
);
spin_unlock_irqrestore
(
&
pi_spinlock
,
flags
);
wake_up
(
&
(
pi
->
parq
));
wake_up
(
&
(
pi
->
parq
));
if
(
cont
)
cont
();
if
(
cont
)
cont
();
}
}
#endif
#endif
void
pi_do_claimed
(
PIA
*
pi
,
void
(
*
cont
)
(
void
))
void
pi_do_claimed
(
PIA
*
pi
,
void
(
*
cont
)
(
void
))
{
#ifdef CONFIG_PARPORT
#ifdef CONFIG_PARPORT
unsigned
long
flags
;
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
pi_spinlock
,
flags
);
spin_lock_irqsave
(
&
pi_spinlock
,
flags
);
if
(
!
pi
->
pardev
||
!
parport_claim
(
pi
->
pardev
))
{
if
(
pi
->
pardev
&&
parport_claim
(
pi
->
pardev
))
{
pi
->
claimed
=
1
;
spin_unlock_irqrestore
(
&
pi_spinlock
,
flags
);
cont
();
}
else
{
pi
->
claim_cont
=
cont
;
pi
->
claim_cont
=
cont
;
spin_unlock_irqrestore
(
&
pi_spinlock
,
flags
);
spin_unlock_irqrestore
(
&
pi_spinlock
,
flags
);
return
;
}
}
pi
->
claimed
=
1
;
spin_unlock_irqrestore
(
&
pi_spinlock
,
flags
);
#endif
cont
();
}
}
#else
{
cont
();
}
#endif
EXPORT_SYMBOL
(
pi_do_claimed
);
EXPORT_SYMBOL
(
pi_do_claimed
);
static
void
pi_claim
(
PIA
*
pi
)
static
void
pi_claim
(
PIA
*
pi
)
{
{
if
(
pi
->
claimed
)
return
;
if
(
pi
->
claimed
)
return
;
pi
->
claimed
=
1
;
pi
->
claimed
=
1
;
#ifdef CONFIG_PARPORT
#ifdef CONFIG_PARPORT
if
(
pi
->
pardev
)
if
(
pi
->
pardev
)
wait_event
(
pi
->
parq
,
wait_event
(
pi
->
parq
,
!
parport_claim
((
struct
pardevice
*
)
pi
->
pardev
));
!
parport_claim
((
struct
pardevice
*
)
pi
->
pardev
));
#endif
#endif
}
}
static
void
pi_unclaim
(
PIA
*
pi
)
static
void
pi_unclaim
(
PIA
*
pi
)
{
{
pi
->
claimed
=
0
;
pi
->
claimed
=
0
;
#ifdef CONFIG_PARPORT
#ifdef CONFIG_PARPORT
if
(
pi
->
pardev
)
parport_release
((
struct
pardevice
*
)(
pi
->
pardev
));
if
(
pi
->
pardev
)
parport_release
((
struct
pardevice
*
)
(
pi
->
pardev
));
#endif
#endif
}
}
void
pi_connect
(
PIA
*
pi
)
void
pi_connect
(
PIA
*
pi
)
{
{
pi_claim
(
pi
);
pi_claim
(
pi
);
pi
->
proto
->
connect
(
pi
);
pi
->
proto
->
connect
(
pi
);
}
}
EXPORT_SYMBOL
(
pi_connect
);
EXPORT_SYMBOL
(
pi_connect
);
void
pi_disconnect
(
PIA
*
pi
)
void
pi_disconnect
(
PIA
*
pi
)
{
{
pi
->
proto
->
disconnect
(
pi
);
pi
->
proto
->
disconnect
(
pi
);
pi_unclaim
(
pi
);
pi_unclaim
(
pi
);
}
}
EXPORT_SYMBOL
(
pi_disconnect
);
EXPORT_SYMBOL
(
pi_disconnect
);
static
void
pi_unregister_parport
(
PIA
*
pi
)
static
void
pi_unregister_parport
(
PIA
*
pi
)
{
{
#ifdef CONFIG_PARPORT
#ifdef CONFIG_PARPORT
if
(
pi
->
pardev
)
{
if
(
pi
->
pardev
)
{
parport_unregister_device
((
struct
pardevice
*
)
(
pi
->
pardev
));
parport_unregister_device
((
struct
pardevice
*
)
(
pi
->
pardev
));
pi
->
pardev
=
NULL
;
pi
->
pardev
=
NULL
;
}
}
#endif
#endif
}
}
void
pi_release
(
PIA
*
pi
)
void
pi_release
(
PIA
*
pi
)
{
{
pi_unregister_parport
(
pi
);
pi_unregister_parport
(
pi
);
#ifndef CONFIG_PARPORT
#ifndef CONFIG_PARPORT
if
(
pi
->
reserved
)
if
(
pi
->
reserved
)
release_region
(
pi
->
port
,
pi
->
reserved
);
release_region
(
pi
->
port
,
pi
->
reserved
);
#endif
/* !CONFIG_PARPORT */
#endif
/* !CONFIG_PARPORT */
pi
->
proto
->
release_proto
(
pi
);
pi
->
proto
->
release_proto
(
pi
);
}
}
...
@@ -187,26 +183,27 @@ EXPORT_SYMBOL(pi_release);
...
@@ -187,26 +183,27 @@ EXPORT_SYMBOL(pi_release);
#define WR(r,v) pi_write_regr(pi,0,r,v)
#define WR(r,v) pi_write_regr(pi,0,r,v)
#define RR(r) (pi_read_regr(pi,0,r))
#define RR(r) (pi_read_regr(pi,0,r))
static
int
pi_test_proto
(
PIA
*
pi
,
char
*
scratch
,
int
verbose
)
static
int
pi_test_proto
(
PIA
*
pi
,
char
*
scratch
,
int
verbose
)
{
{
int
j
,
k
;
int
j
,
k
;
int
e
[
2
]
=
{
0
,
0
};
int
e
[
2
]
=
{
0
,
0
};
if
(
pi
->
proto
->
test_proto
)
{
if
(
pi
->
proto
->
test_proto
)
{
pi_claim
(
pi
);
pi_claim
(
pi
);
j
=
pi
->
proto
->
test_proto
(
pi
,
scratch
,
verbose
);
j
=
pi
->
proto
->
test_proto
(
pi
,
scratch
,
verbose
);
pi_unclaim
(
pi
);
pi_unclaim
(
pi
);
return
j
;
return
j
;
}
}
pi_connect
(
pi
);
pi_connect
(
pi
);
for
(
j
=
0
;
j
<
2
;
j
++
)
{
for
(
j
=
0
;
j
<
2
;
j
++
)
{
WR
(
6
,
0xa0
+
j
*
0x10
);
WR
(
6
,
0xa0
+
j
*
0x10
);
for
(
k
=
0
;
k
<
256
;
k
++
)
{
for
(
k
=
0
;
k
<
256
;
k
++
)
{
WR
(
2
,
k
^
0xaa
);
WR
(
2
,
k
^
0xaa
);
WR
(
3
,
k
^
0x55
);
WR
(
3
,
k
^
0x55
);
if
(
RR
(
2
)
!=
(
k
^
0xaa
))
e
[
j
]
++
;
if
(
RR
(
2
)
!=
(
k
^
0xaa
))
e
[
j
]
++
;
}
}
}
}
...
@@ -214,23 +211,25 @@ static int pi_test_proto( PIA *pi, char * scratch, int verbose )
...
@@ -214,23 +211,25 @@ static int pi_test_proto( PIA *pi, char * scratch, int verbose )
if
(
verbose
)
if
(
verbose
)
printk
(
"%s: %s: port 0x%x, mode %d, test=(%d,%d)
\n
"
,
printk
(
"%s: %s: port 0x%x, mode %d, test=(%d,%d)
\n
"
,
pi
->
device
,
pi
->
proto
->
name
,
pi
->
port
,
pi
->
device
,
pi
->
proto
->
name
,
pi
->
port
,
pi
->
mode
,
e
[
0
],
e
[
1
]);
pi
->
mode
,
e
[
0
],
e
[
1
]);
return
(
e
[
0
]
&&
e
[
1
]);
/* not here if both > 0 */
return
(
e
[
0
]
&&
e
[
1
]);
/* not here if both > 0 */
}
}
int
pi_register
(
PIP
*
pr
)
int
pi_register
(
PIP
*
pr
)
{
{
int
k
;
int
k
;
for
(
k
=
0
;
k
<
MAX_PROTOS
;
k
++
)
for
(
k
=
0
;
k
<
MAX_PROTOS
;
k
++
)
if
(
protocols
[
k
]
&&
!
strcmp
(
pr
->
name
,
protocols
[
k
]
->
name
))
{
if
(
protocols
[
k
]
&&
!
strcmp
(
pr
->
name
,
protocols
[
k
]
->
name
))
{
printk
(
"paride: %s protocol already registered
\n
"
,
pr
->
name
);
printk
(
"paride: %s protocol already registered
\n
"
,
pr
->
name
);
return
0
;
return
0
;
}
}
k
=
0
;
k
=
0
;
while
((
k
<
MAX_PROTOS
)
&&
(
protocols
[
k
]))
k
++
;
while
((
k
<
MAX_PROTOS
)
&&
(
protocols
[
k
]))
k
++
;
if
(
k
==
MAX_PROTOS
)
{
if
(
k
==
MAX_PROTOS
)
{
printk
(
"paride: protocol table full
\n
"
);
printk
(
"paride: protocol table full
\n
"
);
return
0
;
return
0
;
...
@@ -238,17 +237,18 @@ int pi_register( PIP *pr)
...
@@ -238,17 +237,18 @@ int pi_register( PIP *pr)
MOD_INC_USE_COUNT
;
MOD_INC_USE_COUNT
;
protocols
[
k
]
=
pr
;
protocols
[
k
]
=
pr
;
pr
->
index
=
k
;
pr
->
index
=
k
;
printk
(
"paride: %s registered as protocol %d
\n
"
,
pr
->
name
,
k
);
printk
(
"paride: %s registered as protocol %d
\n
"
,
pr
->
name
,
k
);
return
1
;
return
1
;
}
}
EXPORT_SYMBOL
(
pi_register
);
EXPORT_SYMBOL
(
pi_register
);
void
pi_unregister
(
PIP
*
pr
)
void
pi_unregister
(
PIP
*
pr
)
{
{
if
(
!
pr
)
return
;
if
(
!
pr
)
return
;
if
(
protocols
[
pr
->
index
]
!=
pr
)
{
if
(
protocols
[
pr
->
index
]
!=
pr
)
{
printk
(
"paride: %s not registered
\n
"
,
pr
->
name
);
printk
(
"paride: %s not registered
\n
"
,
pr
->
name
);
return
;
return
;
}
}
protocols
[
pr
->
index
]
=
0
;
protocols
[
pr
->
index
]
=
0
;
...
@@ -257,87 +257,93 @@ void pi_unregister( PIP *pr)
...
@@ -257,87 +257,93 @@ void pi_unregister( PIP *pr)
EXPORT_SYMBOL
(
pi_unregister
);
EXPORT_SYMBOL
(
pi_unregister
);
static
int
pi_register_parport
(
PIA
*
pi
,
int
verbose
)
static
int
pi_register_parport
(
PIA
*
pi
,
int
verbose
)
{
{
#ifdef CONFIG_PARPORT
#ifdef CONFIG_PARPORT
struct
parport
*
port
;
struct
parport
*
port
;
port
=
parport_find_base
(
pi
->
port
);
port
=
parport_find_base
(
pi
->
port
);
if
(
!
port
)
if
(
!
port
)
return
0
;
return
0
;
pi
->
pardev
=
parport_register_device
(
port
,
pi
->
pardev
=
parport_register_device
(
port
,
pi
->
device
,
NULL
,
pi
->
device
,
NULL
,
pi_wake_up
,
NULL
,
pi_wake_up
,
NULL
,
0
,
(
void
*
)
pi
);
0
,(
void
*
)
pi
);
parport_put_port
(
port
);
parport_put_port
(
port
);
if
(
!
pi
->
pardev
)
if
(
!
pi
->
pardev
)
return
0
;
return
0
;
init_waitqueue_head
(
&
pi
->
parq
);
init_waitqueue_head
(
&
pi
->
parq
);
if
(
verbose
)
printk
(
"%s: 0x%x is %s
\n
"
,
pi
->
device
,
pi
->
port
,
if
(
verbose
)
port
->
name
);
printk
(
"%s: 0x%x is %s
\n
"
,
pi
->
device
,
pi
->
port
,
port
->
name
);
pi
->
parname
=
(
char
*
)
port
->
name
;
pi
->
parname
=
(
char
*
)
port
->
name
;
#endif
#endif
return
1
;
return
1
;
}
}
static
int
pi_probe_mode
(
PIA
*
pi
,
int
max
,
char
*
scratch
,
int
verbose
)
static
int
pi_probe_mode
(
PIA
*
pi
,
int
max
,
char
*
scratch
,
int
verbose
)
{
{
int
best
,
range
;
int
best
,
range
;
if
(
pi
->
mode
!=
-
1
)
{
if
(
pi
->
mode
!=
-
1
)
{
if
(
pi
->
mode
>=
max
)
return
0
;
if
(
pi
->
mode
>=
max
)
return
0
;
range
=
3
;
range
=
3
;
if
(
pi
->
mode
>=
pi
->
proto
->
epp_first
)
range
=
8
;
if
(
pi
->
mode
>=
pi
->
proto
->
epp_first
)
if
((
range
==
8
)
&&
(
pi
->
port
%
8
))
return
0
;
range
=
8
;
if
((
range
==
8
)
&&
(
pi
->
port
%
8
))
return
0
;
pi
->
reserved
=
range
;
pi
->
reserved
=
range
;
return
(
!
pi_test_proto
(
pi
,
scratch
,
verbose
));
return
(
!
pi_test_proto
(
pi
,
scratch
,
verbose
));
}
}
best
=
-
1
;
best
=
-
1
;
for
(
pi
->
mode
=
0
;
pi
->
mode
<
max
;
pi
->
mode
++
)
{
for
(
pi
->
mode
=
0
;
pi
->
mode
<
max
;
pi
->
mode
++
)
{
range
=
3
;
range
=
3
;
if
(
pi
->
mode
>=
pi
->
proto
->
epp_first
)
range
=
8
;
if
(
pi
->
mode
>=
pi
->
proto
->
epp_first
)
if
((
range
==
8
)
&&
(
pi
->
port
%
8
))
break
;
range
=
8
;
if
((
range
==
8
)
&&
(
pi
->
port
%
8
))
break
;
pi
->
reserved
=
range
;
pi
->
reserved
=
range
;
if
(
!
pi_test_proto
(
pi
,
scratch
,
verbose
))
best
=
pi
->
mode
;
if
(
!
pi_test_proto
(
pi
,
scratch
,
verbose
))
best
=
pi
->
mode
;
}
}
pi
->
mode
=
best
;
pi
->
mode
=
best
;
return
(
best
>
-
1
);
return
(
best
>
-
1
);
}
}
static
int
pi_probe_unit
(
PIA
*
pi
,
int
unit
,
char
*
scratch
,
int
verbose
)
static
int
pi_probe_unit
(
PIA
*
pi
,
int
unit
,
char
*
scratch
,
int
verbose
)
{
{
int
max
,
s
,
e
;
int
max
,
s
,
e
;
s
=
unit
;
e
=
s
+
1
;
s
=
unit
;
e
=
s
+
1
;
if
(
s
==
-
1
)
{
if
(
s
==
-
1
)
{
s
=
0
;
s
=
0
;
e
=
pi
->
proto
->
max_units
;
e
=
pi
->
proto
->
max_units
;
}
}
if
(
!
pi_register_parport
(
pi
,
verbose
))
if
(
!
pi_register_parport
(
pi
,
verbose
))
return
0
;
return
0
;
if
(
pi
->
proto
->
test_port
)
{
if
(
pi
->
proto
->
test_port
)
{
pi_claim
(
pi
);
pi_claim
(
pi
);
max
=
pi
->
proto
->
test_port
(
pi
);
max
=
pi
->
proto
->
test_port
(
pi
);
pi_unclaim
(
pi
);
pi_unclaim
(
pi
);
}
}
else
else
max
=
pi
->
proto
->
max_mode
;
max
=
pi
->
proto
->
max_mode
;
if
(
pi
->
proto
->
probe_unit
)
{
if
(
pi
->
proto
->
probe_unit
)
{
pi_claim
(
pi
);
pi_claim
(
pi
);
for
(
pi
->
unit
=
s
;
pi
->
unit
<
e
;
pi
->
unit
++
)
for
(
pi
->
unit
=
s
;
pi
->
unit
<
e
;
pi
->
unit
++
)
if
(
pi
->
proto
->
probe_unit
(
pi
))
{
if
(
pi
->
proto
->
probe_unit
(
pi
))
{
pi_unclaim
(
pi
);
pi_unclaim
(
pi
);
if
(
pi_probe_mode
(
pi
,
max
,
scratch
,
verbose
))
return
1
;
if
(
pi_probe_mode
(
pi
,
max
,
scratch
,
verbose
))
return
1
;
pi_unregister_parport
(
pi
);
pi_unregister_parport
(
pi
);
return
0
;
return
0
;
}
}
...
@@ -346,7 +352,7 @@ static int pi_probe_unit( PIA *pi, int unit, char * scratch, int verbose)
...
@@ -346,7 +352,7 @@ static int pi_probe_unit( PIA *pi, int unit, char * scratch, int verbose)
return
0
;
return
0
;
}
}
if
(
!
pi_probe_mode
(
pi
,
max
,
scratch
,
verbose
))
{
if
(
!
pi_probe_mode
(
pi
,
max
,
scratch
,
verbose
))
{
pi_unregister_parport
(
pi
);
pi_unregister_parport
(
pi
);
return
0
;
return
0
;
}
}
...
@@ -354,17 +360,18 @@ static int pi_probe_unit( PIA *pi, int unit, char * scratch, int verbose)
...
@@ -354,17 +360,18 @@ static int pi_probe_unit( PIA *pi, int unit, char * scratch, int verbose)
}
}
int
pi_init
(
PIA
*
pi
,
int
autoprobe
,
int
port
,
int
mode
,
int
pi_init
(
PIA
*
pi
,
int
autoprobe
,
int
port
,
int
mode
,
int
unit
,
int
protocol
,
int
delay
,
char
*
scratch
,
int
unit
,
int
protocol
,
int
delay
,
char
*
scratch
,
int
devtype
,
int
verbose
,
char
*
device
)
int
devtype
,
int
verbose
,
char
*
device
)
{
{
int
p
,
k
,
s
,
e
;
int
p
,
k
,
s
,
e
;
int
lpts
[
7
]
=
{
0x3bc
,
0x378
,
0x278
,
0x268
,
0x27c
,
0x26c
,
0
};
int
lpts
[
7
]
=
{
0x3bc
,
0x378
,
0x278
,
0x268
,
0x27c
,
0x26c
,
0
};
s
=
protocol
;
e
=
s
+
1
;
s
=
protocol
;
e
=
s
+
1
;
if
(
!
protocols
[
0
])
if
(
!
protocols
[
0
])
request_module
(
"paride_protocol"
);
request_module
(
"paride_protocol"
);
if
(
autoprobe
)
{
if
(
autoprobe
)
{
s
=
0
;
s
=
0
;
...
@@ -372,17 +379,19 @@ int pi_init(PIA *pi, int autoprobe, int port, int mode,
...
@@ -372,17 +379,19 @@ int pi_init(PIA *pi, int autoprobe, int port, int mode,
}
else
if
((
s
<
0
)
||
(
s
>=
MAX_PROTOS
)
||
(
port
<=
0
)
||
}
else
if
((
s
<
0
)
||
(
s
>=
MAX_PROTOS
)
||
(
port
<=
0
)
||
(
!
protocols
[
s
])
||
(
unit
<
0
)
||
(
!
protocols
[
s
])
||
(
unit
<
0
)
||
(
unit
>=
protocols
[
s
]
->
max_units
))
{
(
unit
>=
protocols
[
s
]
->
max_units
))
{
printk
(
"%s: Invalid parameters
\n
"
,
device
);
printk
(
"%s: Invalid parameters
\n
"
,
device
);
return
0
;
return
0
;
}
}
for
(
p
=
s
;
p
<
e
;
p
++
)
{
for
(
p
=
s
;
p
<
e
;
p
++
)
{
if
(
protocols
[
p
])
{
if
(
protocols
[
p
])
{
pi
->
proto
=
protocols
[
p
];
pi
->
proto
=
protocols
[
p
];
pi
->
private
=
0
;
pi
->
private
=
0
;
pi
->
proto
->
init_proto
(
pi
);
pi
->
proto
->
init_proto
(
pi
);
if
(
delay
==
-
1
)
pi
->
delay
=
pi
->
proto
->
default_delay
;
if
(
delay
==
-
1
)
else
pi
->
delay
=
delay
;
pi
->
delay
=
pi
->
proto
->
default_delay
;
else
pi
->
delay
=
delay
;
pi
->
devtype
=
devtype
;
pi
->
devtype
=
devtype
;
pi
->
device
=
device
;
pi
->
device
=
device
;
...
@@ -395,37 +404,42 @@ int pi_init(PIA *pi, int autoprobe, int port, int mode,
...
@@ -395,37 +404,42 @@ int pi_init(PIA *pi, int autoprobe, int port, int mode,
pi
->
mode
=
mode
;
pi
->
mode
=
mode
;
if
(
port
!=
-
1
)
{
if
(
port
!=
-
1
)
{
pi
->
port
=
port
;
pi
->
port
=
port
;
if
(
pi_probe_unit
(
pi
,
unit
,
scratch
,
verbose
))
break
;
if
(
pi_probe_unit
(
pi
,
unit
,
scratch
,
verbose
))
break
;
pi
->
port
=
0
;
pi
->
port
=
0
;
}
else
{
}
else
{
k
=
0
;
k
=
0
;
while
((
pi
->
port
=
lpts
[
k
++
]))
while
((
pi
->
port
=
lpts
[
k
++
]))
if
(
pi_probe_unit
(
pi
,
unit
,
scratch
,
verbose
))
break
;
if
(
pi_probe_unit
if
(
pi
->
port
)
break
;
(
pi
,
unit
,
scratch
,
verbose
))
break
;
if
(
pi
->
port
)
break
;
}
}
pi
->
proto
->
release_proto
(
pi
);
pi
->
proto
->
release_proto
(
pi
);
}
}
}
}
if
(
!
pi
->
port
)
{
if
(
!
pi
->
port
)
{
if
(
autoprobe
)
printk
(
"%s: Autoprobe failed
\n
"
,
device
);
if
(
autoprobe
)
else
printk
(
"%s: Adapter not found
\n
"
,
device
);
printk
(
"%s: Autoprobe failed
\n
"
,
device
);
else
printk
(
"%s: Adapter not found
\n
"
,
device
);
return
0
;
return
0
;
}
}
#ifndef CONFIG_PARPORT
#ifndef CONFIG_PARPORT
if
(
!
request_region
(
pi
->
port
,
pi
->
reserved
,
pi
->
device
))
if
(
!
request_region
(
pi
->
port
,
pi
->
reserved
,
pi
->
device
))
{
{
printk
(
KERN_WARNING
"paride: Unable to request region 0x%x
\n
"
,
printk
(
KERN_WARNING
"paride: Unable to request region 0x%x
\n
"
,
pi
->
port
);
pi
->
port
);
return
0
;
return
0
;
}
}
#endif
/* !CONFIG_PARPORT */
#endif
/* !CONFIG_PARPORT */
if
(
pi
->
parname
)
if
(
pi
->
parname
)
printk
(
"%s: Sharing %s at 0x%x
\n
"
,
pi
->
device
,
printk
(
"%s: Sharing %s at 0x%x
\n
"
,
pi
->
device
,
pi
->
parname
,
pi
->
port
);
pi
->
parname
,
pi
->
port
);
pi
->
proto
->
log_adapter
(
pi
,
scratch
,
verbose
);
pi
->
proto
->
log_adapter
(
pi
,
scratch
,
verbose
);
return
1
;
return
1
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment