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
Kirill Smelkov
linux
Commits
0c558ca1
Commit
0c558ca1
authored
Jul 06, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge pobox.com:/spare/repo/linux-2.6
into pobox.com:/spare/repo/libata-2.6
parents
07f0a148
1d6fb7da
Changes
12
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
337 additions
and
225 deletions
+337
-225
drivers/scsi/ata_piix.c
drivers/scsi/ata_piix.c
+51
-30
drivers/scsi/libata-core.c
drivers/scsi/libata-core.c
+243
-182
drivers/scsi/sata_nv.c
drivers/scsi/sata_nv.c
+2
-0
drivers/scsi/sata_promise.c
drivers/scsi/sata_promise.c
+5
-2
drivers/scsi/sata_sil.c
drivers/scsi/sata_sil.c
+5
-2
drivers/scsi/sata_sis.c
drivers/scsi/sata_sis.c
+2
-1
drivers/scsi/sata_svw.c
drivers/scsi/sata_svw.c
+1
-0
drivers/scsi/sata_sx4.c
drivers/scsi/sata_sx4.c
+3
-1
drivers/scsi/sata_via.c
drivers/scsi/sata_via.c
+1
-0
drivers/scsi/sata_vsc.c
drivers/scsi/sata_vsc.c
+1
-0
include/linux/ata.h
include/linux/ata.h
+7
-0
include/linux/libata.h
include/linux/libata.h
+16
-7
No files found.
drivers/scsi/ata_piix.c
View file @
0c558ca1
...
...
@@ -65,10 +65,8 @@ static int piix_init_one (struct pci_dev *pdev,
static
void
piix_pata_phy_reset
(
struct
ata_port
*
ap
);
static
void
piix_sata_phy_reset
(
struct
ata_port
*
ap
);
static
void
piix_set_piomode
(
struct
ata_port
*
ap
,
struct
ata_device
*
adev
,
unsigned
int
pio
);
static
void
piix_set_udmamode
(
struct
ata_port
*
ap
,
struct
ata_device
*
adev
,
unsigned
int
udma
);
static
void
piix_set_piomode
(
struct
ata_port
*
ap
,
struct
ata_device
*
adev
);
static
void
piix_set_dmamode
(
struct
ata_port
*
ap
,
struct
ata_device
*
adev
);
static
unsigned
int
in_module_init
=
1
;
...
...
@@ -126,7 +124,7 @@ static Scsi_Host_Template piix_sht = {
static
struct
ata_port_operations
piix_pata_ops
=
{
.
port_disable
=
ata_port_disable
,
.
set_piomode
=
piix_set_piomode
,
.
set_
udmamode
=
piix_set_u
dmamode
,
.
set_
dmamode
=
piix_set_
dmamode
,
.
tf_load
=
ata_tf_load_pio
,
.
tf_read
=
ata_tf_read_pio
,
...
...
@@ -151,8 +149,6 @@ static struct ata_port_operations piix_pata_ops = {
static
struct
ata_port_operations
piix_sata_ops
=
{
.
port_disable
=
ata_port_disable
,
.
set_piomode
=
piix_set_piomode
,
.
set_udmamode
=
piix_set_udmamode
,
.
tf_load
=
ata_tf_load_pio
,
.
tf_read
=
ata_tf_read_pio
,
...
...
@@ -181,7 +177,12 @@ static struct ata_port_info piix_port_info[] = {
.
sht
=
&
piix_sht
,
.
host_flags
=
ATA_FLAG_SLAVE_POSS
|
ATA_FLAG_SRST
|
PIIX_FLAG_CHECKINTR
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
pio_mask
=
0x1f
,
/* pio0-4 */
#if 0
.mwdma_mask = 0x06, /* mwdma1-2 */
#else
.
mwdma_mask
=
0x00
,
/* mwdma broken */
#endif
.
udma_mask
=
ATA_UDMA_MASK_40C
,
/* FIXME: cbl det */
.
port_ops
=
&
piix_pata_ops
,
},
...
...
@@ -191,8 +192,9 @@ static struct ata_port_info piix_port_info[] = {
.
sht
=
&
piix_sht
,
.
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_SRST
|
PIIX_FLAG_COMBINED
|
PIIX_FLAG_CHECKINTR
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
udma_mask
=
0x7f
,
/* udma0-6 ; FIXME */
.
pio_mask
=
0x1f
,
/* pio0-4 */
.
mwdma_mask
=
0x07
,
/* mwdma0-2 */
.
udma_mask
=
0x7f
,
/* udma0-6 */
.
port_ops
=
&
piix_sata_ops
,
},
...
...
@@ -200,7 +202,12 @@ static struct ata_port_info piix_port_info[] = {
{
.
sht
=
&
piix_sht
,
.
host_flags
=
ATA_FLAG_SLAVE_POSS
|
ATA_FLAG_SRST
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
pio_mask
=
0x1f
,
/* pio0-4 */
#if 0
.mwdma_mask = 0x06, /* mwdma1-2 */
#else
.
mwdma_mask
=
0x00
,
/* mwdma broken */
#endif
.
udma_mask
=
ATA_UDMA_MASK_40C
,
/* FIXME: cbl det */
.
port_ops
=
&
piix_pata_ops
,
},
...
...
@@ -211,8 +218,9 @@ static struct ata_port_info piix_port_info[] = {
.
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_SRST
|
PIIX_FLAG_COMBINED
|
PIIX_FLAG_CHECKINTR
|
ATA_FLAG_SLAVE_POSS
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
udma_mask
=
0x7f
,
/* udma0-6 ; FIXME */
.
pio_mask
=
0x1f
,
/* pio0-4 */
.
mwdma_mask
=
0x07
,
/* mwdma0-2 */
.
udma_mask
=
0x7f
,
/* udma0-6 */
.
port_ops
=
&
piix_sata_ops
,
},
};
...
...
@@ -368,9 +376,9 @@ static void piix_sata_phy_reset(struct ata_port *ap)
* None (inherited from caller).
*/
static
void
piix_set_piomode
(
struct
ata_port
*
ap
,
struct
ata_device
*
adev
,
unsigned
int
pio
)
static
void
piix_set_piomode
(
struct
ata_port
*
ap
,
struct
ata_device
*
adev
)
{
unsigned
int
pio
=
adev
->
pio_mode
;
struct
pci_dev
*
dev
=
ap
->
host_set
->
pdev
;
unsigned
int
is_slave
=
(
adev
->
flags
&
ATA_DFLAG_MASTER
)
?
0
:
1
;
unsigned
int
master_port
=
ap
->
port_no
?
0x42
:
0x40
;
...
...
@@ -409,7 +417,7 @@ static void piix_set_piomode (struct ata_port *ap, struct ata_device *adev,
}
/**
* piix_set_
u
dmamode - Initialize host controller PATA PIO timings
* piix_set_dmamode - Initialize host controller PATA PIO timings
* @ap: Port whose timings we are configuring
* @adev: um
* @udma: udma mode, 0 - 6
...
...
@@ -420,9 +428,9 @@ static void piix_set_piomode (struct ata_port *ap, struct ata_device *adev,
* None (inherited from caller).
*/
static
void
piix_set_udmamode
(
struct
ata_port
*
ap
,
struct
ata_device
*
adev
,
unsigned
int
udma
)
static
void
piix_set_dmamode
(
struct
ata_port
*
ap
,
struct
ata_device
*
adev
)
{
unsigned
int
udma
=
adev
->
dma_mode
;
/* FIXME: MWDMA too */
struct
pci_dev
*
dev
=
ap
->
host_set
->
pdev
;
u8
maslave
=
ap
->
port_no
?
0x42
:
0x40
;
u8
speed
=
udma
;
...
...
@@ -452,11 +460,14 @@ static void piix_set_udmamode (struct ata_port *ap, struct ata_device *adev,
case
XFER_UDMA_3
:
case
XFER_UDMA_1
:
u_speed
=
1
<<
(
drive_dn
*
4
);
break
;
case
XFER_UDMA_0
:
u_speed
=
0
<<
(
drive_dn
*
4
);
break
;
case
XFER_MW_DMA_2
:
case
XFER_MW_DMA_1
:
break
;
default:
BUG
();
return
;
}
if
(
speed
>=
XFER_UDMA_0
)
{
if
(
!
(
reg48
&
u_flag
))
pci_write_config_byte
(
dev
,
0x48
,
reg48
|
u_flag
);
if
(
speed
==
XFER_UDMA_5
)
{
...
...
@@ -471,6 +482,16 @@ static void piix_set_udmamode (struct ata_port *ap, struct ata_device *adev,
pci_write_config_byte
(
dev
,
0x54
,
reg54
|
v_flag
);
}
else
pci_write_config_byte
(
dev
,
0x54
,
reg54
&
~
v_flag
);
}
else
{
if
(
reg48
&
u_flag
)
pci_write_config_byte
(
dev
,
0x48
,
reg48
&
~
u_flag
);
if
(
reg4a
&
a_speed
)
pci_write_config_word
(
dev
,
0x4a
,
reg4a
&
~
a_speed
);
if
(
reg54
&
v_flag
)
pci_write_config_byte
(
dev
,
0x54
,
reg54
&
~
v_flag
);
if
(
reg55
&
w_flag
)
pci_write_config_byte
(
dev
,
0x55
,
(
u8
)
reg55
&
~
w_flag
);
}
}
/* move to PCI layer, integrate w/ MSI stuff */
...
...
drivers/scsi/libata-core.c
View file @
0c558ca1
This diff is collapsed.
Click to expand it.
drivers/scsi/sata_nv.c
View file @
0c558ca1
...
...
@@ -39,6 +39,7 @@
#define NV_PORTS 2
#define NV_PIO_MASK 0x1f
#define NV_MWDMA_MASK 0x07
#define NV_UDMA_MASK 0x7f
#define NV_PORT0_BMDMA_REG_OFFSET 0x00
#define NV_PORT1_BMDMA_REG_OFFSET 0x08
...
...
@@ -289,6 +290,7 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
probe_ent
->
irq
=
pdev
->
irq
;
probe_ent
->
irq_flags
=
SA_SHIRQ
;
probe_ent
->
pio_mask
=
NV_PIO_MASK
;
probe_ent
->
mwdma_mask
=
NV_MWDMA_MASK
;
probe_ent
->
udma_mask
=
NV_UDMA_MASK
;
probe_ent
->
port
[
0
].
cmd_addr
=
pci_resource_start
(
pdev
,
0
);
...
...
drivers/scsi/sata_promise.c
View file @
0c558ca1
...
...
@@ -130,7 +130,8 @@ static struct ata_port_info pdc_port_info[] = {
.
sht
=
&
pdc_sata_sht
,
.
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_NO_LEGACY
|
ATA_FLAG_SRST
|
ATA_FLAG_MMIO
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
pio_mask
=
0x1f
,
/* pio0-4 */
.
mwdma_mask
=
0x07
,
/* mwdma0-2 */
.
udma_mask
=
0x7f
,
/* udma0-6 ; FIXME */
.
port_ops
=
&
pdc_sata_ops
,
},
...
...
@@ -140,7 +141,8 @@ static struct ata_port_info pdc_port_info[] = {
.
sht
=
&
pdc_sata_sht
,
.
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_NO_LEGACY
|
ATA_FLAG_SRST
|
ATA_FLAG_MMIO
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
pio_mask
=
0x1f
,
/* pio0-4 */
.
mwdma_mask
=
0x07
,
/* mwdma0-2 */
.
udma_mask
=
0x7f
,
/* udma0-6 ; FIXME */
.
port_ops
=
&
pdc_sata_ops
,
},
...
...
@@ -601,6 +603,7 @@ static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *
probe_ent
->
sht
=
pdc_port_info
[
board_idx
].
sht
;
probe_ent
->
host_flags
=
pdc_port_info
[
board_idx
].
host_flags
;
probe_ent
->
pio_mask
=
pdc_port_info
[
board_idx
].
pio_mask
;
probe_ent
->
mwdma_mask
=
pdc_port_info
[
board_idx
].
mwdma_mask
;
probe_ent
->
udma_mask
=
pdc_port_info
[
board_idx
].
udma_mask
;
probe_ent
->
port_ops
=
pdc_port_info
[
board_idx
].
port_ops
;
...
...
drivers/scsi/sata_sil.c
View file @
0c558ca1
...
...
@@ -149,7 +149,8 @@ static struct ata_port_info sil_port_info[] = {
.
sht
=
&
sil_sht
,
.
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_NO_LEGACY
|
ATA_FLAG_SRST
|
ATA_FLAG_MMIO
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
pio_mask
=
0x1f
,
/* pio0-4 */
.
mwdma_mask
=
0x07
,
/* mwdma0-2 */
.
udma_mask
=
0x3f
,
/* udma0-5 */
.
port_ops
=
&
sil_ops
,
},
/* sil_3114 */
...
...
@@ -157,7 +158,8 @@ static struct ata_port_info sil_port_info[] = {
.
sht
=
&
sil_sht
,
.
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_NO_LEGACY
|
ATA_FLAG_SRST
|
ATA_FLAG_MMIO
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
pio_mask
=
0x1f
,
/* pio0-4 */
.
mwdma_mask
=
0x07
,
/* mwdma0-2 */
.
udma_mask
=
0x3f
,
/* udma0-5 */
.
port_ops
=
&
sil_ops
,
},
...
...
@@ -363,6 +365,7 @@ static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
probe_ent
->
sht
=
sil_port_info
[
ent
->
driver_data
].
sht
;
probe_ent
->
n_ports
=
(
ent
->
driver_data
==
sil_3114
)
?
4
:
2
;
probe_ent
->
pio_mask
=
sil_port_info
[
ent
->
driver_data
].
pio_mask
;
probe_ent
->
mwdma_mask
=
sil_port_info
[
ent
->
driver_data
].
mwdma_mask
;
probe_ent
->
udma_mask
=
sil_port_info
[
ent
->
driver_data
].
udma_mask
;
probe_ent
->
irq
=
pdev
->
irq
;
probe_ent
->
irq_flags
=
SA_SHIRQ
;
...
...
drivers/scsi/sata_sis.c
View file @
0c558ca1
...
...
@@ -230,7 +230,8 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
probe_ent
->
host_flags
|=
SIS_FLAG_CFGSCR
;
}
probe_ent
->
pio_mask
=
0x03
;
probe_ent
->
pio_mask
=
0x1f
;
probe_ent
->
mwdma_mask
=
0x7
;
probe_ent
->
udma_mask
=
0x7f
;
probe_ent
->
port_ops
=
&
sis_ops
;
...
...
drivers/scsi/sata_svw.c
View file @
0c558ca1
...
...
@@ -343,6 +343,7 @@ static int k2_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *e
* if we don't fill these
*/
probe_ent
->
pio_mask
=
0x1f
;
probe_ent
->
mwdma_mask
=
0x7
;
probe_ent
->
udma_mask
=
0x7f
;
/* We have 4 ports per PCI function */
...
...
drivers/scsi/sata_sx4.c
View file @
0c558ca1
...
...
@@ -217,7 +217,8 @@ static struct ata_port_info pdc_port_info[] = {
.
sht
=
&
pdc_sata_sht
,
.
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_NO_LEGACY
|
ATA_FLAG_SRST
|
ATA_FLAG_MMIO
,
.
pio_mask
=
0x03
,
/* pio3-4 */
.
pio_mask
=
0x1f
,
/* pio0-4 */
.
mwdma_mask
=
0x07
,
/* mwdma0-2 */
.
udma_mask
=
0x7f
,
/* udma0-6 ; FIXME */
.
port_ops
=
&
pdc_20621_ops
,
},
...
...
@@ -1384,6 +1385,7 @@ static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *
probe_ent
->
sht
=
pdc_port_info
[
board_idx
].
sht
;
probe_ent
->
host_flags
=
pdc_port_info
[
board_idx
].
host_flags
;
probe_ent
->
pio_mask
=
pdc_port_info
[
board_idx
].
pio_mask
;
probe_ent
->
mwdma_mask
=
pdc_port_info
[
board_idx
].
mwdma_mask
;
probe_ent
->
udma_mask
=
pdc_port_info
[
board_idx
].
udma_mask
;
probe_ent
->
port_ops
=
pdc_port_info
[
board_idx
].
port_ops
;
...
...
drivers/scsi/sata_via.c
View file @
0c558ca1
...
...
@@ -214,6 +214,7 @@ static int svia_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
probe_ent
->
irq
=
pdev
->
irq
;
probe_ent
->
irq_flags
=
SA_SHIRQ
;
probe_ent
->
pio_mask
=
0x1f
;
probe_ent
->
mwdma_mask
=
0x07
;
probe_ent
->
udma_mask
=
0x7f
;
probe_ent
->
port
[
0
].
cmd_addr
=
pci_resource_start
(
pdev
,
0
);
...
...
drivers/scsi/sata_vsc.c
View file @
0c558ca1
...
...
@@ -320,6 +320,7 @@ static int __devinit vsc_sata_init_one (struct pci_dev *pdev, const struct pci_d
* if we don't fill these
*/
probe_ent
->
pio_mask
=
0x1f
;
probe_ent
->
mwdma_mask
=
0x07
;
probe_ent
->
udma_mask
=
0x7f
;
/* We have 4 ports per PCI function */
...
...
include/linux/ata.h
View file @
0c558ca1
...
...
@@ -42,6 +42,7 @@ enum {
ATA_ID_SERNO_OFS
=
10
,
ATA_ID_MAJOR_VER
=
80
,
ATA_ID_PIO_MODES
=
64
,
ATA_ID_MWDMA_MODES
=
63
,
ATA_ID_UDMA_MODES
=
88
,
ATA_ID_PIO4
=
(
1
<<
1
),
...
...
@@ -133,8 +134,14 @@ enum {
XFER_UDMA_2
=
0x42
,
XFER_UDMA_1
=
0x41
,
XFER_UDMA_0
=
0x40
,
XFER_MW_DMA_2
=
0x22
,
XFER_MW_DMA_1
=
0x21
,
XFER_MW_DMA_0
=
0x20
,
XFER_PIO_4
=
0x0C
,
XFER_PIO_3
=
0x0B
,
XFER_PIO_2
=
0x0A
,
XFER_PIO_1
=
0x09
,
XFER_PIO_0
=
0x08
,
/* ATAPI stuff */
ATAPI_PKT_DMA
=
(
1
<<
0
),
...
...
include/linux/libata.h
View file @
0c558ca1
...
...
@@ -32,7 +32,6 @@
/*
* compile-time options
*/
#undef ATA_FORCE_PIO
/* do not configure or use DMA */
#undef ATA_DEBUG
/* debugging output */
#undef ATA_VERBOSE_DEBUG
/* yet more debugging output */
#undef ATA_IRQ_TRAP
/* define to ack screaming irqs */
...
...
@@ -140,6 +139,13 @@ enum {
PORT_UNKNOWN
=
0
,
PORT_ENABLED
=
1
,
PORT_DISABLED
=
2
,
/* encoding various smaller bitmaps into a single
* unsigned long bitmap
*/
ATA_SHIFT_UDMA
=
0
,
ATA_SHIFT_MWDMA
=
8
,
ATA_SHIFT_PIO
=
11
,
};
enum
pio_task_states
{
...
...
@@ -188,6 +194,7 @@ struct ata_probe_ent {
struct
ata_ioports
port
[
ATA_MAX_PORTS
];
unsigned
int
n_ports
;
unsigned
int
pio_mask
;
unsigned
int
mwdma_mask
;
unsigned
int
udma_mask
;
unsigned
int
legacy_mode
;
unsigned
long
irq
;
...
...
@@ -251,8 +258,10 @@ struct ata_device {
unsigned
int
class
;
/* ATA_DEV_xxx */
unsigned
int
devno
;
/* 0 or 1 */
u16
id
[
ATA_ID_WORDS
];
/* IDENTIFY xxx DEVICE data */
unsigned
int
pio_mode
;
unsigned
int
udma_mode
;
u8
pio_mode
;
u8
dma_mode
;
u8
xfer_mode
;
unsigned
int
xfer_shift
;
/* ATA_SHIFT_xxx */
/* cache info about current transfer mode */
u8
xfer_protocol
;
/* taskfile xfer protocol */
...
...
@@ -277,6 +286,7 @@ struct ata_port {
unsigned
int
bus_state
;
unsigned
int
port_state
;
unsigned
int
pio_mask
;
unsigned
int
mwdma_mask
;
unsigned
int
udma_mask
;
unsigned
int
cbl
;
/* cable type; ATA_CBL_xxx */
...
...
@@ -303,10 +313,8 @@ struct ata_port_operations {
void
(
*
dev_config
)
(
struct
ata_port
*
,
struct
ata_device
*
);
void
(
*
set_piomode
)
(
struct
ata_port
*
,
struct
ata_device
*
,
unsigned
int
);
void
(
*
set_udmamode
)
(
struct
ata_port
*
,
struct
ata_device
*
,
unsigned
int
);
void
(
*
set_piomode
)
(
struct
ata_port
*
,
struct
ata_device
*
);
void
(
*
set_dmamode
)
(
struct
ata_port
*
,
struct
ata_device
*
);
void
(
*
tf_load
)
(
struct
ata_port
*
ap
,
struct
ata_taskfile
*
tf
);
void
(
*
tf_read
)
(
struct
ata_port
*
ap
,
struct
ata_taskfile
*
tf
);
...
...
@@ -342,6 +350,7 @@ struct ata_port_info {
Scsi_Host_Template
*
sht
;
unsigned
long
host_flags
;
unsigned
long
pio_mask
;
unsigned
long
mwdma_mask
;
unsigned
long
udma_mask
;
struct
ata_port_operations
*
port_ops
;
};
...
...
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