Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci-2.6.23
Commits
0a808a31
Commit
0a808a31
authored
Aug 02, 2007
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC32]: Fix modular build of floppy driver.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
3daadf33
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
75 additions
and
44 deletions
+75
-44
arch/sparc/kernel/entry.S
arch/sparc/kernel/entry.S
+3
-4
arch/sparc/kernel/irq.c
arch/sparc/kernel/irq.c
+59
-25
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sparc_ksyms.c
+0
-1
include/asm-sparc/floppy.h
include/asm-sparc/floppy.h
+11
-9
include/asm-sparc/irq.h
include/asm-sparc/irq.h
+2
-5
No files found.
arch/sparc/kernel/entry.S
View file @
0a808a31
/*
$Id
:
entry
.
S
,
v
1
.170
2001
/
11
/
13
00
:
57
:
05
davem
Exp
$
*
arch
/
sparc
/
kernel
/
entry
.
S
:
Sparc
trap
low
-
level
entry
points
.
/*
arch
/
sparc
/
kernel
/
entry.S
:
Sparc
trap
low
-
level
entry
points
.
*
*
Copyright
(
C
)
1995
David
S
.
Miller
(
davem
@
caip
.
rutgers
.
edu
)
*
Copyright
(
C
)
1995
,
2007
David
S
.
Miller
(
davem
@
davemloft
.
net
)
*
Copyright
(
C
)
1996
Eddie
C
.
Dost
(
ecd
@
skynet
.
be
)
*
Copyright
(
C
)
1996
Miguel
de
Icaza
(
miguel
@
nuclecu
.
unam
.
mx
)
*
Copyright
(
C
)
1996
-
1999
Jakub
Jelinek
(
jj
@
sunsite
.
mff
.
cuni
.
cz
)
...
...
@@ -129,7 +128,7 @@ trap_low:
RESTORE_ALL
#endif
#if
def CONFIG_BLK_DEV_FD
#if
defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE)
.
text
.
align
4
.
globl
floppy_hardint
...
...
arch/sparc/kernel/irq.c
View file @
0a808a31
...
...
@@ -351,34 +351,14 @@ void handler_irq(int irq, struct pt_regs * regs)
set_irq_regs
(
old_regs
);
}
#ifdef CONFIG_BLK_DEV_FD
extern
void
floppy_interrupt
(
int
irq
,
void
*
dev_id
);
void
sparc_floppy_irq
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
struct
pt_regs
*
old_regs
;
int
cpu
=
smp_processor_id
();
old_regs
=
set_irq_regs
(
regs
);
disable_pil_irq
(
irq
);
irq_enter
();
kstat_cpu
(
cpu
).
irqs
[
irq
]
++
;
floppy_interrupt
(
irq
,
dev_id
);
irq_exit
();
enable_pil_irq
(
irq
);
set_irq_regs
(
old_regs
);
// XXX Eek, it's totally changed with preempt_count() and such
// if (softirq_pending(cpu))
// do_softirq();
}
#endif
#if defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE)
/* Fast IRQs on the Sparc can only have one routine attached to them,
* thus no sharing possible.
*/
int
request_fast_irq
(
unsigned
int
irq
,
irq_handler_t
handler
,
unsigned
long
irqflags
,
const
char
*
devname
)
static
int
request_fast_irq
(
unsigned
int
irq
,
void
(
*
handler
)(
void
)
,
unsigned
long
irqflags
,
const
char
*
devname
)
{
struct
irqaction
*
action
;
unsigned
long
flags
;
...
...
@@ -457,7 +437,6 @@ int request_fast_irq(unsigned int irq,
*/
flush_cache_all
();
action
->
handler
=
handler
;
action
->
flags
=
irqflags
;
cpus_clear
(
action
->
mask
);
action
->
name
=
devname
;
...
...
@@ -475,6 +454,61 @@ out:
return
ret
;
}
/* These variables are used to access state from the assembler
* interrupt handler, floppy_hardint, so we cannot put these in
* the floppy driver image because that would not work in the
* modular case.
*/
volatile
unsigned
char
*
fdc_status
;
EXPORT_SYMBOL
(
fdc_status
);
char
*
pdma_vaddr
;
EXPORT_SYMBOL
(
pdma_vaddr
);
unsigned
long
pdma_size
;
EXPORT_SYMBOL
(
pdma_size
);
volatile
int
doing_pdma
;
EXPORT_SYMBOL
(
doing_pdma
);
char
*
pdma_base
;
EXPORT_SYMBOL
(
pdma_base
);
unsigned
long
pdma_areasize
;
EXPORT_SYMBOL
(
pdma_areasize
);
extern
void
floppy_hardint
(
void
);
static
irqreturn_t
(
*
floppy_irq_handler
)(
int
irq
,
void
*
dev_id
);
void
sparc_floppy_irq
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
struct
pt_regs
*
old_regs
;
int
cpu
=
smp_processor_id
();
old_regs
=
set_irq_regs
(
regs
);
disable_pil_irq
(
irq
);
irq_enter
();
kstat_cpu
(
cpu
).
irqs
[
irq
]
++
;
floppy_irq_handler
(
irq
,
dev_id
);
irq_exit
();
enable_pil_irq
(
irq
);
set_irq_regs
(
old_regs
);
// XXX Eek, it's totally changed with preempt_count() and such
// if (softirq_pending(cpu))
// do_softirq();
}
int
sparc_floppy_request_irq
(
int
irq
,
unsigned
long
flags
,
irqreturn_t
(
*
irq_handler
)(
int
irq
,
void
*
))
{
floppy_irq_handler
=
irq_handler
;
return
request_fast_irq
(
irq
,
floppy_hardint
,
flags
,
"floppy"
);
}
EXPORT_SYMBOL
(
sparc_floppy_request_irq
);
#endif
int
request_irq
(
unsigned
int
irq
,
irq_handler_t
handler
,
unsigned
long
irqflags
,
const
char
*
devname
,
void
*
dev_id
)
...
...
arch/sparc/kernel/sparc_ksyms.c
View file @
0a808a31
...
...
@@ -143,7 +143,6 @@ EXPORT_SYMBOL(mstk48t02_regs);
EXPORT_SYMBOL
(
set_auxio
);
EXPORT_SYMBOL
(
get_auxio
);
#endif
EXPORT_SYMBOL
(
request_fast_irq
);
EXPORT_SYMBOL
(
io_remap_pfn_range
);
/* P3: iounit_xxx may be needed, sun4d users */
/* EXPORT_SYMBOL(iounit_map_dma_init); */
...
...
include/asm-sparc/floppy.h
View file @
0a808a31
...
...
@@ -48,7 +48,7 @@ struct sun_flpy_controller {
/* You'll only ever find one controller on a SparcStation anyways. */
static
struct
sun_flpy_controller
*
sun_fdc
=
NULL
;
volatile
unsigned
char
*
fdc_status
;
extern
volatile
unsigned
char
*
fdc_status
;
struct
sun_floppy_ops
{
unsigned
char
(
*
fd_inb
)(
int
port
);
...
...
@@ -225,13 +225,13 @@ static void sun_82077_fd_outb(unsigned char value, int port)
* underruns. If non-zero, doing_pdma encodes the direction of
* the transfer for debugging. 1=read 2=write
*/
char
*
pdma_vaddr
;
unsigned
long
pdma_size
;
volatile
int
doing_pdma
=
0
;
extern
char
*
pdma_vaddr
;
extern
unsigned
long
pdma_size
;
extern
volatile
int
doing_pdma
;
/* This is software state */
char
*
pdma_base
=
NULL
;
unsigned
long
pdma_areasize
;
extern
char
*
pdma_base
;
extern
unsigned
long
pdma_areasize
;
/* Common routines to all controller types on the Sparc. */
static
__inline__
void
virtual_dma_init
(
void
)
...
...
@@ -281,7 +281,8 @@ static __inline__ void sun_fd_enable_dma(void)
}
/* Our low-level entry point in arch/sparc/kernel/entry.S */
irqreturn_t
floppy_hardint
(
int
irq
,
void
*
unused
);
extern
int
sparc_floppy_request_irq
(
int
irq
,
unsigned
long
flags
,
irqreturn_t
(
*
irq_handler
)(
int
irq
,
void
*
));
static
int
sun_fd_request_irq
(
void
)
{
...
...
@@ -290,8 +291,9 @@ static int sun_fd_request_irq(void)
if
(
!
once
)
{
once
=
1
;
error
=
request_fast_irq
(
FLOPPY_IRQ
,
floppy_hardint
,
IRQF_DISABLED
,
"floppy"
);
error
=
sparc_floppy_request_irq
(
FLOPPY_IRQ
,
IRQF_DISABLED
,
floppy_interrupt
);
return
((
error
==
0
)
?
0
:
-
1
);
}
else
return
0
;
}
...
...
include/asm-sparc/irq.h
View file @
0a808a31
/* $Id: irq.h,v 1.32 2000/08/26 02:42:28 anton Exp $
* irq.h: IRQ registers on the Sparc.
/* irq.h: IRQ registers on the Sparc.
*
* Copyright (C) 1995
David S. Miller (davem@caip.rutgers.edu
)
* Copyright (C) 1995
, 2007 David S. Miller (davem@davemloft.net
)
*/
#ifndef _SPARC_IRQ_H
...
...
@@ -13,6 +12,4 @@
#define irq_canonicalize(irq) (irq)
extern
int
request_fast_irq
(
unsigned
int
irq
,
irq_handler_t
handler
,
unsigned
long
flags
,
__const__
char
*
devname
);
#endif
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