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
c1d96203
Commit
c1d96203
authored
Oct 31, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
parents
4fd5f826
005a5a06
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
51 deletions
+18
-51
drivers/scsi/libata-core.c
drivers/scsi/libata-core.c
+10
-49
drivers/scsi/libata-scsi.c
drivers/scsi/libata-scsi.c
+8
-1
drivers/scsi/libata.h
drivers/scsi/libata.h
+0
-1
No files found.
drivers/scsi/libata-core.c
View file @
c1d96203
...
...
@@ -294,28 +294,6 @@ void ata_exec_command(struct ata_port *ap, const struct ata_taskfile *tf)
ata_exec_command_pio
(
ap
,
tf
);
}
/**
* ata_exec - issue ATA command to host controller
* @ap: port to which command is being issued
* @tf: ATA taskfile register set
*
* Issues PIO/MMIO write to ATA command register, with proper
* synchronization with interrupt handler / other threads.
*
* LOCKING:
* Obtains host_set lock.
*/
static
inline
void
ata_exec
(
struct
ata_port
*
ap
,
const
struct
ata_taskfile
*
tf
)
{
unsigned
long
flags
;
DPRINTK
(
"ata%u: cmd 0x%X
\n
"
,
ap
->
id
,
tf
->
command
);
spin_lock_irqsave
(
&
ap
->
host_set
->
lock
,
flags
);
ap
->
ops
->
exec_command
(
ap
,
tf
);
spin_unlock_irqrestore
(
&
ap
->
host_set
->
lock
,
flags
);
}
/**
* ata_tf_to_host - issue ATA taskfile to host controller
* @ap: port to which command is being issued
...
...
@@ -326,30 +304,11 @@ static inline void ata_exec(struct ata_port *ap, const struct ata_taskfile *tf)
* other threads.
*
* LOCKING:
* Obtains host_set lock.
*/
static
void
ata_tf_to_host
(
struct
ata_port
*
ap
,
const
struct
ata_taskfile
*
tf
)
{
ap
->
ops
->
tf_load
(
ap
,
tf
);
ata_exec
(
ap
,
tf
);
}
/**
* ata_tf_to_host_nolock - issue ATA taskfile to host controller
* @ap: port to which command is being issued
* @tf: ATA taskfile register set
*
* Issues ATA taskfile register set to ATA host controller,
* with proper synchronization with interrupt handler and
* other threads.
*
* LOCKING:
* spin_lock_irqsave(host_set lock)
*/
void
ata_tf_to_host_nolock
(
struct
ata_port
*
ap
,
const
struct
ata_taskfile
*
tf
)
static
inline
void
ata_tf_to_host
(
struct
ata_port
*
ap
,
const
struct
ata_taskfile
*
tf
)
{
ap
->
ops
->
tf_load
(
ap
,
tf
);
ap
->
ops
->
exec_command
(
ap
,
tf
);
...
...
@@ -1912,12 +1871,14 @@ static void ata_bus_post_reset(struct ata_port *ap, unsigned int devmask)
*
* LOCKING:
* PCI/etc. bus probe sem.
* Obtains host_set lock.
*
*/
static
unsigned
int
ata_bus_edd
(
struct
ata_port
*
ap
)
{
struct
ata_taskfile
tf
;
unsigned
long
flags
;
/* set up execute-device-diag (bus reset) taskfile */
/* also, take interrupts to a known state (disabled) */
...
...
@@ -1928,7 +1889,9 @@ static unsigned int ata_bus_edd(struct ata_port *ap)
tf
.
protocol
=
ATA_PROT_NODATA
;
/* do bus reset */
spin_lock_irqsave
(
&
ap
->
host_set
->
lock
,
flags
);
ata_tf_to_host
(
ap
,
&
tf
);
spin_unlock_irqrestore
(
&
ap
->
host_set
->
lock
,
flags
);
/* spec says at least 2ms. but who knows with those
* crazy ATAPI devices...
...
...
@@ -3555,7 +3518,7 @@ int ata_qc_issue_prot(struct ata_queued_cmd *qc)
switch
(
qc
->
tf
.
protocol
)
{
case
ATA_PROT_NODATA
:
ata_tf_to_host
_nolock
(
ap
,
&
qc
->
tf
);
ata_tf_to_host
(
ap
,
&
qc
->
tf
);
break
;
case
ATA_PROT_DMA
:
...
...
@@ -3566,20 +3529,20 @@ int ata_qc_issue_prot(struct ata_queued_cmd *qc)
case
ATA_PROT_PIO
:
/* load tf registers, initiate polling pio */
ata_qc_set_polling
(
qc
);
ata_tf_to_host
_nolock
(
ap
,
&
qc
->
tf
);
ata_tf_to_host
(
ap
,
&
qc
->
tf
);
ap
->
hsm_task_state
=
HSM_ST
;
queue_work
(
ata_wq
,
&
ap
->
pio_task
);
break
;
case
ATA_PROT_ATAPI
:
ata_qc_set_polling
(
qc
);
ata_tf_to_host
_nolock
(
ap
,
&
qc
->
tf
);
ata_tf_to_host
(
ap
,
&
qc
->
tf
);
queue_work
(
ata_wq
,
&
ap
->
packet_task
);
break
;
case
ATA_PROT_ATAPI_NODATA
:
ap
->
flags
|=
ATA_FLAG_NOINTR
;
ata_tf_to_host
_nolock
(
ap
,
&
qc
->
tf
);
ata_tf_to_host
(
ap
,
&
qc
->
tf
);
queue_work
(
ata_wq
,
&
ap
->
packet_task
);
break
;
...
...
@@ -4126,8 +4089,6 @@ static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host,
host
->
unique_id
=
ata_unique_id
++
;
host
->
max_cmd_len
=
12
;
scsi_assign_lock
(
host
,
&
host_set
->
lock
);
ap
->
flags
=
ATA_FLAG_PORT_DISABLED
;
ap
->
id
=
host
->
unique_id
;
ap
->
host
=
host
;
...
...
drivers/scsi/libata-scsi.c
View file @
c1d96203
...
...
@@ -39,6 +39,7 @@
#include <scsi/scsi.h>
#include "scsi.h"
#include <scsi/scsi_host.h>
#include <scsi/scsi_device.h>
#include <linux/libata.h>
#include <linux/hdreg.h>
#include <asm/uaccess.h>
...
...
@@ -2405,8 +2406,12 @@ int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
struct
ata_port
*
ap
;
struct
ata_device
*
dev
;
struct
scsi_device
*
scsidev
=
cmd
->
device
;
struct
Scsi_Host
*
shost
=
scsidev
->
host
;
ap
=
(
struct
ata_port
*
)
&
scsidev
->
host
->
hostdata
[
0
];
ap
=
(
struct
ata_port
*
)
&
shost
->
hostdata
[
0
];
spin_unlock
(
shost
->
host_lock
);
spin_lock
(
&
ap
->
host_set
->
lock
);
ata_scsi_dump_cdb
(
ap
,
cmd
);
...
...
@@ -2429,6 +2434,8 @@ int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
ata_scsi_translate
(
ap
,
dev
,
cmd
,
done
,
atapi_xlat
);
out_unlock:
spin_unlock
(
&
ap
->
host_set
->
lock
);
spin_lock
(
shost
->
host_lock
);
return
0
;
}
...
...
drivers/scsi/libata.h
View file @
c1d96203
...
...
@@ -48,7 +48,6 @@ extern int ata_qc_issue(struct ata_queued_cmd *qc);
extern
int
ata_check_atapi_dma
(
struct
ata_queued_cmd
*
qc
);
extern
void
ata_dev_select
(
struct
ata_port
*
ap
,
unsigned
int
device
,
unsigned
int
wait
,
unsigned
int
can_sleep
);
extern
void
ata_tf_to_host_nolock
(
struct
ata_port
*
ap
,
const
struct
ata_taskfile
*
tf
);
extern
void
swap_buf_le16
(
u16
*
buf
,
unsigned
int
buf_words
);
extern
int
ata_task_ioctl
(
struct
scsi_device
*
scsidev
,
void
__user
*
arg
);
extern
int
ata_cmd_ioctl
(
struct
scsi_device
*
scsidev
,
void
__user
*
arg
);
...
...
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