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
73229285
Commit
73229285
authored
Aug 05, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.5-rmk
into home.osdl.org:/home/torvalds/v2.5/linux
parents
099e99f0
39e53789
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
179 additions
and
51 deletions
+179
-51
arch/arm/common/sa1111.c
arch/arm/common/sa1111.c
+69
-24
arch/arm/mach-sa1100/hackkit.c
arch/arm/mach-sa1100/hackkit.c
+0
-1
arch/arm/mach-sa1100/ssp.c
arch/arm/mach-sa1100/ssp.c
+3
-1
arch/arm/tools/mach-types
arch/arm/tools/mach-types
+15
-3
drivers/scsi/arm/arxescsi.c
drivers/scsi/arm/arxescsi.c
+2
-2
drivers/scsi/arm/eesox.c
drivers/scsi/arm/eesox.c
+2
-1
drivers/scsi/arm/fas216.c
drivers/scsi/arm/fas216.c
+72
-2
drivers/scsi/arm/fas216.h
drivers/scsi/arm/fas216.h
+9
-0
include/asm-arm/hardware.h
include/asm-arm/hardware.h
+1
-1
include/asm-arm/hardware/sa1111.h
include/asm-arm/hardware/sa1111.h
+0
-16
include/asm-arm/local.h
include/asm-arm/local.h
+1
-0
include/asm-arm/mach/irq.h
include/asm-arm/mach/irq.h
+5
-0
No files found.
arch/arm/common/sa1111.c
View file @
73229285
...
@@ -168,14 +168,14 @@ sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
...
@@ -168,14 +168,14 @@ sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
{
{
unsigned
int
stat0
,
stat1
,
i
;
unsigned
int
stat0
,
stat1
,
i
;
stat0
=
INTSTATCLR0
;
stat0
=
sa1111_readl
(
desc
->
data
+
SA1111_INTSTATCLR0
)
;
stat1
=
INTSTATCLR1
;
stat1
=
sa1111_readl
(
desc
->
data
+
SA1111_INTSTATCLR1
)
;
INTSTATCLR0
=
stat0
;
sa1111_writel
(
stat0
,
desc
->
data
+
SA1111_INTSTATCLR0
)
;
desc
->
chip
->
ack
(
irq
);
desc
->
chip
->
ack
(
irq
);
INTSTATCLR1
=
stat1
;
sa1111_writel
(
stat1
,
desc
->
data
+
SA1111_INTSTATCLR1
)
;
if
(
stat0
==
0
&&
stat1
==
0
)
{
if
(
stat0
==
0
&&
stat1
==
0
)
{
do_bad_IRQ
(
irq
,
desc
,
regs
);
do_bad_IRQ
(
irq
,
desc
,
regs
);
...
@@ -203,12 +203,22 @@ static void sa1111_ack_irq(unsigned int irq)
...
@@ -203,12 +203,22 @@ static void sa1111_ack_irq(unsigned int irq)
static
void
sa1111_mask_lowirq
(
unsigned
int
irq
)
static
void
sa1111_mask_lowirq
(
unsigned
int
irq
)
{
{
INTEN0
&=
~
SA1111_IRQMASK_LO
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
ie0
;
ie0
=
sa1111_readl
(
mapbase
+
SA1111_INTEN0
);
ie0
&=
~
SA1111_IRQMASK_LO
(
irq
);
writel
(
ie0
,
mapbase
+
SA1111_INTEN0
);
}
}
static
void
sa1111_unmask_lowirq
(
unsigned
int
irq
)
static
void
sa1111_unmask_lowirq
(
unsigned
int
irq
)
{
{
INTEN0
|=
SA1111_IRQMASK_LO
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
ie0
;
ie0
=
sa1111_readl
(
mapbase
+
SA1111_INTEN0
);
ie0
|=
SA1111_IRQMASK_LO
(
irq
);
sa1111_writel
(
ie0
,
mapbase
+
SA1111_INTEN0
);
}
}
/*
/*
...
@@ -221,12 +231,15 @@ static void sa1111_unmask_lowirq(unsigned int irq)
...
@@ -221,12 +231,15 @@ static void sa1111_unmask_lowirq(unsigned int irq)
static
int
sa1111_retrigger_lowirq
(
unsigned
int
irq
)
static
int
sa1111_retrigger_lowirq
(
unsigned
int
irq
)
{
{
unsigned
int
mask
=
SA1111_IRQMASK_LO
(
irq
);
unsigned
int
mask
=
SA1111_IRQMASK_LO
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
ip0
;
int
i
;
int
i
;
ip0
=
sa1111_readl
(
mapbase
+
SA1111_INTPOL0
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
INTPOL0
^=
mask
;
sa1111_writel
(
ip0
^
mask
,
mapbase
+
SA1111_INTPOL0
)
;
INTPOL0
^=
mask
;
sa1111_writel
(
ip0
,
mapbase
+
SA1111_INTPOL0
)
;
if
(
INTSTATCLR1
&
mask
)
if
(
sa1111_readl
(
mapbase
+
SA1111_INTSTATCLR1
)
&
mask
)
break
;
break
;
}
}
...
@@ -239,6 +252,8 @@ static int sa1111_retrigger_lowirq(unsigned int irq)
...
@@ -239,6 +252,8 @@ static int sa1111_retrigger_lowirq(unsigned int irq)
static
int
sa1111_type_lowirq
(
unsigned
int
irq
,
unsigned
int
flags
)
static
int
sa1111_type_lowirq
(
unsigned
int
irq
,
unsigned
int
flags
)
{
{
unsigned
int
mask
=
SA1111_IRQMASK_LO
(
irq
);
unsigned
int
mask
=
SA1111_IRQMASK_LO
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
ip0
;
if
(
flags
==
IRQT_PROBE
)
if
(
flags
==
IRQT_PROBE
)
return
0
;
return
0
;
...
@@ -246,11 +261,13 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags)
...
@@ -246,11 +261,13 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags)
if
((
!
(
flags
&
__IRQT_RISEDGE
)
^
!
(
flags
&
__IRQT_FALEDGE
))
==
0
)
if
((
!
(
flags
&
__IRQT_RISEDGE
)
^
!
(
flags
&
__IRQT_FALEDGE
))
==
0
)
return
-
EINVAL
;
return
-
EINVAL
;
ip0
=
sa1111_readl
(
mapbase
+
SA1111_INTPOL0
);
if
(
flags
&
__IRQT_RISEDGE
)
if
(
flags
&
__IRQT_RISEDGE
)
INTPOL
0
&=
~
mask
;
ip
0
&=
~
mask
;
else
else
INTPOL0
|=
mask
;
ip0
|=
mask
;
WAKE_POL0
=
INTPOL0
;
sa1111_writel
(
ip0
,
mapbase
+
SA1111_INTPOL0
);
sa1111_writel
(
ip0
,
mapbase
+
SA1111_WAKEPOL0
);
return
0
;
return
0
;
}
}
...
@@ -258,11 +275,15 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags)
...
@@ -258,11 +275,15 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags)
static
int
sa1111_wake_lowirq
(
unsigned
int
irq
,
unsigned
int
on
)
static
int
sa1111_wake_lowirq
(
unsigned
int
irq
,
unsigned
int
on
)
{
{
unsigned
int
mask
=
SA1111_IRQMASK_LO
(
irq
);
unsigned
int
mask
=
SA1111_IRQMASK_LO
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
we0
;
we0
=
sa1111_readl
(
mapbase
+
SA1111_WAKEEN0
);
if
(
on
)
if
(
on
)
WAKE_EN
0
|=
mask
;
we
0
|=
mask
;
else
else
WAKE_EN0
&=
~
mask
;
we0
&=
~
mask
;
sa1111_writel
(
we0
,
mapbase
+
SA1111_WAKEEN0
);
return
0
;
return
0
;
}
}
...
@@ -278,12 +299,22 @@ static struct irqchip sa1111_low_chip = {
...
@@ -278,12 +299,22 @@ static struct irqchip sa1111_low_chip = {
static
void
sa1111_mask_highirq
(
unsigned
int
irq
)
static
void
sa1111_mask_highirq
(
unsigned
int
irq
)
{
{
INTEN1
&=
~
SA1111_IRQMASK_HI
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
ie1
;
ie1
=
sa1111_readl
(
mapbase
+
SA1111_INTEN1
);
ie1
&=
~
SA1111_IRQMASK_HI
(
irq
);
sa1111_writel
(
ie1
,
mapbase
+
SA1111_INTEN1
);
}
}
static
void
sa1111_unmask_highirq
(
unsigned
int
irq
)
static
void
sa1111_unmask_highirq
(
unsigned
int
irq
)
{
{
INTEN1
|=
SA1111_IRQMASK_HI
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
ie1
;
ie1
=
sa1111_readl
(
mapbase
+
SA1111_INTEN1
);
ie1
|=
SA1111_IRQMASK_HI
(
irq
);
sa1111_writel
(
ie1
,
mapbase
+
SA1111_INTEN1
);
}
}
/*
/*
...
@@ -296,12 +327,15 @@ static void sa1111_unmask_highirq(unsigned int irq)
...
@@ -296,12 +327,15 @@ static void sa1111_unmask_highirq(unsigned int irq)
static
int
sa1111_retrigger_highirq
(
unsigned
int
irq
)
static
int
sa1111_retrigger_highirq
(
unsigned
int
irq
)
{
{
unsigned
int
mask
=
SA1111_IRQMASK_HI
(
irq
);
unsigned
int
mask
=
SA1111_IRQMASK_HI
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
ip1
;
int
i
;
int
i
;
ip1
=
sa1111_readl
(
mapbase
+
SA1111_INTPOL1
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
INTPOL1
^=
mask
;
sa1111_writel
(
ip1
^
mask
,
mapbase
+
SA1111_INTPOL1
)
;
INTPOL1
^=
mask
;
sa1111_writel
(
ip1
,
mapbase
+
SA1111_INTPOL1
)
;
if
(
INTSTATCLR1
&
mask
)
if
(
sa1111_readl
(
mapbase
+
SA1111_INTSTATCLR1
)
&
mask
)
break
;
break
;
}
}
...
@@ -314,6 +348,8 @@ static int sa1111_retrigger_highirq(unsigned int irq)
...
@@ -314,6 +348,8 @@ static int sa1111_retrigger_highirq(unsigned int irq)
static
int
sa1111_type_highirq
(
unsigned
int
irq
,
unsigned
int
flags
)
static
int
sa1111_type_highirq
(
unsigned
int
irq
,
unsigned
int
flags
)
{
{
unsigned
int
mask
=
SA1111_IRQMASK_HI
(
irq
);
unsigned
int
mask
=
SA1111_IRQMASK_HI
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
ip1
;
if
(
flags
==
IRQT_PROBE
)
if
(
flags
==
IRQT_PROBE
)
return
0
;
return
0
;
...
@@ -321,11 +357,13 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags)
...
@@ -321,11 +357,13 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags)
if
((
!
(
flags
&
__IRQT_RISEDGE
)
^
!
(
flags
&
__IRQT_FALEDGE
))
==
0
)
if
((
!
(
flags
&
__IRQT_RISEDGE
)
^
!
(
flags
&
__IRQT_FALEDGE
))
==
0
)
return
-
EINVAL
;
return
-
EINVAL
;
ip1
=
sa1111_readl
(
mapbase
+
SA1111_INTPOL1
);
if
(
flags
&
__IRQT_RISEDGE
)
if
(
flags
&
__IRQT_RISEDGE
)
INTPOL
1
&=
~
mask
;
ip
1
&=
~
mask
;
else
else
INTPOL1
|=
mask
;
ip1
|=
mask
;
WAKE_POL1
=
INTPOL1
;
sa1111_writel
(
ip1
,
mapbase
+
SA1111_INTPOL1
);
sa1111_writel
(
ip1
,
mapbase
+
SA1111_WAKEPOL1
);
return
0
;
return
0
;
}
}
...
@@ -333,11 +371,15 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags)
...
@@ -333,11 +371,15 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags)
static
int
sa1111_wake_highirq
(
unsigned
int
irq
,
unsigned
int
on
)
static
int
sa1111_wake_highirq
(
unsigned
int
irq
,
unsigned
int
on
)
{
{
unsigned
int
mask
=
SA1111_IRQMASK_HI
(
irq
);
unsigned
int
mask
=
SA1111_IRQMASK_HI
(
irq
);
void
*
mapbase
=
get_irq_chipdata
(
irq
);
unsigned
long
we1
;
we1
=
sa1111_readl
(
mapbase
+
SA1111_WAKEEN1
);
if
(
on
)
if
(
on
)
WAKE_EN
1
|=
mask
;
we
1
|=
mask
;
else
else
WAKE_EN1
&=
~
mask
;
we1
&=
~
mask
;
sa1111_writel
(
we1
,
mapbase
+
SA1111_WAKEEN1
);
return
0
;
return
0
;
}
}
...
@@ -381,12 +423,14 @@ static void __init sa1111_init_irq(struct sa1111_dev *sadev)
...
@@ -381,12 +423,14 @@ static void __init sa1111_init_irq(struct sa1111_dev *sadev)
for
(
irq
=
IRQ_GPAIN0
;
irq
<=
SSPROR
;
irq
++
)
{
for
(
irq
=
IRQ_GPAIN0
;
irq
<=
SSPROR
;
irq
++
)
{
set_irq_chip
(
irq
,
&
sa1111_low_chip
);
set_irq_chip
(
irq
,
&
sa1111_low_chip
);
set_irq_chipdata
(
irq
,
sadev
->
mapbase
);
set_irq_handler
(
irq
,
do_edge_IRQ
);
set_irq_handler
(
irq
,
do_edge_IRQ
);
set_irq_flags
(
irq
,
IRQF_VALID
|
IRQF_PROBE
);
set_irq_flags
(
irq
,
IRQF_VALID
|
IRQF_PROBE
);
}
}
for
(
irq
=
AUDXMTDMADONEA
;
irq
<=
IRQ_S1_BVD1_STSCHG
;
irq
++
)
{
for
(
irq
=
AUDXMTDMADONEA
;
irq
<=
IRQ_S1_BVD1_STSCHG
;
irq
++
)
{
set_irq_chip
(
irq
,
&
sa1111_high_chip
);
set_irq_chip
(
irq
,
&
sa1111_high_chip
);
set_irq_chipdata
(
irq
,
sadev
->
mapbase
);
set_irq_handler
(
irq
,
do_edge_IRQ
);
set_irq_handler
(
irq
,
do_edge_IRQ
);
set_irq_flags
(
irq
,
IRQF_VALID
|
IRQF_PROBE
);
set_irq_flags
(
irq
,
IRQF_VALID
|
IRQF_PROBE
);
}
}
...
@@ -395,6 +439,7 @@ static void __init sa1111_init_irq(struct sa1111_dev *sadev)
...
@@ -395,6 +439,7 @@ static void __init sa1111_init_irq(struct sa1111_dev *sadev)
* Register SA1111 interrupt
* Register SA1111 interrupt
*/
*/
set_irq_type
(
sadev
->
irq
[
0
],
IRQT_RISING
);
set_irq_type
(
sadev
->
irq
[
0
],
IRQT_RISING
);
set_irq_data
(
sadev
->
irq
[
0
],
sadev
->
mapbase
);
set_irq_chained_handler
(
sadev
->
irq
[
0
],
sa1111_irq_handler
);
set_irq_chained_handler
(
sadev
->
irq
[
0
],
sa1111_irq_handler
);
}
}
...
...
arch/arm/mach-sa1100/hackkit.c
View file @
73229285
...
@@ -41,7 +41,6 @@
...
@@ -41,7 +41,6 @@
*/
*/
/* init funcs */
/* init funcs */
static
void
__init
get_hackkit_scr
(
void
);
static
int
__init
hackkit_init
(
void
);
static
int
__init
hackkit_init
(
void
);
static
void
__init
hackkit_init_irq
(
void
);
static
void
__init
hackkit_init_irq
(
void
);
static
void
__init
hackkit_map_io
(
void
);
static
void
__init
hackkit_map_io
(
void
);
...
...
arch/arm/mach-sa1100/ssp.c
View file @
73229285
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/hardware/ssp.h>
#include <asm/hardware/ssp.h>
static
void
ssp_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
static
irqreturn_t
ssp_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
{
unsigned
int
status
=
Ser4SSSR
;
unsigned
int
status
=
Ser4SSSR
;
...
@@ -32,6 +32,8 @@ static void ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -32,6 +32,8 @@ static void ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
}
}
Ser4SSSR
=
SSSR_ROR
;
Ser4SSSR
=
SSSR_ROR
;
return
status
?
IRQ_HANDLED
:
IRQ_NONE
;
}
}
/**
/**
...
...
arch/arm/tools/mach-types
View file @
73229285
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
# To add an entry into this database, please see Documentation/arm/README,
# To add an entry into this database, please see Documentation/arm/README,
# or contact rmk@arm.linux.org.uk
# or contact rmk@arm.linux.org.uk
#
#
# Last update:
Thu Jun 19 18:42:39
2003
# Last update:
Sun Aug 3 16:26:10
2003
#
#
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
#
#
...
@@ -228,7 +228,7 @@ csb226 ARCH_CSB226 CSB226 216
...
@@ -228,7 +228,7 @@ csb226 ARCH_CSB226 CSB226 216
arnold SA1100_ARNOLD ARNOLD 217
arnold SA1100_ARNOLD ARNOLD 217
psiboard SA1100_PSIBOARD PSIBOARD 218
psiboard SA1100_PSIBOARD PSIBOARD 218
jz8028 ARCH_JZ8028 JZ8028 219
jz8028 ARCH_JZ8028 JZ8028 219
h5400 ARCH_
IPAQ3 IPAQ3
220
h5400 ARCH_
H5400 H5400
220
forte SA1100_FORTE FORTE 221
forte SA1100_FORTE FORTE 221
acam SA1100_ACAM ACAM 222
acam SA1100_ACAM ACAM 222
abox SA1100_ABOX ABOX 223
abox SA1100_ABOX ABOX 223
...
@@ -300,7 +300,7 @@ wep_ep250 ARCH_WEP_EP250 WEP_EP250 288
...
@@ -300,7 +300,7 @@ wep_ep250 ARCH_WEP_EP250 WEP_EP250 288
inhandelf3 ARCH_INHANDELF3 INHANDELF3 289
inhandelf3 ARCH_INHANDELF3 INHANDELF3 289
adi_coyote ARCH_ADI_COYOTE ADI_COYOTE 290
adi_coyote ARCH_ADI_COYOTE ADI_COYOTE 290
iyonix ARCH_IYONIX IYONIX 291
iyonix ARCH_IYONIX IYONIX 291
damicam
_sa1110
ARCH_DAMICAM_SA1110 DAMICAM_SA1110 292
damicam
1
ARCH_DAMICAM_SA1110 DAMICAM_SA1110 292
meg03 ARCH_MEG03 MEG03 293
meg03 ARCH_MEG03 MEG03 293
pxa_whitechapel ARCH_PXA_WHITECHAPEL PXA_WHITECHAPEL 294
pxa_whitechapel ARCH_PXA_WHITECHAPEL PXA_WHITECHAPEL 294
nwsc ARCH_NWSC NWSC 295
nwsc ARCH_NWSC NWSC 295
...
@@ -355,3 +355,15 @@ niop ARCH_NIOP NIOP 343
...
@@ -355,3 +355,15 @@ niop ARCH_NIOP NIOP 343
dm310 ARCH_DM310 DM310 344
dm310 ARCH_DM310 DM310 344
seedpxa_c2 ARCH_SEEDPXA_C2 SEEDPXA_C2 345
seedpxa_c2 ARCH_SEEDPXA_C2 SEEDPXA_C2 345
ixp4xx_mguardpci ARCH_IXP4XX_MGUARD_PCI IXP4XX_MGUARD_PCI 346
ixp4xx_mguardpci ARCH_IXP4XX_MGUARD_PCI IXP4XX_MGUARD_PCI 346
h1940 ARCH_H1940 H1940 347
scorpio ARCH_SCORPIO SCORPIO 348
viva ARCH_VIVA VIVA 349
pxa_xcard ARCH_PXA_XCARD PXA_XCARD 350
csb335 ARCH_CSB335 CSB335 351
ixrd425 ARCH_IXRD425 IXRD425 352
iq80315 ARCH_IQ80315 IQ80315 353
nmp7312 ARCH_NMP7312 NMP7312 354
cx861xx ARCH_CX861XX CX861XX 355
ixp2000 ARCH_IXP2000 IXP2000 356
xda SA1100_XDA XDA 357
csir_ims ARCH_CSIR_IMS CSIR_IMS 358
drivers/scsi/arm/arxescsi.c
View file @
73229285
...
@@ -237,7 +237,7 @@ static const char *arxescsi_info(struct Scsi_Host *host)
...
@@ -237,7 +237,7 @@ static const char *arxescsi_info(struct Scsi_Host *host)
*/
*/
static
int
static
int
arxescsi_proc_info
(
struct
Scsi_Host
*
host
,
char
*
buffer
,
char
**
start
,
off_t
offset
,
int
length
,
arxescsi_proc_info
(
struct
Scsi_Host
*
host
,
char
*
buffer
,
char
**
start
,
off_t
offset
,
int
length
,
int
host_no
,
int
inout
)
int
inout
)
{
{
struct
arxescsi_info
*
info
;
struct
arxescsi_info
*
info
;
char
*
p
=
buffer
;
char
*
p
=
buffer
;
...
@@ -264,7 +264,7 @@ static Scsi_Host_Template arxescsi_template = {
...
@@ -264,7 +264,7 @@ static Scsi_Host_Template arxescsi_template = {
.
proc_info
=
arxescsi_proc_info
,
.
proc_info
=
arxescsi_proc_info
,
.
name
=
"ARXE SCSI card"
,
.
name
=
"ARXE SCSI card"
,
.
info
=
arxescsi_info
,
.
info
=
arxescsi_info
,
.
queuecommand
=
fas216_queue_command
,
.
queuecommand
=
fas216_
no
queue_command
,
.
eh_host_reset_handler
=
fas216_eh_host_reset
,
.
eh_host_reset_handler
=
fas216_eh_host_reset
,
.
eh_bus_reset_handler
=
fas216_eh_bus_reset
,
.
eh_bus_reset_handler
=
fas216_eh_bus_reset
,
.
eh_device_reset_handler
=
fas216_eh_device_reset
,
.
eh_device_reset_handler
=
fas216_eh_device_reset
,
...
...
drivers/scsi/arm/eesox.c
View file @
73229285
...
@@ -444,10 +444,11 @@ int eesoxscsi_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_
...
@@ -444,10 +444,11 @@ int eesoxscsi_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_
p
+=
sprintf
(
p
,
"Term : o%s
\n
"
,
p
+=
sprintf
(
p
,
"Term : o%s
\n
"
,
info
->
control
&
EESOX_TERM_ENABLE
?
"n"
:
"ff"
);
info
->
control
&
EESOX_TERM_ENABLE
?
"n"
:
"ff"
);
pos
+=
fas216_print_stats
(
&
info
->
info
,
buffer
+
pos
);
p
+=
fas216_print_stats
(
&
info
->
info
,
p
);
p
+=
fas216_print_stats
(
&
info
->
info
,
p
);
p
+=
fas216_print_devices
(
&
info
->
info
,
p
);
p
+=
fas216_print_devices
(
&
info
->
info
,
p
);
*
start
=
buffer
+
offset
;
pos
=
p
-
buffer
-
offset
;
if
(
pos
>
length
)
if
(
pos
>
length
)
pos
=
length
;
pos
=
length
;
...
...
drivers/scsi/arm/fas216.c
View file @
73229285
...
@@ -225,7 +225,8 @@ static void fas216_dumpinfo(FAS216_Info *info)
...
@@ -225,7 +225,8 @@ static void fas216_dumpinfo(FAS216_Info *info)
printk
(
" dma={ transfer_type=%X setup=%p pseudo=%p stop=%p }
\n
"
,
printk
(
" dma={ transfer_type=%X setup=%p pseudo=%p stop=%p }
\n
"
,
info
->
dma
.
transfer_type
,
info
->
dma
.
setup
,
info
->
dma
.
transfer_type
,
info
->
dma
.
setup
,
info
->
dma
.
pseudo
,
info
->
dma
.
stop
);
info
->
dma
.
pseudo
,
info
->
dma
.
stop
);
printk
(
" magic_end=%lX }
\n
"
,
info
->
magic_end
);
printk
(
" internal_done=%X magic_end=%lX }
\n
"
,
info
->
internal_done
,
info
->
magic_end
);
}
}
#ifdef CHECK_STRUCTURE
#ifdef CHECK_STRUCTURE
...
@@ -2252,6 +2253,75 @@ int fas216_queue_command(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
...
@@ -2252,6 +2253,75 @@ int fas216_queue_command(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
return
result
;
return
result
;
}
}
/**
* fas216_internal_done - trigger restart of a waiting thread in fas216_noqueue_command
* @SCpnt: Command to wake
*
* Trigger restart of a waiting thread in fas216_command
*/
static
void
fas216_internal_done
(
Scsi_Cmnd
*
SCpnt
)
{
FAS216_Info
*
info
=
(
FAS216_Info
*
)
SCpnt
->
device
->
host
->
hostdata
;
fas216_checkmagic
(
info
);
info
->
internal_done
=
1
;
}
/**
* fas216_noqueue_command - process a command for the adapter.
* @SCpnt: Command to queue
*
* Queue a command for adapter to process.
* Returns: scsi result code.
* Notes: io_request_lock is held, interrupts are disabled.
*/
int
fas216_noqueue_command
(
Scsi_Cmnd
*
SCpnt
,
void
(
*
done
)(
Scsi_Cmnd
*
))
{
FAS216_Info
*
info
=
(
FAS216_Info
*
)
SCpnt
->
device
->
host
->
hostdata
;
fas216_checkmagic
(
info
);
/*
* We should only be using this if we don't have an interrupt.
* Provide some "incentive" to use the queueing code.
*/
BUG_ON
(
info
->
scsi
.
irq
!=
NO_IRQ
);
info
->
internal_done
=
0
;
fas216_queue_command
(
SCpnt
,
fas216_internal_done
);
/*
* This wastes time, since we can't return until the command is
* complete. We can't sleep either since we may get re-entered!
* However, we must re-enable interrupts, or else we'll be
* waiting forever.
*/
spin_unlock_irq
(
info
->
host
->
host_lock
);
while
(
!
info
->
internal_done
)
{
/*
* If we don't have an IRQ, then we must poll the card for
* it's interrupt, and use that to call this driver's
* interrupt routine. That way, we keep the command
* progressing. Maybe we can add some inteligence here
* and go to sleep if we know that the device is going
* to be some time (eg, disconnected).
*/
if
(
fas216_readb
(
info
,
REG_STAT
)
&
STAT_INT
)
{
spin_lock_irq
(
info
->
host
->
host_lock
);
fas216_intr
(
info
);
spin_unlock_irq
(
info
->
host
->
host_lock
);
}
}
spin_lock_irq
(
info
->
host
->
host_lock
);
done
(
SCpnt
);
return
0
;
}
/*
/*
* Error handler timeout function. Indicate that we timed out,
* Error handler timeout function. Indicate that we timed out,
* and wake up any error handler process so it can continue.
* and wake up any error handler process so it can continue.
...
@@ -2962,7 +3032,7 @@ int fas216_print_devices(FAS216_Info *info, char *buffer)
...
@@ -2962,7 +3032,7 @@ int fas216_print_devices(FAS216_Info *info, char *buffer)
EXPORT_SYMBOL
(
fas216_init
);
EXPORT_SYMBOL
(
fas216_init
);
EXPORT_SYMBOL
(
fas216_add
);
EXPORT_SYMBOL
(
fas216_add
);
EXPORT_SYMBOL
(
fas216_queue_command
);
EXPORT_SYMBOL
(
fas216_queue_command
);
EXPORT_SYMBOL
(
fas216_command
);
EXPORT_SYMBOL
(
fas216_
noqueue_
command
);
EXPORT_SYMBOL
(
fas216_intr
);
EXPORT_SYMBOL
(
fas216_intr
);
EXPORT_SYMBOL
(
fas216_remove
);
EXPORT_SYMBOL
(
fas216_remove
);
EXPORT_SYMBOL
(
fas216_release
);
EXPORT_SYMBOL
(
fas216_release
);
...
...
drivers/scsi/arm/fas216.h
View file @
73229285
...
@@ -310,6 +310,7 @@ typedef struct {
...
@@ -310,6 +310,7 @@ typedef struct {
}
dma
;
}
dma
;
/* miscellaneous */
/* miscellaneous */
int
internal_done
;
/* flag to indicate request done */
unsigned
long
magic_end
;
unsigned
long
magic_end
;
}
FAS216_Info
;
}
FAS216_Info
;
...
@@ -335,6 +336,14 @@ extern int fas216_add (struct Scsi_Host *instance, struct device *dev);
...
@@ -335,6 +336,14 @@ extern int fas216_add (struct Scsi_Host *instance, struct device *dev);
*/
*/
extern
int
fas216_queue_command
(
Scsi_Cmnd
*
,
void
(
*
done
)(
Scsi_Cmnd
*
));
extern
int
fas216_queue_command
(
Scsi_Cmnd
*
,
void
(
*
done
)(
Scsi_Cmnd
*
));
/* Function: int fas216_noqueue_command (Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
* Purpose : queue a command for adapter to process, and process it to completion.
* Params : SCpnt - Command to queue
* done - done function to call once command is complete
* Returns : 0 - success, else error
*/
extern
int
fas216_noqueue_command
(
Scsi_Cmnd
*
,
void
(
*
done
)(
Scsi_Cmnd
*
));
/* Function: irqreturn_t fas216_intr (FAS216_Info *info)
/* Function: irqreturn_t fas216_intr (FAS216_Info *info)
* Purpose : handle interrupts from the interface to progress a command
* Purpose : handle interrupts from the interface to progress a command
* Params : info - interface to service
* Params : info - interface to service
...
...
include/asm-arm/hardware.h
View file @
73229285
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
struct
platform_device
;
struct
platform_device
;
extern
int
platform_add_devices
(
struct
platform_device
*
,
int
);
extern
int
platform_add_devices
(
struct
platform_device
*
*
,
int
);
extern
int
platform_add_device
(
struct
platform_device
*
);
extern
int
platform_add_device
(
struct
platform_device
*
);
#endif
#endif
...
...
include/asm-arm/hardware/sa1111.h
View file @
73229285
...
@@ -429,22 +429,6 @@
...
@@ -429,22 +429,6 @@
#define SA1111_WAKEPOL0 0x0034
#define SA1111_WAKEPOL0 0x0034
#define SA1111_WAKEPOL1 0x0038
#define SA1111_WAKEPOL1 0x0038
#define INTTEST0 __CCREG(SA1111_INTC + SA1111_INTTEST0)
#define INTTEST1 __CCREG(SA1111_INTC + SA1111_INTTEST1)
#define INTEN0 __CCREG(SA1111_INTC + SA1111_INTEN0)
#define INTEN1 __CCREG(SA1111_INTC + SA1111_INTEN1)
#define INTPOL0 __CCREG(SA1111_INTC + SA1111_INTPOL0)
#define INTPOL1 __CCREG(SA1111_INTC + SA1111_INTPOL1)
#define INTTSTSEL __CCREG(SA1111_INTC + SA1111_INTTSTSEL)
#define INTSTATCLR0 __CCREG(SA1111_INTC + SA1111_INTSTATCLR0)
#define INTSTATCLR1 __CCREG(SA1111_INTC + SA1111_INTSTATCLR1)
#define INTSET0 __CCREG(SA1111_INTC + SA1111_INTSET0)
#define INTSET1 __CCREG(SA1111_INTC + SA1111_INTSET1)
#define WAKE_EN0 __CCREG(SA1111_INTC + SA1111_WAKEEN0)
#define WAKE_EN1 __CCREG(SA1111_INTC + SA1111_WAKEEN1)
#define WAKE_POL0 __CCREG(SA1111_INTC + SA1111_WAKEPOL0)
#define WAKE_POL1 __CCREG(SA1111_INTC + SA1111_WAKEPOL1)
/*
/*
* PS/2 Trackpad and Mouse Interfaces
* PS/2 Trackpad and Mouse Interfaces
*
*
...
...
include/asm-arm/local.h
0 → 100644
View file @
73229285
#include <asm-generic/local.h>
include/asm-arm/mach/irq.h
View file @
73229285
...
@@ -54,6 +54,8 @@ struct irqdesc {
...
@@ -54,6 +54,8 @@ struct irqdesc {
struct
irqchip
*
chip
;
struct
irqchip
*
chip
;
struct
irqaction
*
action
;
struct
irqaction
*
action
;
struct
list_head
pend
;
struct
list_head
pend
;
void
*
chipdata
;
void
*
data
;
unsigned
int
disable_depth
;
unsigned
int
disable_depth
;
unsigned
int
triggered
:
1
;
/* IRQ has occurred */
unsigned
int
triggered
:
1
;
/* IRQ has occurred */
...
@@ -88,6 +90,9 @@ void __set_irq_handler(unsigned int irq, irq_handler_t, int);
...
@@ -88,6 +90,9 @@ void __set_irq_handler(unsigned int irq, irq_handler_t, int);
*/
*/
#define set_irq_handler(irq,handler) __set_irq_handler(irq,handler,0)
#define set_irq_handler(irq,handler) __set_irq_handler(irq,handler,0)
#define set_irq_chained_handler(irq,handler) __set_irq_handler(irq,handler,1)
#define set_irq_chained_handler(irq,handler) __set_irq_handler(irq,handler,1)
#define set_irq_data(irq,d) do { irq_desc[irq].data = d; } while (0)
#define set_irq_chipdata(irq,d) do { irq_desc[irq].chipdata = d; } while (0)
#define get_irq_chipdata(irq) (irq_desc[irq].chipdata)
void
set_irq_chip
(
unsigned
int
irq
,
struct
irqchip
*
);
void
set_irq_chip
(
unsigned
int
irq
,
struct
irqchip
*
);
void
set_irq_flags
(
unsigned
int
irq
,
unsigned
int
flags
);
void
set_irq_flags
(
unsigned
int
irq
,
unsigned
int
flags
);
...
...
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