Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
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
Commits
55d8ca4f
Commit
55d8ca4f
authored
Mar 29, 2006
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'mv-merge'
Conflicts: drivers/scsi/sata_mv.c
parents
00b6f5e9
63af2a5c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
18 deletions
+24
-18
drivers/scsi/sata_mv.c
drivers/scsi/sata_mv.c
+24
-18
No files found.
drivers/scsi/sata_mv.c
View file @
55d8ca4f
...
@@ -1010,7 +1010,7 @@ static void mv_fill_sg(struct ata_queued_cmd *qc)
...
@@ -1010,7 +1010,7 @@ static void mv_fill_sg(struct ata_queued_cmd *qc)
pp
->
sg_tbl
[
i
].
addr
=
cpu_to_le32
(
addr
&
0xffffffff
);
pp
->
sg_tbl
[
i
].
addr
=
cpu_to_le32
(
addr
&
0xffffffff
);
pp
->
sg_tbl
[
i
].
addr_hi
=
cpu_to_le32
((
addr
>>
16
)
>>
16
);
pp
->
sg_tbl
[
i
].
addr_hi
=
cpu_to_le32
((
addr
>>
16
)
>>
16
);
pp
->
sg_tbl
[
i
].
flags_size
=
cpu_to_le32
(
len
);
pp
->
sg_tbl
[
i
].
flags_size
=
cpu_to_le32
(
len
&
0xffff
);
sg_len
-=
len
;
sg_len
-=
len
;
addr
+=
len
;
addr
+=
len
;
...
@@ -1350,7 +1350,6 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
...
@@ -1350,7 +1350,6 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
{
{
void
__iomem
*
mmio
=
host_set
->
mmio_base
;
void
__iomem
*
mmio
=
host_set
->
mmio_base
;
void
__iomem
*
hc_mmio
=
mv_hc_base
(
mmio
,
hc
);
void
__iomem
*
hc_mmio
=
mv_hc_base
(
mmio
,
hc
);
struct
ata_port
*
ap
;
struct
ata_queued_cmd
*
qc
;
struct
ata_queued_cmd
*
qc
;
u32
hc_irq_cause
;
u32
hc_irq_cause
;
int
shift
,
port
,
port0
,
hard_port
,
handled
;
int
shift
,
port
,
port0
,
hard_port
,
handled
;
...
@@ -1373,25 +1372,32 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
...
@@ -1373,25 +1372,32 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
for
(
port
=
port0
;
port
<
port0
+
MV_PORTS_PER_HC
;
port
++
)
{
for
(
port
=
port0
;
port
<
port0
+
MV_PORTS_PER_HC
;
port
++
)
{
u8
ata_status
=
0
;
u8
ata_status
=
0
;
ap
=
host_set
->
ports
[
port
];
struct
ata_port
*
ap
=
host_set
->
ports
[
port
];
struct
mv_port_priv
*
pp
=
ap
->
private_data
;
hard_port
=
port
&
MV_PORT_MASK
;
/* range 0-3 */
hard_port
=
port
&
MV_PORT_MASK
;
/* range 0-3 */
handled
=
0
;
/* ensure ata_status is set if handled++ */
handled
=
0
;
/* ensure ata_status is set if handled++ */
if
((
CRPB_DMA_DONE
<<
hard_port
)
&
hc_irq_cause
)
{
/* Note that DEV_IRQ might happen spuriously during EDMA,
/* new CRPB on the queue; just one at a time until NCQ
* and should be ignored in such cases. We could mask it,
*/
* but it's pretty rare and may not be worth the overhead.
ata_status
=
mv_get_crpb_status
(
ap
);
*/
handled
++
;
if
(
pp
->
pp_flags
&
MV_PP_FLAG_EDMA_EN
)
{
}
else
if
((
DEV_IRQ
<<
hard_port
)
&
hc_irq_cause
)
{
/* EDMA: check for response queue interrupt */
/* received ATA IRQ; read the status reg to clear INTRQ
if
((
CRPB_DMA_DONE
<<
hard_port
)
&
hc_irq_cause
)
{
*/
ata_status
=
mv_get_crpb_status
(
ap
);
ata_status
=
readb
((
void
__iomem
*
)
handled
=
1
;
}
}
else
{
/* PIO: check for device (drive) interrupt */
if
((
DEV_IRQ
<<
hard_port
)
&
hc_irq_cause
)
{
ata_status
=
readb
((
void
__iomem
*
)
ap
->
ioaddr
.
status_addr
);
ap
->
ioaddr
.
status_addr
);
handled
++
;
handled
=
1
;
}
}
}
if
(
ap
&&
if
(
ap
->
flags
&
(
ATA_FLAG_PORT_DISABLED
|
ATA_FLAG_NOINTR
))
(
ap
->
flags
&
(
ATA_FLAG_PORT_DISABLED
|
ATA_FLAG_NOINTR
)))
continue
;
continue
;
err_mask
=
ac_err_mask
(
ata_status
);
err_mask
=
ac_err_mask
(
ata_status
);
...
@@ -1403,12 +1409,12 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
...
@@ -1403,12 +1409,12 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
if
((
PORT0_ERR
<<
shift
)
&
relevant
)
{
if
((
PORT0_ERR
<<
shift
)
&
relevant
)
{
mv_err_intr
(
ap
);
mv_err_intr
(
ap
);
err_mask
|=
AC_ERR_OTHER
;
err_mask
|=
AC_ERR_OTHER
;
handled
++
;
handled
=
1
;
}
}
if
(
handled
&&
ap
)
{
if
(
handled
)
{
qc
=
ata_qc_from_tag
(
ap
,
ap
->
active_tag
);
qc
=
ata_qc_from_tag
(
ap
,
ap
->
active_tag
);
if
(
NULL
!=
qc
)
{
if
(
qc
&&
(
qc
->
flags
&
ATA_QCFLAG_ACTIVE
)
)
{
VPRINTK
(
"port %u IRQ found for qc, "
VPRINTK
(
"port %u IRQ found for qc, "
"ata_status 0x%x
\n
"
,
port
,
ata_status
);
"ata_status 0x%x
\n
"
,
port
,
ata_status
);
/* mark qc status appropriately */
/* mark qc status appropriately */
...
...
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