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
8bf6845b
Commit
8bf6845b
authored
Oct 21, 2003
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[libata] add per-driver port init/shutdown hooks, with helper defaults
parent
af4c0be5
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
54 additions
and
6 deletions
+54
-6
drivers/scsi/ata_piix.c
drivers/scsi/ata_piix.c
+6
-0
drivers/scsi/libata-core.c
drivers/scsi/libata-core.c
+27
-6
drivers/scsi/sata_promise.c
drivers/scsi/sata_promise.c
+4
-0
drivers/scsi/sata_sil.c
drivers/scsi/sata_sil.c
+2
-0
drivers/scsi/sata_svw.c
drivers/scsi/sata_svw.c
+2
-0
drivers/scsi/sata_via.c
drivers/scsi/sata_via.c
+3
-0
include/linux/libata.h
include/linux/libata.h
+10
-0
No files found.
drivers/scsi/ata_piix.c
View file @
8bf6845b
...
...
@@ -117,6 +117,9 @@ static struct ata_port_operations piix_pata_ops = {
.
eng_timeout
=
ata_eng_timeout
,
.
irq_handler
=
ata_interrupt
,
.
port_start
=
ata_port_start
,
.
port_stop
=
ata_port_stop
,
};
static
struct
ata_port_operations
piix_sata_ops
=
{
...
...
@@ -137,6 +140,9 @@ static struct ata_port_operations piix_sata_ops = {
.
eng_timeout
=
ata_eng_timeout
,
.
irq_handler
=
ata_interrupt
,
.
port_start
=
ata_port_start
,
.
port_stop
=
ata_port_stop
,
};
static
struct
ata_port_info
piix_port_info
[]
=
{
...
...
drivers/scsi/libata-core.c
View file @
8bf6845b
...
...
@@ -2666,6 +2666,26 @@ static void atapi_cdb_send(struct ata_port *ap)
goto
out
;
}
int
ata_port_start
(
struct
ata_port
*
ap
)
{
struct
pci_dev
*
pdev
=
ap
->
host_set
->
pdev
;
ap
->
prd
=
pci_alloc_consistent
(
pdev
,
ATA_PRD_TBL_SZ
,
&
ap
->
prd_dma
);
if
(
!
ap
->
prd
)
return
-
ENOMEM
;
DPRINTK
(
"prd alloc, virt %p, dma %x
\n
"
,
ap
->
prd
,
ap
->
prd_dma
);
return
0
;
}
void
ata_port_stop
(
struct
ata_port
*
ap
)
{
struct
pci_dev
*
pdev
=
ap
->
host_set
->
pdev
;
pci_free_consistent
(
pdev
,
ATA_PRD_TBL_SZ
,
ap
->
prd
,
ap
->
prd_dma
);
}
/**
* ata_host_remove -
* @ap:
...
...
@@ -2685,7 +2705,7 @@ static void ata_host_remove(struct ata_port *ap, unsigned int do_unregister)
ata_thread_kill
(
ap
);
/* FIXME: check return val */
pci_free_consistent
(
ap
->
host_set
->
pdev
,
ATA_PRD_TBL_SZ
,
ap
->
prd
,
ap
->
prd_dma
);
ap
->
ops
->
port_stop
(
ap
);
}
/**
...
...
@@ -2766,9 +2786,9 @@ static struct ata_port * ata_host_add(struct ata_probe_ent *ent,
struct
ata_host_set
*
host_set
,
unsigned
int
port_no
)
{
struct
pci_dev
*
pdev
=
ent
->
pdev
;
struct
Scsi_Host
*
host
;
struct
ata_port
*
ap
;
int
rc
;
DPRINTK
(
"ENTER
\n
"
);
host
=
scsi_host_alloc
(
ent
->
sht
,
sizeof
(
struct
ata_port
));
...
...
@@ -2779,10 +2799,9 @@ static struct ata_port * ata_host_add(struct ata_probe_ent *ent,
ata_host_init
(
ap
,
host
,
host_set
,
ent
,
port_no
);
ap
->
prd
=
pci_alloc_consistent
(
pdev
,
ATA_PRD_TBL_SZ
,
&
ap
->
prd_dma
);
if
(
!
ap
->
prd
)
rc
=
ap
->
ops
->
port_start
(
ap
);
if
(
rc
)
goto
err_out
;
DPRINTK
(
"prd alloc, virt %p, dma %x
\n
"
,
ap
->
prd
,
ap
->
prd_dma
);
ap
->
thr_pid
=
kernel_thread
(
ata_thread
,
ap
,
CLONE_FS
|
CLONE_FILES
);
if
(
ap
->
thr_pid
<
0
)
{
...
...
@@ -2794,7 +2813,7 @@ static struct ata_port * ata_host_add(struct ata_probe_ent *ent,
return
ap
;
err_out_free:
pci_free_consistent
(
ap
->
host_set
->
pdev
,
ATA_PRD_TBL_SZ
,
ap
->
prd
,
ap
->
prd_dma
);
ap
->
ops
->
port_stop
(
ap
);
err_out:
scsi_host_put
(
host
);
...
...
@@ -3276,6 +3295,8 @@ EXPORT_SYMBOL_GPL(ata_check_status_pio);
EXPORT_SYMBOL_GPL
(
ata_check_status_mmio
);
EXPORT_SYMBOL_GPL
(
ata_exec_command_pio
);
EXPORT_SYMBOL_GPL
(
ata_exec_command_mmio
);
EXPORT_SYMBOL_GPL
(
ata_port_start
);
EXPORT_SYMBOL_GPL
(
ata_port_stop
);
EXPORT_SYMBOL_GPL
(
ata_interrupt
);
EXPORT_SYMBOL_GPL
(
ata_fill_sg
);
EXPORT_SYMBOL_GPL
(
ata_bmdma_start_pio
);
...
...
drivers/scsi/sata_promise.c
View file @
8bf6845b
...
...
@@ -105,6 +105,8 @@ static struct ata_port_operations pdc_sata_ops = {
.
irq_handler
=
pdc_interrupt
,
.
scr_read
=
pdc_sata_scr_read
,
.
scr_write
=
pdc_sata_scr_write
,
.
port_start
=
ata_port_start
,
.
port_stop
=
ata_port_stop
,
};
static
struct
ata_port_operations
pdc_20621_ops
=
{
...
...
@@ -121,6 +123,8 @@ static struct ata_port_operations pdc_20621_ops = {
.
fill_sg
=
ata_fill_sg
,
.
eng_timeout
=
pdc_eng_timeout
,
.
irq_handler
=
pdc_interrupt
,
.
port_start
=
ata_port_start
,
.
port_stop
=
ata_port_stop
,
};
static
struct
ata_port_info
pdc_port_info
[]
=
{
...
...
drivers/scsi/sata_sil.c
View file @
8bf6845b
...
...
@@ -106,6 +106,8 @@ static struct ata_port_operations sil_ops = {
.
irq_handler
=
ata_interrupt
,
.
scr_read
=
sil_scr_read
,
.
scr_write
=
sil_scr_write
,
.
port_start
=
ata_port_start
,
.
port_stop
=
ata_port_stop
,
};
static
struct
ata_port_info
sil_port_info
[]
=
{
...
...
drivers/scsi/sata_svw.c
View file @
8bf6845b
...
...
@@ -235,6 +235,8 @@ static struct ata_port_operations k2_sata_ops = {
.
irq_handler
=
ata_interrupt
,
.
scr_read
=
k2_sata_scr_read
,
.
scr_write
=
k2_sata_scr_write
,
.
port_start
=
ata_port_start
,
.
port_stop
=
ata_port_stop
,
};
...
...
drivers/scsi/sata_via.c
View file @
8bf6845b
...
...
@@ -98,6 +98,9 @@ static struct ata_port_operations svia_sata_ops = {
.
eng_timeout
=
ata_eng_timeout
,
.
irq_handler
=
ata_interrupt
,
.
port_start
=
ata_port_start
,
.
port_stop
=
ata_port_stop
,
};
static
struct
ata_port_info
svia_port_info
[]
=
{
...
...
include/linux/libata.h
View file @
8bf6845b
...
...
@@ -215,6 +215,7 @@ struct ata_host_set {
unsigned
long
irq
;
void
*
mmio_base
;
unsigned
int
n_ports
;
void
*
private_data
;
struct
ata_port
*
ports
[
0
];
};
...
...
@@ -264,6 +265,8 @@ struct ata_queued_cmd {
ata_qc_cb_t
callback
;
struct
semaphore
sem
;
void
*
private_data
;
};
struct
ata_host_stats
{
...
...
@@ -333,6 +336,8 @@ struct ata_port {
struct
semaphore
thr_sem
;
struct
timer_list
thr_timer
;
unsigned
long
thr_timeout
;
void
*
private_data
;
};
struct
ata_port_operations
{
...
...
@@ -363,6 +368,9 @@ struct ata_port_operations {
u32
(
*
scr_read
)
(
struct
ata_port
*
ap
,
unsigned
int
sc_reg
);
void
(
*
scr_write
)
(
struct
ata_port
*
ap
,
unsigned
int
sc_reg
,
u32
val
);
int
(
*
port_start
)
(
struct
ata_port
*
ap
);
void
(
*
port_stop
)
(
struct
ata_port
*
ap
);
};
struct
ata_port_info
{
...
...
@@ -406,6 +414,8 @@ extern u8 ata_check_status_pio(struct ata_port *ap);
extern
u8
ata_check_status_mmio
(
struct
ata_port
*
ap
);
extern
void
ata_exec_command_pio
(
struct
ata_port
*
ap
,
struct
ata_taskfile
*
tf
);
extern
void
ata_exec_command_mmio
(
struct
ata_port
*
ap
,
struct
ata_taskfile
*
tf
);
extern
int
ata_port_start
(
struct
ata_port
*
ap
);
extern
void
ata_port_stop
(
struct
ata_port
*
ap
);
extern
irqreturn_t
ata_interrupt
(
int
irq
,
void
*
dev_instance
,
struct
pt_regs
*
regs
);
extern
void
ata_fill_sg
(
struct
ata_queued_cmd
*
qc
);
extern
void
ata_bmdma_start_mmio
(
struct
ata_queued_cmd
*
qc
);
...
...
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