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
509c4ed3
Commit
509c4ed3
authored
Jun 15, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge kiwi:v2.5/linux into home.transmeta.com:/home/torvalds/v2.5/linux
parents
9f64c00f
78929a18
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
246 additions
and
459 deletions
+246
-459
arch/i386/kernel/dmi_scan.c
arch/i386/kernel/dmi_scan.c
+0
-28
drivers/ide/Config.help
drivers/ide/Config.help
+2
-0
drivers/ide/Config.in
drivers/ide/Config.in
+1
-1
drivers/ide/aec62xx.c
drivers/ide/aec62xx.c
+0
-2
drivers/ide/alim15x3.c
drivers/ide/alim15x3.c
+1
-2
drivers/ide/amd74xx.c
drivers/ide/amd74xx.c
+0
-2
drivers/ide/cmd64x.c
drivers/ide/cmd64x.c
+89
-94
drivers/ide/cy82c693.c
drivers/ide/cy82c693.c
+4
-4
drivers/ide/hpt34x.c
drivers/ide/hpt34x.c
+0
-1
drivers/ide/hpt366.c
drivers/ide/hpt366.c
+3
-31
drivers/ide/ide-disk.c
drivers/ide/ide-disk.c
+67
-131
drivers/ide/ide-pmac.c
drivers/ide/ide-pmac.c
+1
-16
drivers/ide/ide-taskfile.c
drivers/ide/ide-taskfile.c
+7
-5
drivers/ide/ide.c
drivers/ide/ide.c
+1
-1
drivers/ide/ioctl.c
drivers/ide/ioctl.c
+1
-12
drivers/ide/it8172.c
drivers/ide/it8172.c
+18
-52
drivers/ide/opti621.c
drivers/ide/opti621.c
+1
-2
drivers/ide/pcidma.c
drivers/ide/pcidma.c
+1
-1
drivers/ide/pdc202xx.c
drivers/ide/pdc202xx.c
+1
-5
drivers/ide/piix.c
drivers/ide/piix.c
+0
-2
drivers/ide/probe.c
drivers/ide/probe.c
+4
-0
drivers/ide/serverworks.c
drivers/ide/serverworks.c
+18
-31
drivers/ide/sis5513.c
drivers/ide/sis5513.c
+15
-22
drivers/ide/tcq.c
drivers/ide/tcq.c
+4
-4
drivers/ide/trm290.c
drivers/ide/trm290.c
+1
-1
drivers/ide/via82cxxx.c
drivers/ide/via82cxxx.c
+0
-2
fs/smbfs/smb_debug.h
fs/smbfs/smb_debug.h
+4
-4
include/linux/ide.h
include/linux/ide.h
+2
-3
No files found.
arch/i386/kernel/dmi_scan.c
View file @
509c4ed3
...
@@ -185,28 +185,6 @@ struct dmi_blacklist
...
@@ -185,28 +185,6 @@ struct dmi_blacklist
#define NO_MATCH { NONE, NULL}
#define NO_MATCH { NONE, NULL}
#define MATCH(a,b) { a, b }
#define MATCH(a,b) { a, b }
/*
* We have problems with IDE DMA on some platforms. In paticular the
* KT7 series. On these it seems the newer BIOS has fixed them. The
* rule needs to be improved to match specific BIOS revisions with
* corruption problems
*/
#if 0
static __init int disable_ide_dma(struct dmi_blacklist *d)
{
#ifdef CONFIG_BLK_DEV_IDE
extern int noautodma;
if(noautodma == 0)
{
noautodma = 1;
printk(KERN_INFO "%s series board detected. Disabling IDE DMA.\n", d->ident);
}
#endif
return 0;
}
#endif
/*
/*
* Reboot options and system auto-detection code provided by
* Reboot options and system auto-detection code provided by
* Dell Computer Corporation so their systems "just work". :-)
* Dell Computer Corporation so their systems "just work". :-)
...
@@ -511,12 +489,6 @@ static __init int print_if_true(struct dmi_blacklist *d)
...
@@ -511,12 +489,6 @@ static __init int print_if_true(struct dmi_blacklist *d)
*/
*/
static
__initdata
struct
dmi_blacklist
dmi_blacklist
[]
=
{
static
__initdata
struct
dmi_blacklist
dmi_blacklist
[]
=
{
#if 0
{ disable_ide_dma, "KT7", { /* Overbroad right now - kill DMA on problem KT7 boards */
MATCH(DMI_PRODUCT_NAME, "KT7-RAID"),
NO_MATCH, NO_MATCH, NO_MATCH
} },
#endif
{
broken_ps2_resume
,
"Dell Latitude C600"
,
{
/* Handle problems with APM on the C600 */
{
broken_ps2_resume
,
"Dell Latitude C600"
,
{
/* Handle problems with APM on the C600 */
MATCH
(
DMI_SYS_VENDOR
,
"Dell"
),
MATCH
(
DMI_SYS_VENDOR
,
"Dell"
),
MATCH
(
DMI_PRODUCT_NAME
,
"Latitude C600"
),
MATCH
(
DMI_PRODUCT_NAME
,
"Latitude C600"
),
...
...
drivers/ide/Config.help
View file @
509c4ed3
...
@@ -372,6 +372,8 @@ CONFIG_BLK_DEV_HPT366
...
@@ -372,6 +372,8 @@ CONFIG_BLK_DEV_HPT366
HPT366 is an Ultra DMA chipset for ATA-66.
HPT366 is an Ultra DMA chipset for ATA-66.
HPT368 is an Ultra DMA chipset for ATA-66 RAID Based.
HPT368 is an Ultra DMA chipset for ATA-66 RAID Based.
HPT370 is an Ultra DMA chipset for ATA-100.
HPT370 is an Ultra DMA chipset for ATA-100.
HPT372 is an Ultra DMA chipset for ATA-100.
HPT374 is an Ultra DMA chipset for ATA-100.
This driver adds up to 4 more EIDE devices sharing a single
This driver adds up to 4 more EIDE devices sharing a single
interrupt.
interrupt.
...
...
drivers/ide/Config.in
View file @
509c4ed3
...
@@ -50,7 +50,7 @@ if [ "$CONFIG_BLK_DEV_IDE" != "n" ]; then
...
@@ -50,7 +50,7 @@ if [ "$CONFIG_BLK_DEV_IDE" != "n" ]; then
dep_bool ' Cyrix CS5530 MediaGX chipset support' CONFIG_BLK_DEV_CS5530 $CONFIG_BLK_DEV_IDEDMA_PCI
dep_bool ' Cyrix CS5530 MediaGX chipset support' CONFIG_BLK_DEV_CS5530 $CONFIG_BLK_DEV_IDEDMA_PCI
dep_bool ' HPT34X chipset support' CONFIG_BLK_DEV_HPT34X $CONFIG_BLK_DEV_IDEDMA_PCI
dep_bool ' HPT34X chipset support' CONFIG_BLK_DEV_HPT34X $CONFIG_BLK_DEV_IDEDMA_PCI
dep_mbool ' HPT34X AUTODMA support (EXPERMENTAL)' CONFIG_HPT34X_AUTODMA $CONFIG_BLK_DEV_HPT34X $CONFIG_EXPERIMENTAL
dep_mbool ' HPT34X AUTODMA support (EXPERMENTAL)' CONFIG_HPT34X_AUTODMA $CONFIG_BLK_DEV_HPT34X $CONFIG_EXPERIMENTAL
dep_bool ' HPT36
6
chipset support' CONFIG_BLK_DEV_HPT366 $CONFIG_BLK_DEV_IDEDMA_PCI
dep_bool ' HPT36
X/37X
chipset support' CONFIG_BLK_DEV_HPT366 $CONFIG_BLK_DEV_IDEDMA_PCI
dep_bool ' Intel and Efar (SMsC) chipset support' CONFIG_BLK_DEV_PIIX $CONFIG_BLK_DEV_IDEDMA_PCI
dep_bool ' Intel and Efar (SMsC) chipset support' CONFIG_BLK_DEV_PIIX $CONFIG_BLK_DEV_IDEDMA_PCI
if [ "$CONFIG_MIPS_ITE8172" = "y" -o "$CONFIG_MIPS_IVR" = "y" ]; then
if [ "$CONFIG_MIPS_ITE8172" = "y" -o "$CONFIG_MIPS_IVR" = "y" ]; then
dep_mbool ' IT8172 IDE support' CONFIG_BLK_DEV_IT8172 $CONFIG_BLK_DEV_IDEDMA_PCI
dep_mbool ' IT8172 IDE support' CONFIG_BLK_DEV_IT8172 $CONFIG_BLK_DEV_IDEDMA_PCI
...
...
drivers/ide/aec62xx.c
View file @
509c4ed3
...
@@ -141,8 +141,6 @@ static int aec_set_drive(struct ata_device *drive, unsigned char speed)
...
@@ -141,8 +141,6 @@ static int aec_set_drive(struct ata_device *drive, unsigned char speed)
else
else
aec_set_speed_new
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
);
aec_set_speed_new
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
);
drive
->
current_speed
=
speed
;
return
0
;
return
0
;
}
}
...
...
drivers/ide/alim15x3.c
View file @
509c4ed3
...
@@ -53,6 +53,7 @@ static void ali15x3_tune_drive(struct ata_device *drive, byte pio)
...
@@ -53,6 +53,7 @@ static void ali15x3_tune_drive(struct ata_device *drive, byte pio)
t
=
ata_timing_data
(
pio
);
t
=
ata_timing_data
(
pio
);
/* FIXME: use generic ata-timing library --bkz */
s_time
=
t
->
setup
;
s_time
=
t
->
setup
;
a_time
=
t
->
active
;
a_time
=
t
->
active
;
if
((
s_clc
=
(
s_time
*
system_bus_speed
+
999999
)
/
1000000
)
>=
8
)
if
((
s_clc
=
(
s_time
*
system_bus_speed
+
999999
)
/
1000000
)
>=
8
)
...
@@ -171,8 +172,6 @@ static int ali15x3_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -171,8 +172,6 @@ static int ali15x3_tune_chipset(struct ata_device *drive, byte speed)
}
}
#endif
/* CONFIG_BLK_DEV_IDEDMA */
#endif
/* CONFIG_BLK_DEV_IDEDMA */
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
...
...
drivers/ide/amd74xx.c
View file @
509c4ed3
...
@@ -153,8 +153,6 @@ static int amd_set_drive(struct ata_device *drive, unsigned char speed)
...
@@ -153,8 +153,6 @@ static int amd_set_drive(struct ata_device *drive, unsigned char speed)
amd_set_speed
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
);
amd_set_speed
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
);
drive
->
current_speed
=
speed
;
return
0
;
return
0
;
}
}
...
...
drivers/ide/cmd64x.c
View file @
509c4ed3
...
@@ -156,26 +156,27 @@ static void program_drive_counts(struct ata_device *drive, int setup_count, int
...
@@ -156,26 +156,27 @@ static void program_drive_counts(struct ata_device *drive, int setup_count, int
* 8: prefetch off, 9: prefetch on, 255: auto-select best mode.
* 8: prefetch off, 9: prefetch on, 255: auto-select best mode.
* Called with 255 at boot time.
* Called with 255 at boot time.
*/
*/
static
void
cmd64x_tuneproc
(
struct
ata_device
*
drive
,
byte
mode_wanted
)
static
void
cmd64x_tuneproc
(
struct
ata_device
*
drive
,
u8
pio
)
{
{
int
recovery_time
,
clock_time
;
int
T
;
u8
recovery_count2
,
cycle_count
,
speed
;
u8
speed
,
active
,
recover
;
int
setup_count
,
active_count
,
recovery_count
;
struct
ata_timing
*
t
;
struct
ata_timing
*
t
;
switch
(
mode_wanted
)
{
switch
(
pio
)
{
/* FIXME: b0rken --bkz */
case
8
:
/* set prefetch off */
case
8
:
/* set prefetch off */
case
9
:
/* set prefetch on */
case
9
:
/* set prefetch on */
mode_wanted
&=
1
;
pio
&=
1
;
/*set_prefetch_mode(index, mode_wanted);*/
/*set_prefetch_mode(index, mode_wanted);*/
cmdprintk
(
"%s: %sabled cmd640 prefetch
\n
"
,
drive
->
name
,
mode_wanted
?
"en"
:
"dis"
);
cmdprintk
(
"%s: %sabled cmd640 prefetch
\n
"
,
drive
->
name
,
pio
?
"en"
:
"dis"
);
return
;
return
;
}
}
if
(
mode_wanted
==
255
)
if
(
pio
==
255
)
speed
=
ata_best_pio_mode
(
drive
);
speed
=
ata_best_pio_mode
(
drive
);
else
else
speed
=
XFER_PIO_0
+
min_t
(
u8
,
mode_wanted
,
4
);
speed
=
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
);
t
=
ata_timing_data
(
speed
);
t
=
ata_timing_data
(
speed
);
...
@@ -183,24 +184,21 @@ static void cmd64x_tuneproc(struct ata_device *drive, byte mode_wanted)
...
@@ -183,24 +184,21 @@ static void cmd64x_tuneproc(struct ata_device *drive, byte mode_wanted)
* I copied all this complicated stuff from cmd640.c and made a few minor changes.
* I copied all this complicated stuff from cmd640.c and made a few minor changes.
* For now I am just going to pray that it is correct.
* For now I am just going to pray that it is correct.
*/
*/
/* FIXME: try to use generic ata-timings library --bkz */
/* FIXME: verify it --bkz */
recovery_time
=
t
->
cycle
-
(
t
->
setup
+
t
->
active
);
T
=
1000000000
/
system_bus_speed
;
clock_time
=
1000000
/
system_bus_speed
;
ata_timing_quantize
(
t
,
t
,
T
,
T
);
cycle_count
=
(
t
->
cycle
+
clock_time
-
1
)
/
clock_time
;
setup_count
=
(
t
->
setup
+
clock_time
-
1
)
/
clock_time
;
/* FIXME: maybe switch to ata_timing_compute() --bkz */
active_count
=
(
t
->
active
+
clock_time
-
1
)
/
clock_time
;
recover
=
t
->
cycle
-
(
t
->
setup
+
t
->
active
);
active
=
t
->
active
;
recovery_count
=
(
recovery_time
+
clock_time
-
1
)
/
clock_time
;
recovery_count2
=
cycle_count
-
(
setup_count
+
active_count
);
if
(
recover
>
16
)
{
if
(
recovery_count2
>
recovery_count
)
active
+=
recover
-
16
;
recovery_count
=
recovery_count2
;
recover
=
16
;
if
(
recovery_count
>
16
)
{
active_count
+=
recovery_count
-
16
;
recovery_count
=
16
;
}
}
if
(
active
_count
>
16
)
if
(
active
>
16
)
active
_count
=
16
;
/* maximum allowed by cmd
646 */
active
=
16
;
/* maximum allowed by CMD
646 */
/*
/*
* In a perfect world, we might set the drive pio mode here
* In a perfect world, we might set the drive pio mode here
...
@@ -210,13 +208,12 @@ static void cmd64x_tuneproc(struct ata_device *drive, byte mode_wanted)
...
@@ -210,13 +208,12 @@ static void cmd64x_tuneproc(struct ata_device *drive, byte mode_wanted)
* 1) this is the wrong place to do it (proper is do_special() in ide.c)
* 1) this is the wrong place to do it (proper is do_special() in ide.c)
* 2) in practice this is rarely, if ever, necessary
* 2) in practice this is rarely, if ever, necessary
*/
*/
program_drive_counts
(
drive
,
setup_count
,
active_count
,
recovery_count
);
program_drive_counts
(
drive
,
t
->
setup
,
active
,
recover
);
cmdprintk
(
"%s: selected cmd646 PIO mode%d : %d (%dns), clocks=%d/%d/%d
\n
"
,
cmdprintk
(
"%s: selected cmd646 PIO mode%d : %d (%dns), clocks=%d/%d/%d
\n
"
,
drive
->
name
,
t
.
mode
-
XFER_PIO_0
,
mode_wanted
,
cycle_tim
e
,
drive
->
name
,
t
.
mode
-
XFER_PIO_0
,
pio
,
t
->
cycl
e
,
setup_count
,
active_count
,
recovery_count
);
t
->
setup
,
active
,
recover
);
drive
->
current_speed
=
speed
;
ide_config_drive_speed
(
drive
,
speed
);
ide_config_drive_speed
(
drive
,
speed
);
}
}
...
@@ -237,7 +234,7 @@ static int cmd64x_ratemask(struct ata_device *drive)
...
@@ -237,7 +234,7 @@ static int cmd64x_ratemask(struct ata_device *drive)
break
;
break
;
case
PCI_DEVICE_ID_CMD_646
:
case
PCI_DEVICE_ID_CMD_646
:
{
{
u
nsigned
int
class_rev
=
0
;
u
32
class_rev
;
pci_read_config_dword
(
dev
,
pci_read_config_dword
(
dev
,
PCI_CLASS_REVISION
,
&
class_rev
);
PCI_CLASS_REVISION
,
&
class_rev
);
class_rev
&=
0xff
;
class_rev
&=
0xff
;
...
@@ -332,11 +329,10 @@ static void cmd680_tuneproc(struct ata_device *drive, u8 pio)
...
@@ -332,11 +329,10 @@ static void cmd680_tuneproc(struct ata_device *drive, u8 pio)
speed
=
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
);
speed
=
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
);
drive
->
current_speed
=
speed
;
ide_config_drive_speed
(
drive
,
speed
);
ide_config_drive_speed
(
drive
,
speed
);
}
}
static
int
cmd64x_tune_chipset
(
struct
ata_device
*
drive
,
byte
speed
)
static
int
cmd64x_tune_chipset
(
struct
ata_device
*
drive
,
u8
speed
)
{
{
#ifdef CONFIG_BLK_DEV_IDEDMA
#ifdef CONFIG_BLK_DEV_IDEDMA
struct
ata_channel
*
hwif
=
drive
->
channel
;
struct
ata_channel
*
hwif
=
drive
->
channel
;
...
@@ -345,34 +341,40 @@ static int cmd64x_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -345,34 +341,40 @@ static int cmd64x_tune_chipset(struct ata_device *drive, byte speed)
u8
unit
=
(
drive
->
select
.
b
.
unit
&
0x01
);
u8
unit
=
(
drive
->
select
.
b
.
unit
&
0x01
);
u8
pciU
=
(
hwif
->
unit
)
?
UDIDETCR1
:
UDIDETCR0
;
u8
pciU
=
(
hwif
->
unit
)
?
UDIDETCR1
:
UDIDETCR0
;
u8
pciD
=
(
hwif
->
unit
)
?
BMIDESR1
:
BMIDESR0
;
u8
pciD
=
(
hwif
->
unit
)
?
BMIDESR1
:
BMIDESR0
;
u8
regU
,
regD
;
u8
regU
,
regD
,
U
=
0
,
D
=
0
;
if
((
drive
->
type
!=
ATA_DISK
)
&&
(
speed
<
XFER_SW_DMA_0
))
if
((
drive
->
type
!=
ATA_DISK
)
&&
(
speed
<
XFER_SW_DMA_0
))
return
1
;
return
1
;
(
void
)
pci_read_config_byte
(
dev
,
pciD
,
&
regD
);
pci_read_config_byte
(
dev
,
pciD
,
&
regD
);
(
void
)
pci_read_config_byte
(
dev
,
pciU
,
&
regU
);
pci_read_config_byte
(
dev
,
pciU
,
&
regU
);
/* unit 1 - 01000000b unit 0 - 00100000b */
regD
&=
~
(
unit
?
0x40
:
0x20
);
regD
&=
~
(
unit
?
0x40
:
0x20
);
/* unit 1 - 11001010b unit 0 - 00110101b */
regU
&=
~
(
unit
?
0xCA
:
0x35
);
regU
&=
~
(
unit
?
0xCA
:
0x35
);
(
void
)
pci_write_config_byte
(
dev
,
pciD
,
regD
);
(
void
)
pci_write_config_byte
(
dev
,
pciU
,
regU
);
(
void
)
pci_read_config_byte
(
dev
,
pciD
,
&
regD
);
pci_write_config_byte
(
dev
,
pciD
,
regD
);
(
void
)
pci_read_config_byte
(
dev
,
pciU
,
&
regU
);
pci_write_config_byte
(
dev
,
pciU
,
regU
);
/* FIXME: get unit checking out of here --bkz */
pci_read_config_byte
(
dev
,
pciD
,
&
regD
);
pci_read_config_byte
(
dev
,
pciU
,
&
regU
);
switch
(
speed
)
{
switch
(
speed
)
{
case
XFER_UDMA_5
:
regU
|=
(
unit
?
0x0A
:
0x05
);
break
;
/* FIXME: use tables --bkz */
case
XFER_UDMA_4
:
regU
|=
(
unit
?
0x4A
:
0x15
);
break
;
case
XFER_UDMA_5
:
U
=
0x05
;
break
;
case
XFER_UDMA_3
:
regU
|=
(
unit
?
0x8A
:
0x25
);
break
;
case
XFER_UDMA_4
:
U
=
0x15
;
break
;
case
XFER_UDMA_2
:
regU
|=
(
unit
?
0x42
:
0x11
);
break
;
case
XFER_UDMA_3
:
U
=
0x25
;
break
;
case
XFER_UDMA_1
:
regU
|=
(
unit
?
0x82
:
0x21
);
break
;
case
XFER_UDMA_2
:
U
=
0x11
;
break
;
case
XFER_UDMA_0
:
regU
|=
(
unit
?
0xC2
:
0x31
);
break
;
case
XFER_UDMA_1
:
U
=
0x21
;
break
;
case
XFER_MW_DMA_2
:
regD
|=
(
unit
?
0x40
:
0x10
);
break
;
case
XFER_UDMA_0
:
U
=
0x31
;
break
;
case
XFER_MW_DMA_1
:
regD
|=
(
unit
?
0x80
:
0x20
);
break
;
case
XFER_MW_DMA_2
:
D
=
0x10
;
break
;
case
XFER_MW_DMA_0
:
regD
|=
(
unit
?
0xC0
:
0x30
);
break
;
case
XFER_MW_DMA_1
:
D
=
0x20
;
break
;
case
XFER_SW_DMA_2
:
regD
|=
(
unit
?
0x40
:
0x10
);
break
;
case
XFER_MW_DMA_0
:
D
=
0x30
;
break
;
case
XFER_SW_DMA_1
:
regD
|=
(
unit
?
0x80
:
0x20
);
break
;
case
XFER_SW_DMA_2
:
D
=
0x10
;
break
;
case
XFER_SW_DMA_0
:
regD
|=
(
unit
?
0xC0
:
0x30
);
break
;
case
XFER_SW_DMA_1
:
D
=
0x20
;
break
;
case
XFER_SW_DMA_0
:
D
=
0x30
;
break
;
#else
#else
switch
(
speed
)
{
switch
(
speed
)
{
#endif
/* CONFIG_BLK_DEV_IDEDMA */
#endif
/* CONFIG_BLK_DEV_IDEDMA */
...
@@ -390,15 +392,22 @@ static int cmd64x_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -390,15 +392,22 @@ static int cmd64x_tune_chipset(struct ata_device *drive, byte speed)
cmd64x_tuneproc
(
drive
,
255
);
cmd64x_tuneproc
(
drive
,
255
);
#ifdef CONFIG_BLK_DEV_IDEDMA
#ifdef CONFIG_BLK_DEV_IDEDMA
(
void
)
pci_write_config_byte
(
dev
,
pciU
,
regU
);
#endif
/* CONFIG_BLK_DEV_IDEDMA */
drive
->
current_speed
=
speed
;
if
(
unit
)
{
if
(
speed
>=
XFER_UDMA_0
)
regU
|=
(((
U
&
0xf0
)
<<
2
)
|
((
U
&
0x0f
)
<<
1
));
else
if
(
speed
>=
XFER_SW_DMA_0
)
regD
|=
((
D
&
0xf0
)
<<
2
);
}
else
{
regU
|=
U
;
regD
|=
D
;
}
pci_write_config_byte
(
dev
,
pciU
,
regU
);
#ifdef CONFIG_BLK_DEV_IDEDMA
regD
|=
(
unit
?
0x40
:
0x20
);
regD
|=
(
unit
?
0x40
:
0x20
);
(
void
)
pci_write_config_byte
(
dev
,
pciD
,
regD
);
pci_write_config_byte
(
dev
,
pciD
,
regD
);
#endif
/* CONFIG_BLK_DEV_IDEDMA */
#endif
return
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
...
@@ -410,19 +419,20 @@ static int cmd680_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -410,19 +419,20 @@ static int cmd680_tune_chipset(struct ata_device *drive, byte speed)
u8
addr_mask
=
(
hwif
->
unit
)
?
0x84
:
0x80
;
u8
addr_mask
=
(
hwif
->
unit
)
?
0x84
:
0x80
;
u8
unit
=
(
drive
->
select
.
b
.
unit
&
0x01
);
u8
unit
=
(
drive
->
select
.
b
.
unit
&
0x01
);
u8
dma_pci
,
udma_pci
;
u8
dma_pci
,
udma_pci
;
u8
mode_pci
,
scsc
;
u8
mode_pci
,
scsc
,
scsc_on
=
0
;
u16
ultra
,
multi
;
u16
ultra
,
multi
;
pci_read_config_byte
(
dev
,
addr_mask
,
&
mode_pci
);
pci_read_config_byte
(
dev
,
addr_mask
,
&
mode_pci
);
pci_read_config_byte
(
dev
,
0x8A
,
&
scsc
);
pci_read_config_byte
(
dev
,
0x8A
,
&
scsc
);
switch
(
drive
->
dn
)
{
switch
(
drive
->
dn
)
{
case
0
:
dma_pci
=
0xA8
;
udma_pci
=
0xAC
;
break
;
case
0
:
dma_pci
=
0xA8
;
break
;
case
1
:
dma_pci
=
0xAA
;
udma_pci
=
0xAE
;
break
;
case
1
:
dma_pci
=
0xAA
;
break
;
case
2
:
dma_pci
=
0xB8
;
udma_pci
=
0xBC
;
break
;
case
2
:
dma_pci
=
0xB8
;
break
;
case
3
:
dma_pci
=
0xBA
;
udma_pci
=
0xBE
;
break
;
case
3
:
dma_pci
=
0xBA
;
break
;
default:
return
1
;
default:
return
1
;
}
}
udma_pci
=
dma_pci
+
4
;
pci_read_config_byte
(
dev
,
addr_mask
,
&
mode_pci
);
pci_read_config_byte
(
dev
,
addr_mask
,
&
mode_pci
);
mode_pci
&=
~
((
unit
)
?
0x30
:
0x03
);
mode_pci
&=
~
((
unit
)
?
0x30
:
0x03
);
...
@@ -434,46 +444,38 @@ static int cmd680_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -434,46 +444,38 @@ static int cmd680_tune_chipset(struct ata_device *drive, byte speed)
pci_read_config_byte
(
dev
,
0x8A
,
&
scsc
);
pci_read_config_byte
(
dev
,
0x8A
,
&
scsc
);
}
}
if
(
speed
>=
XFER_UDMA_0
)
{
ultra
&=
~
0x3F
;
multi
=
0x10C1
;
scsc_on
=
((
scsc
&
0x30
)
==
0x00
)
?
1
:
0
;
}
switch
(
speed
)
{
switch
(
speed
)
{
#ifdef CONFIG_BLK_DEV_IDEDMA
#ifdef CONFIG_BLK_DEV_IDEDMA
case
XFER_UDMA_6
:
case
XFER_UDMA_6
:
if
(
(
scsc
&
0x30
)
==
0x00
)
if
(
scsc_on
)
goto
speed_break
;
goto
speed_break
;
multi
=
0x10C1
;
ultra
&=
~
0x3F
;
ultra
|=
0x01
;
ultra
|=
0x01
;
break
;
break
;
speed_break
:
speed_break
:
speed
=
XFER_UDMA_5
;
speed
=
XFER_UDMA_5
;
case
XFER_UDMA_5
:
case
XFER_UDMA_5
:
multi
=
0x10C1
;
ultra
|=
(
scsc_on
?
0x01
:
0x02
);
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x01
:
0x02
);
break
;
break
;
case
XFER_UDMA_4
:
case
XFER_UDMA_4
:
multi
=
0x10C1
;
ultra
|=
(
scsc_on
?
0x02
:
0x03
);
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x02
:
0x03
);
break
;
break
;
case
XFER_UDMA_3
:
case
XFER_UDMA_3
:
multi
=
0x10C1
;
ultra
|=
(
scsc_on
?
0x04
:
0x05
);
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x04
:
0x05
);
break
;
break
;
case
XFER_UDMA_2
:
case
XFER_UDMA_2
:
multi
=
0x10C1
;
ultra
|=
(
scsc_on
?
0x05
:
0x07
);
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x05
:
0x07
);
break
;
break
;
case
XFER_UDMA_1
:
case
XFER_UDMA_1
:
multi
=
0x10C1
;
ultra
|=
(
scsc_on
?
0x07
:
0x0B
);
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x07
:
0x0B
);
break
;
break
;
case
XFER_UDMA_0
:
case
XFER_UDMA_0
:
multi
=
0x10C1
;
ultra
|=
(
scsc_on
?
0x0C
:
0x0F
);
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x0C
:
0x0F
);
break
;
break
;
case
XFER_MW_DMA_2
:
case
XFER_MW_DMA_2
:
multi
=
0x10C1
;
multi
=
0x10C1
;
...
@@ -509,8 +511,6 @@ speed_break :
...
@@ -509,8 +511,6 @@ speed_break :
pci_write_config_word
(
dev
,
dma_pci
,
multi
);
pci_write_config_word
(
dev
,
dma_pci
,
multi
);
pci_write_config_word
(
dev
,
udma_pci
,
ultra
);
pci_write_config_word
(
dev
,
udma_pci
,
ultra
);
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
...
@@ -520,11 +520,6 @@ static int config_chipset_for_dma(struct ata_device *drive, u8 udma)
...
@@ -520,11 +520,6 @@ static int config_chipset_for_dma(struct ata_device *drive, u8 udma)
int
map
;
int
map
;
u8
mode
;
u8
mode
;
if
(
drive
->
type
!=
ATA_DISK
)
{
cmdprintk
(
"CMD64X: drive is not a disk at double check, inital check failed!!
\n
"
);
return
0
;
}
if
(
udma
)
if
(
udma
)
map
=
cmd64x_ratemask
(
drive
);
map
=
cmd64x_ratemask
(
drive
);
else
else
...
@@ -728,8 +723,8 @@ static unsigned int cmd680_pci_init(struct pci_dev *dev)
...
@@ -728,8 +723,8 @@ static unsigned int cmd680_pci_init(struct pci_dev *dev)
static
unsigned
int
cmd64x_pci_init
(
struct
pci_dev
*
dev
)
static
unsigned
int
cmd64x_pci_init
(
struct
pci_dev
*
dev
)
{
{
u
nsigned
char
mrdmode
;
u
8
mrdmode
;
u
nsigned
int
class_rev
;
u
32
class_rev
;
pci_read_config_dword
(
dev
,
PCI_CLASS_REVISION
,
&
class_rev
);
pci_read_config_dword
(
dev
,
PCI_CLASS_REVISION
,
&
class_rev
);
class_rev
&=
0xff
;
class_rev
&=
0xff
;
...
...
drivers/ide/cy82c693.c
View file @
509c4ed3
...
@@ -204,7 +204,7 @@ static void cy82c693_dma_enable(struct ata_device *drive, int mode, int single)
...
@@ -204,7 +204,7 @@ static void cy82c693_dma_enable(struct ata_device *drive, int mode, int single)
data
=
IN_BYTE
(
CY82_DATA_PORT
);
data
=
IN_BYTE
(
CY82_DATA_PORT
);
printk
(
KERN_INFO
"%s (ch=%d, dev=%d): DMA mode is %d (single=%d)
\n
"
,
drive
->
name
,
drive
->
channel
->
unit
,
drive
->
select
.
b
.
unit
,
(
data
&
0x3
),
((
data
>>
2
)
&
1
));
printk
(
KERN_INFO
"%s (ch=%d, dev=%d): DMA mode is %d (single=%d)
\n
"
,
drive
->
name
,
drive
->
channel
->
unit
,
drive
->
select
.
b
.
unit
,
(
data
&
0x3
),
((
data
>>
2
)
&
1
));
#endif
/* CY82C693_DEBUG_LOGS */
#endif
data
=
(
byte
)
mode
|
(
byte
)(
single
<<
2
);
data
=
(
byte
)
mode
|
(
byte
)(
single
<<
2
);
...
@@ -213,7 +213,7 @@ static void cy82c693_dma_enable(struct ata_device *drive, int mode, int single)
...
@@ -213,7 +213,7 @@ static void cy82c693_dma_enable(struct ata_device *drive, int mode, int single)
#if CY82C693_DEBUG_INFO
#if CY82C693_DEBUG_INFO
printk
(
KERN_INFO
"%s (ch=%d, dev=%d): set DMA mode to %d (single=%d)
\n
"
,
drive
->
name
,
drive
->
channel
->
unit
,
drive
->
select
.
b
.
unit
,
mode
,
single
);
printk
(
KERN_INFO
"%s (ch=%d, dev=%d): set DMA mode to %d (single=%d)
\n
"
,
drive
->
name
,
drive
->
channel
->
unit
,
drive
->
select
.
b
.
unit
,
mode
,
single
);
#endif
/* CY82C693_DEBUG_INFO */
#endif
/*
/*
* note: below we set the value for Bus Master IDE TimeOut Register
* note: below we set the value for Bus Master IDE TimeOut Register
...
@@ -231,7 +231,7 @@ static void cy82c693_dma_enable(struct ata_device *drive, int mode, int single)
...
@@ -231,7 +231,7 @@ static void cy82c693_dma_enable(struct ata_device *drive, int mode, int single)
#if CY82C693_DEBUG_INFO
#if CY82C693_DEBUG_INFO
printk
(
KERN_INFO
"%s: Set IDE Bus Master TimeOut Register to 0x%X
\n
"
,
drive
->
name
,
data
);
printk
(
KERN_INFO
"%s: Set IDE Bus Master TimeOut Register to 0x%X
\n
"
,
drive
->
name
,
data
);
#endif
/* CY82C693_DEBUG_INFO */
#endif
}
}
/*
/*
...
@@ -331,7 +331,7 @@ static void cy82c693_tune_drive(struct ata_device *drive, byte pio)
...
@@ -331,7 +331,7 @@ static void cy82c693_tune_drive(struct ata_device *drive, byte pio)
#if CY82C693_DEBUG_INFO
#if CY82C693_DEBUG_INFO
printk
(
KERN_INFO
"%s: Selected PIO mode %d
\n
"
,
drive
->
name
,
pio
);
printk
(
KERN_INFO
"%s: Selected PIO mode %d
\n
"
,
drive
->
name
,
pio
);
#endif
/* CY82C693_DEBUG_INFO */
#endif
compute_clocks
(
pio
,
&
pclk
);
/* let's calc the values for this PIO mode */
compute_clocks
(
pio
,
&
pclk
);
/* let's calc the values for this PIO mode */
...
...
drivers/ide/hpt34x.c
View file @
509c4ed3
...
@@ -63,7 +63,6 @@ static int hpt34x_tune_chipset(struct ata_device *drive, u8 speed)
...
@@ -63,7 +63,6 @@ static int hpt34x_tune_chipset(struct ata_device *drive, u8 speed)
udma
,
pio
,
err
);
udma
,
pio
,
err
);
#endif
#endif
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
...
...
drivers/ide/hpt366.c
View file @
509c4ed3
...
@@ -140,7 +140,7 @@ struct chipset_bus_clock_list_entry {
...
@@ -140,7 +140,7 @@ struct chipset_bus_clock_list_entry {
unsigned
int
chipset_settings
;
unsigned
int
chipset_settings
;
};
};
/* key for bus clock timings
/* key for bus clock timings
for HPT370
* bit
* bit
* 0:3 data_high_time. inactive time of DIOW_/DIOR_ for PIO and MW
* 0:3 data_high_time. inactive time of DIOW_/DIOR_ for PIO and MW
* DMA. cycles = value + 1
* DMA. cycles = value + 1
...
@@ -408,26 +408,6 @@ static struct chipset_bus_clock_list_entry thirty_three_base_hpt374[] = {
...
@@ -408,26 +408,6 @@ static struct chipset_bus_clock_list_entry thirty_three_base_hpt374[] = {
{
0
,
0x06814e93
}
{
0
,
0x06814e93
}
};
};
#if 0
static struct chipset_bus_clock_list_entry fifty_base_hpt374[] = {
{ XFER_UDMA_6, },
{ XFER_UDMA_5, },
{ XFER_UDMA_4, },
{ XFER_UDMA_3, },
{ XFER_UDMA_2, },
{ XFER_UDMA_1, },
{ XFER_UDMA_0, },
{ XFER_MW_DMA_2, },
{ XFER_MW_DMA_1, },
{ XFER_MW_DMA_0, },
{ XFER_PIO_4, },
{ XFER_PIO_3, },
{ XFER_PIO_2, },
{ XFER_PIO_1, },
{ XFER_PIO_0, },
{ 0, }
};
#endif
#if 0
#if 0
static struct chipset_bus_clock_list_entry sixty_six_base_hpt374[] = {
static struct chipset_bus_clock_list_entry sixty_six_base_hpt374[] = {
{ XFER_UDMA_6, 0x12406231 }, /* checkme */
{ XFER_UDMA_6, 0x12406231 }, /* checkme */
...
@@ -678,21 +658,13 @@ static int hpt3xx_tune_chipset(struct ata_device *drive, u8 speed)
...
@@ -678,21 +658,13 @@ static int hpt3xx_tune_chipset(struct ata_device *drive, u8 speed)
}
else
{
}
else
{
hpt366_tune_chipset
(
drive
,
speed
);
hpt366_tune_chipset
(
drive
,
speed
);
}
}
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
static
void
hpt3xx_tune_drive
(
struct
ata_device
*
drive
,
u8
pio
)
static
void
hpt3xx_tune_drive
(
struct
ata_device
*
drive
,
u8
pio
)
{
{
u8
speed
;
(
void
)
hpt3xx_tune_chipset
(
drive
,
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
));
switch
(
pio
)
{
case
4
:
speed
=
XFER_PIO_4
;
break
;
case
3
:
speed
=
XFER_PIO_3
;
break
;
case
2
:
speed
=
XFER_PIO_2
;
break
;
case
1
:
speed
=
XFER_PIO_1
;
break
;
default:
speed
=
XFER_PIO_0
;
break
;
}
(
void
)
hpt3xx_tune_chipset
(
drive
,
speed
);
}
}
#ifdef CONFIG_BLK_DEV_IDEDMA
#ifdef CONFIG_BLK_DEV_IDEDMA
...
...
drivers/ide/ide-disk.c
View file @
509c4ed3
...
@@ -93,61 +93,74 @@ static int lba_capacity_is_ok(struct hd_driveid *id)
...
@@ -93,61 +93,74 @@ static int lba_capacity_is_ok(struct hd_driveid *id)
/*
/*
* Handler for command with PIO data-in phase.
* Handler for command with PIO data-in phase.
*/
*/
static
ide_startstop_t
task
_in_intr
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
static
ide_startstop_t
pio
_in_intr
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
{
{
unsigned
long
flags
;
unsigned
long
flags
;
struct
ata_channel
*
ch
=
drive
->
channel
;
struct
ata_channel
*
ch
=
drive
->
channel
;
int
re
t
;
unsigned
int
msec
t
;
spin_lock_irqsave
(
ch
->
lock
,
flags
);
spin_lock_irqsave
(
ch
->
lock
,
flags
);
if
(
!
ata_status
(
drive
,
DATA_READY
,
BAD_R_STAT
))
{
if
(
!
ata_status
(
drive
,
DATA_READY
,
BAD_R_STAT
))
{
if
(
drive
->
status
&
(
ERR_STAT
|
DRQ_STAT
))
{
if
(
drive
->
status
&
(
ERR_STAT
|
DRQ_STAT
))
{
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
return
ata_error
(
drive
,
rq
,
__FUNCTION__
);
return
ata_error
(
drive
,
rq
,
__FUNCTION__
);
}
}
/* no data yet, so wait for another interrupt */
if
(
!
(
drive
->
status
&
BUSY_STAT
))
ata_set_handler
(
drive
,
task_in_intr
,
WAIT_CMD
,
NULL
);
goto
cont
;
}
ret
=
ide_started
;
msect
=
drive
->
mult_count
;
}
else
{
do
{
unsigned
int
nsect
;
// printk("Read: %p, rq->current_nr_sectors: %d\n", buf, (int) rq->current_nr_sectors);
if
(
drive
->
mult_count
)
{
nsect
=
rq
->
current_nr_sectors
;
/* Don't try to transfer more sectors at once then one
* multi sector command can swallow.
*/
if
(
nsect
>
msect
)
nsect
=
msect
;
}
else
{
nsect
=
rq
->
current_nr_sectors
;
nsect
=
1
;
}
// printk("Read: rq->current_nr_sectors: %d %d %d\n", msect, nsect, (int) rq->current_nr_sectors);
{
{
unsigned
long
flags
;
unsigned
long
flags
;
char
*
buf
;
char
*
buf
;
buf
=
ide_map_rq
(
rq
,
&
flags
);
buf
=
ide_map_rq
(
rq
,
&
flags
);
ata_read
(
drive
,
buf
,
SECTOR_WORDS
);
ata_read
(
drive
,
buf
,
nsect
*
SECTOR_WORDS
);
ide_unmap_rq
(
rq
,
buf
,
&
flags
);
ide_unmap_rq
(
rq
,
buf
,
&
flags
);
}
}
/*
First s
egment of the request is complete. note that this does not
/*
S
egment of the request is complete. note that this does not
* necessarily mean that the entire request is done!! this is
only true
* necessarily mean that the entire request is done!! this is
* if ata_end_request() returns 0.
*
only true
if ata_end_request() returns 0.
*/
*/
rq
->
errors
=
0
;
rq
->
errors
=
0
;
--
rq
->
current_nr_sectors
;
rq
->
current_nr_sectors
-=
nsect
;
if
(
rq
->
current_nr_sectors
<=
0
)
{
if
(
rq
->
current_nr_sectors
<=
0
)
{
if
(
!
__ata_end_request
(
drive
,
rq
,
1
,
0
))
{
if
(
!
__ata_end_request
(
drive
,
rq
,
1
,
0
))
{
// printk("Request Ended stat: %02x\n", drive->status);
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
return
ide_stopped
;
return
ide_stopped
;
}
}
}
}
msect
-=
nsect
;
}
while
(
msect
>
0
);
/* still data left to transfer */
cont:
ata_set_handler
(
drive
,
task_in_intr
,
WAIT_CMD
,
NULL
);
/* still data left to transfer */
ata_set_handler
(
drive
,
pio_in_intr
,
WAIT_CMD
,
NULL
);
ret
=
ide_started
;
}
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
return
ret
;
return
ide_started
;
}
}
/*
/*
...
@@ -190,77 +203,6 @@ static ide_startstop_t task_out_intr(struct ata_device *drive, struct request *r
...
@@ -190,77 +203,6 @@ static ide_startstop_t task_out_intr(struct ata_device *drive, struct request *r
return
ret
;
return
ret
;
}
}
/*
* Handler for command with Read Multiple
*/
static
ide_startstop_t
task_mulin_intr
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
{
unsigned
long
flags
;
struct
ata_channel
*
ch
=
drive
->
channel
;
int
ret
;
spin_lock_irqsave
(
ch
->
lock
,
flags
);
if
(
!
ata_status
(
drive
,
DATA_READY
,
BAD_R_STAT
))
{
if
(
drive
->
status
&
(
ERR_STAT
|
DRQ_STAT
))
{
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
return
ata_error
(
drive
,
rq
,
__FUNCTION__
);
}
/* no data yet, so wait for another interrupt */
ata_set_handler
(
drive
,
task_mulin_intr
,
WAIT_CMD
,
NULL
);
ret
=
ide_started
;
}
else
{
unsigned
int
msect
;
/* (ks/hs): Fixed Multi-Sector transfer */
msect
=
drive
->
mult_count
;
do
{
unsigned
int
nsect
;
nsect
=
rq
->
current_nr_sectors
;
if
(
nsect
>
msect
)
nsect
=
msect
;
#if 0
printk("Multiread: %p, nsect: %d , rq->current_nr_sectors: %d\n",
buf, nsect, rq->current_nr_sectors);
#endif
{
unsigned
long
flags
;
char
*
buf
;
buf
=
ide_map_rq
(
rq
,
&
flags
);
ata_read
(
drive
,
buf
,
nsect
*
SECTOR_WORDS
);
ide_unmap_rq
(
rq
,
buf
,
&
flags
);
}
rq
->
errors
=
0
;
rq
->
current_nr_sectors
-=
nsect
;
/* FIXME: this seems buggy */
if
(
rq
->
current_nr_sectors
<=
0
)
{
if
(
!
__ata_end_request
(
drive
,
rq
,
1
,
0
))
{
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
return
ide_stopped
;
}
}
msect
-=
nsect
;
}
while
(
msect
);
/* more data left */
ata_set_handler
(
drive
,
task_mulin_intr
,
WAIT_CMD
,
NULL
);
ret
=
ide_started
;
}
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
return
ret
;
}
static
ide_startstop_t
task_mulout_intr
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
static
ide_startstop_t
task_mulout_intr
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
{
{
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -610,10 +552,10 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
...
@@ -610,10 +552,10 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
}
else
if
(
drive
->
using_dma
)
{
}
else
if
(
drive
->
using_dma
)
{
args
.
cmd
=
WIN_READDMA_EXT
;
args
.
cmd
=
WIN_READDMA_EXT
;
}
else
if
(
drive
->
mult_count
)
{
}
else
if
(
drive
->
mult_count
)
{
args
.
XXX_handler
=
task_mul
in_intr
;
args
.
XXX_handler
=
pio_
in_intr
;
args
.
cmd
=
WIN_MULTREAD_EXT
;
args
.
cmd
=
WIN_MULTREAD_EXT
;
}
else
{
}
else
{
args
.
XXX_handler
=
task
_in_intr
;
args
.
XXX_handler
=
pio
_in_intr
;
args
.
cmd
=
WIN_READ_EXT
;
args
.
cmd
=
WIN_READ_EXT
;
}
}
}
else
{
}
else
{
...
@@ -622,11 +564,10 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
...
@@ -622,11 +564,10 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
}
else
if
(
drive
->
using_dma
)
{
}
else
if
(
drive
->
using_dma
)
{
args
.
cmd
=
WIN_READDMA
;
args
.
cmd
=
WIN_READDMA
;
}
else
if
(
drive
->
mult_count
)
{
}
else
if
(
drive
->
mult_count
)
{
/* FIXME : Shouldn't this be task_mulin_intr?! */
args
.
XXX_handler
=
pio_in_intr
;
args
.
XXX_handler
=
task_in_intr
;
args
.
cmd
=
WIN_MULTREAD
;
args
.
cmd
=
WIN_MULTREAD
;
}
else
{
}
else
{
args
.
XXX_handler
=
task
_in_intr
;
args
.
XXX_handler
=
pio
_in_intr
;
args
.
cmd
=
WIN_READ
;
args
.
cmd
=
WIN_READ
;
}
}
}
}
...
@@ -673,6 +614,19 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
...
@@ -673,6 +614,19 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
return
__do_request
(
drive
,
&
args
,
rq
);
return
__do_request
(
drive
,
&
args
,
rq
);
}
}
/*
* Small helper function used to execute simple commands.
*/
static
int
simple_taskfile
(
struct
ata_device
*
drive
,
u8
cmd
)
{
struct
ata_taskfile
args
;
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
cmd
=
cmd
;
return
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
}
static
int
idedisk_open
(
struct
inode
*
inode
,
struct
file
*
__fp
,
struct
ata_device
*
drive
)
static
int
idedisk_open
(
struct
inode
*
inode
,
struct
file
*
__fp
,
struct
ata_device
*
drive
)
{
{
MOD_INC_USE_COUNT
;
MOD_INC_USE_COUNT
;
...
@@ -681,15 +635,11 @@ static int idedisk_open(struct inode *inode, struct file *__fp, struct ata_devic
...
@@ -681,15 +635,11 @@ static int idedisk_open(struct inode *inode, struct file *__fp, struct ata_devic
/*
/*
* Ignore the return code from door_lock, since the open() has
* Ignore the return code from door_lock, since the open() has
* already succeeded once, and the door_lock is irrelevant at
this
* already succeeded once, and the door_lock is irrelevant at
* time.
* t
his t
ime.
*/
*/
if
(
drive
->
doorlocking
)
{
if
(
drive
->
doorlocking
)
{
struct
ata_taskfile
args
;
if
(
simple_taskfile
(
drive
,
WIN_DOORLOCK
))
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
cmd
=
WIN_DOORLOCK
;
if
(
ide_raw_taskfile
(
drive
,
&
args
))
drive
->
doorlocking
=
0
;
drive
->
doorlocking
=
0
;
}
}
}
}
...
@@ -699,30 +649,21 @@ static int idedisk_open(struct inode *inode, struct file *__fp, struct ata_devic
...
@@ -699,30 +649,21 @@ static int idedisk_open(struct inode *inode, struct file *__fp, struct ata_devic
static
int
flush_cache
(
struct
ata_device
*
drive
)
static
int
flush_cache
(
struct
ata_device
*
drive
)
{
{
struct
ata_taskfile
args
;
u8
cmd
;
memset
(
&
args
,
0
,
sizeof
(
args
));
if
(
drive
->
id
->
cfs_enable_2
&
0x2400
)
if
(
drive
->
id
->
cfs_enable_2
&
0x2400
)
args
.
cmd
=
WIN_FLUSH_CACHE_EXT
;
cmd
=
WIN_FLUSH_CACHE_EXT
;
else
else
args
.
cmd
=
WIN_FLUSH_CACHE
;
cmd
=
WIN_FLUSH_CACHE
;
return
ide_raw_taskfile
(
drive
,
&
args
);
return
simple_taskfile
(
drive
,
cmd
);
}
}
static
void
idedisk_release
(
struct
inode
*
inode
,
struct
file
*
filp
,
struct
ata_device
*
drive
)
static
void
idedisk_release
(
struct
inode
*
inode
,
struct
file
*
filp
,
struct
ata_device
*
drive
)
{
{
if
(
drive
->
removable
&&
!
drive
->
usage
)
{
if
(
drive
->
removable
&&
!
drive
->
usage
)
{
/* XXX I don't think this is up to the lowlevel drivers.. --hch */
invalidate_bdev
(
inode
->
i_bdev
,
0
);
if
(
drive
->
doorlocking
)
{
if
(
drive
->
doorlocking
)
{
struct
ata_taskfile
args
;
if
(
simple_taskfile
(
drive
,
WIN_DOORUNLOCK
))
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
cmd
=
WIN_DOORUNLOCK
;
if
(
ide_raw_taskfile
(
drive
,
&
args
))
drive
->
doorlocking
=
0
;
drive
->
doorlocking
=
0
;
}
}
}
}
...
@@ -769,7 +710,7 @@ static int set_multcount(struct ata_device *drive, int arg)
...
@@ -769,7 +710,7 @@ static int set_multcount(struct ata_device *drive, int arg)
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
sector_count
=
arg
;
args
.
taskfile
.
sector_count
=
arg
;
args
.
cmd
=
WIN_SETMULT
;
args
.
cmd
=
WIN_SETMULT
;
if
(
!
ide_raw_taskfile
(
drive
,
&
args
))
{
if
(
!
ide_raw_taskfile
(
drive
,
&
args
,
NULL
))
{
/* all went well track this setting as valid */
/* all went well track this setting as valid */
drive
->
mult_count
=
arg
;
drive
->
mult_count
=
arg
;
...
@@ -798,7 +739,7 @@ static int write_cache(struct ata_device *drive, int arg)
...
@@ -798,7 +739,7 @@ static int write_cache(struct ata_device *drive, int arg)
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
(
arg
)
?
SETFEATURES_EN_WCACHE
:
SETFEATURES_DIS_WCACHE
;
args
.
taskfile
.
feature
=
(
arg
)
?
SETFEATURES_EN_WCACHE
:
SETFEATURES_DIS_WCACHE
;
args
.
cmd
=
WIN_SETFEATURES
;
args
.
cmd
=
WIN_SETFEATURES
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
drive
->
wcache
=
arg
;
drive
->
wcache
=
arg
;
...
@@ -807,11 +748,7 @@ static int write_cache(struct ata_device *drive, int arg)
...
@@ -807,11 +748,7 @@ static int write_cache(struct ata_device *drive, int arg)
static
int
idedisk_standby
(
struct
ata_device
*
drive
)
static
int
idedisk_standby
(
struct
ata_device
*
drive
)
{
{
struct
ata_taskfile
args
;
return
simple_taskfile
(
drive
,
WIN_STANDBYNOW1
);
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
cmd
=
WIN_STANDBYNOW1
;
return
ide_raw_taskfile
(
drive
,
&
args
);
}
}
static
int
set_acoustic
(
struct
ata_device
*
drive
,
int
arg
)
static
int
set_acoustic
(
struct
ata_device
*
drive
,
int
arg
)
...
@@ -822,7 +759,7 @@ static int set_acoustic(struct ata_device *drive, int arg)
...
@@ -822,7 +759,7 @@ static int set_acoustic(struct ata_device *drive, int arg)
args
.
taskfile
.
feature
=
(
arg
)
?
SETFEATURES_EN_AAM
:
SETFEATURES_DIS_AAM
;
args
.
taskfile
.
feature
=
(
arg
)
?
SETFEATURES_EN_AAM
:
SETFEATURES_DIS_AAM
;
args
.
taskfile
.
sector_count
=
arg
;
args
.
taskfile
.
sector_count
=
arg
;
args
.
cmd
=
WIN_SETFEATURES
;
args
.
cmd
=
WIN_SETFEATURES
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
drive
->
acoustic
=
arg
;
drive
->
acoustic
=
arg
;
...
@@ -942,7 +879,7 @@ static unsigned long native_max_address(struct ata_device *drive)
...
@@ -942,7 +879,7 @@ static unsigned long native_max_address(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
device_head
=
0x40
;
args
.
taskfile
.
device_head
=
0x40
;
args
.
cmd
=
WIN_READ_NATIVE_MAX
;
args
.
cmd
=
WIN_READ_NATIVE_MAX
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
/* if OK, compute maximum address value */
/* if OK, compute maximum address value */
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
...
@@ -964,10 +901,9 @@ static u64 native_max_address_ext(struct ata_device *drive)
...
@@ -964,10 +901,9 @@ static u64 native_max_address_ext(struct ata_device *drive)
/* Create IDE/ATA command request structure */
/* Create IDE/ATA command request structure */
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
device_head
=
0x40
;
args
.
taskfile
.
device_head
=
0x40
;
args
.
cmd
=
WIN_READ_NATIVE_MAX_EXT
;
args
.
cmd
=
WIN_READ_NATIVE_MAX_EXT
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
/* if OK, compute maximum address value */
/* if OK, compute maximum address value */
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
...
@@ -1005,7 +941,7 @@ static sector_t set_max_address(struct ata_device *drive, sector_t addr_req)
...
@@ -1005,7 +941,7 @@ static sector_t set_max_address(struct ata_device *drive, sector_t addr_req)
args
.
taskfile
.
device_head
=
((
addr_req
>>
24
)
&
0x0f
)
|
0x40
;
args
.
taskfile
.
device_head
=
((
addr_req
>>
24
)
&
0x0f
)
|
0x40
;
args
.
cmd
=
WIN_SET_MAX
;
args
.
cmd
=
WIN_SET_MAX
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
/* if OK, read new maximum address value */
/* if OK, read new maximum address value */
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
...
@@ -1038,7 +974,7 @@ static u64 set_max_address_ext(struct ata_device *drive, u64 addr_req)
...
@@ -1038,7 +974,7 @@ static u64 set_max_address_ext(struct ata_device *drive, u64 addr_req)
args
.
hobfile
.
high_cylinder
=
(
addr_req
>>=
8
);
args
.
hobfile
.
high_cylinder
=
(
addr_req
>>=
8
);
args
.
hobfile
.
device_head
=
0x40
;
args
.
hobfile
.
device_head
=
0x40
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
/* if OK, compute maximum address value */
/* if OK, compute maximum address value */
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
...
...
drivers/ide/ide-pmac.c
View file @
509c4ed3
...
@@ -341,21 +341,6 @@ pmac_ide_init_hwif_ports(hw_regs_t *hw,
...
@@ -341,21 +341,6 @@ pmac_ide_init_hwif_ports(hw_regs_t *hw,
}
}
}
}
#if 0
/* This one could be later extended to handle CMD IDE and be used by some kind
* of /proc interface. I want to be able to get the devicetree path of a block
* device for yaboot configuration
*/
struct device_node*
pmac_ide_get_devnode(struct ata_device *drive)
{
int i = pmac_ide_find(drive);
if (i < 0)
return NULL;
return pmac_ide[i].node;
}
#endif
/* Setup timings for the selected drive (master/slave). I still need to verify if this
/* Setup timings for the selected drive (master/slave). I still need to verify if this
* is enough, I beleive selectproc will be called whenever an IDE command is started,
* is enough, I beleive selectproc will be called whenever an IDE command is started,
* but... */
* but... */
...
@@ -1365,7 +1350,7 @@ static int pmac_udma_start(struct ata_device *drive, struct request *rq)
...
@@ -1365,7 +1350,7 @@ static int pmac_udma_start(struct ata_device *drive, struct request *rq)
*/
*/
ix
=
pmac_ide_find
(
drive
);
ix
=
pmac_ide_find
(
drive
);
if
(
ix
<
0
)
if
(
ix
<
0
)
return
ide_st
art
ed
;
return
ide_st
opp
ed
;
dma
=
pmac_ide
[
ix
].
dma_regs
;
dma
=
pmac_ide
[
ix
].
dma_regs
;
ata4
=
(
pmac_ide
[
ix
].
kind
==
controller_kl_ata4
||
ata4
=
(
pmac_ide
[
ix
].
kind
==
controller_kl_ata4
||
...
...
drivers/ide/ide-taskfile.c
View file @
509c4ed3
...
@@ -242,8 +242,9 @@ int ide_do_drive_cmd(struct ata_device *drive, struct request *rq, ide_action_t
...
@@ -242,8 +242,9 @@ int ide_do_drive_cmd(struct ata_device *drive, struct request *rq, ide_action_t
/*
/*
* Invoked on completion of a special REQ_SPECIAL command.
* Invoked on completion of a special REQ_SPECIAL command.
*/
*/
ide_startstop_t
ata_special_intr
(
struct
ata_device
*
drive
,
struct
static
ide_startstop_t
special_intr
(
struct
ata_device
*
drive
,
request
*
rq
)
{
struct
request
*
rq
)
{
struct
ata_taskfile
*
ar
=
rq
->
special
;
struct
ata_taskfile
*
ar
=
rq
->
special
;
ide_startstop_t
ret
=
ide_stopped
;
ide_startstop_t
ret
=
ide_stopped
;
...
@@ -292,16 +293,18 @@ ide_startstop_t ata_special_intr(struct ata_device *drive, struct
...
@@ -292,16 +293,18 @@ ide_startstop_t ata_special_intr(struct ata_device *drive, struct
return
ret
;
return
ret
;
}
}
int
ide_raw_taskfile
(
struct
ata_device
*
drive
,
struct
ata_taskfile
*
ar
)
int
ide_raw_taskfile
(
struct
ata_device
*
drive
,
struct
ata_taskfile
*
ar
,
char
*
buffer
)
{
{
struct
request
req
;
struct
request
req
;
ar
->
command_type
=
IDE_DRIVE_TASK_NO_DATA
;
ar
->
command_type
=
IDE_DRIVE_TASK_NO_DATA
;
ar
->
XXX_handler
=
ata_
special_intr
;
ar
->
XXX_handler
=
special_intr
;
memset
(
&
req
,
0
,
sizeof
(
req
));
memset
(
&
req
,
0
,
sizeof
(
req
));
req
.
flags
=
REQ_SPECIAL
;
req
.
flags
=
REQ_SPECIAL
;
req
.
special
=
ar
;
req
.
special
=
ar
;
req
.
buffer
=
buffer
;
return
ide_do_drive_cmd
(
drive
,
&
req
,
ide_wait
);
return
ide_do_drive_cmd
(
drive
,
&
req
,
ide_wait
);
}
}
...
@@ -310,5 +313,4 @@ EXPORT_SYMBOL(drive_is_ready);
...
@@ -310,5 +313,4 @@ EXPORT_SYMBOL(drive_is_ready);
EXPORT_SYMBOL
(
ide_do_drive_cmd
);
EXPORT_SYMBOL
(
ide_do_drive_cmd
);
EXPORT_SYMBOL
(
ata_read
);
EXPORT_SYMBOL
(
ata_read
);
EXPORT_SYMBOL
(
ata_write
);
EXPORT_SYMBOL
(
ata_write
);
EXPORT_SYMBOL
(
ata_special_intr
);
EXPORT_SYMBOL
(
ide_raw_taskfile
);
EXPORT_SYMBOL
(
ide_raw_taskfile
);
drivers/ide/ide.c
View file @
509c4ed3
...
@@ -560,7 +560,7 @@ static int do_recalibrate(struct ata_device *drive)
...
@@ -560,7 +560,7 @@ static int do_recalibrate(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
sector_count
=
drive
->
sect
;
args
.
taskfile
.
sector_count
=
drive
->
sect
;
args
.
cmd
=
WIN_RESTORE
;
args
.
cmd
=
WIN_RESTORE
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
printk
(
KERN_INFO
"%s: done!
\n
"
,
drive
->
name
);
printk
(
KERN_INFO
"%s: done!
\n
"
,
drive
->
name
);
}
}
...
...
drivers/ide/ioctl.c
View file @
509c4ed3
...
@@ -47,7 +47,6 @@ static int do_cmd_ioctl(struct ata_device *drive, unsigned long arg)
...
@@ -47,7 +47,6 @@ static int do_cmd_ioctl(struct ata_device *drive, unsigned long arg)
u8
*
argbuf
=
vals
;
u8
*
argbuf
=
vals
;
int
argsize
=
4
;
int
argsize
=
4
;
struct
ata_taskfile
args
;
struct
ata_taskfile
args
;
struct
request
req
;
/* Second phase.
/* Second phase.
*/
*/
...
@@ -78,17 +77,7 @@ static int do_cmd_ioctl(struct ata_device *drive, unsigned long arg)
...
@@ -78,17 +77,7 @@ static int do_cmd_ioctl(struct ata_device *drive, unsigned long arg)
memset
(
argbuf
+
4
,
0
,
argsize
-
4
);
memset
(
argbuf
+
4
,
0
,
argsize
-
4
);
}
}
/* Issue ATA command and wait for completion.
err
=
ide_raw_taskfile
(
drive
,
&
args
,
argbuf
+
4
);
*/
args
.
command_type
=
IDE_DRIVE_TASK_NO_DATA
;
args
.
XXX_handler
=
ata_special_intr
;
memset
(
&
req
,
0
,
sizeof
(
req
));
req
.
flags
=
REQ_SPECIAL
;
req
.
special
=
&
args
;
req
.
buffer
=
argbuf
+
4
;
err
=
ide_do_drive_cmd
(
drive
,
&
req
,
ide_wait
);
argbuf
[
0
]
=
drive
->
status
;
argbuf
[
0
]
=
drive
->
status
;
argbuf
[
1
]
=
args
.
taskfile
.
feature
;
argbuf
[
1
]
=
args
.
taskfile
.
feature
;
...
...
drivers/ide/it8172.c
View file @
509c4ed3
...
@@ -45,21 +45,11 @@
...
@@ -45,21 +45,11 @@
#include "ata-timing.h"
#include "ata-timing.h"
#include "pcihost.h"
#include "pcihost.h"
/*
* Prototypes
*/
static
void
it8172_tune_drive
(
struct
ata_device
*
drive
,
byte
pio
);
#if defined(CONFIG_BLK_DEV_IDEDMA) && defined(CONFIG_IT8172_TUNING)
static
byte
it8172_dma_2_pio
(
byte
xfer_rate
);
static
int
it8172_tune_chipset
(
struct
ata_device
*
drive
,
byte
speed
);
static
int
it8172_config_chipset_for_dma
(
struct
ata_device
*
drive
);
static
int
it8172_dmaproc
(
ide_dma_action_t
func
,
struct
ata_device
*
drive
);
#endif
void
__init
ide_init_it8172
(
struct
ata_channel
*
channel
);
static
void
it8172_tune_drive
(
struct
ata_device
*
drive
,
byte
pio
)
/* FIXME: fix locking --bkz */
static
void
it8172_tune_drive
(
struct
ata_device
*
drive
,
u8
pio
)
{
{
struct
pci_dev
*
dev
=
drive
->
channel
->
pci_dev
;
unsigned
long
flags
;
unsigned
long
flags
;
u16
drive_enables
;
u16
drive_enables
;
u32
drive_timing
;
u32
drive_timing
;
...
@@ -70,8 +60,8 @@ static void it8172_tune_drive (struct ata_device *drive, byte pio)
...
@@ -70,8 +60,8 @@ static void it8172_tune_drive (struct ata_device *drive, byte pio)
else
else
pio
=
min_t
(
byte
,
pio
,
4
);
pio
=
min_t
(
byte
,
pio
,
4
);
pci_read_config_word
(
drive
->
channel
->
pci_
dev
,
master_port
,
&
master_data
);
pci_read_config_word
(
dev
,
master_port
,
&
master_data
);
pci_read_config_dword
(
drive
->
channel
->
pci_
dev
,
slave_port
,
&
slave_data
);
pci_read_config_dword
(
dev
,
slave_port
,
&
slave_data
);
/*
/*
* FIX! The DIOR/DIOW pulse width and recovery times in port 0x44
* FIX! The DIOR/DIOW pulse width and recovery times in port 0x44
...
@@ -102,7 +92,7 @@ static void it8172_tune_drive (struct ata_device *drive, byte pio)
...
@@ -102,7 +92,7 @@ static void it8172_tune_drive (struct ata_device *drive, byte pio)
save_flags
(
flags
);
save_flags
(
flags
);
cli
();
cli
();
pci_write_config_word
(
drive
->
channel
->
pci_
dev
,
master_port
,
master_data
);
pci_write_config_word
(
dev
,
master_port
,
master_data
);
restore_flags
(
flags
);
restore_flags
(
flags
);
}
}
...
@@ -110,7 +100,7 @@ static void it8172_tune_drive (struct ata_device *drive, byte pio)
...
@@ -110,7 +100,7 @@ static void it8172_tune_drive (struct ata_device *drive, byte pio)
/*
/*
*
*
*/
*/
static
byte
it8172_dma_2_pio
(
byte
xfer_rate
)
static
u8
it8172_dma_2_pio
(
u8
xfer_rate
)
{
{
switch
(
xfer_rate
)
{
switch
(
xfer_rate
)
{
case
XFER_UDMA_5
:
case
XFER_UDMA_5
:
...
@@ -139,7 +129,7 @@ static byte it8172_dma_2_pio (byte xfer_rate)
...
@@ -139,7 +129,7 @@ static byte it8172_dma_2_pio (byte xfer_rate)
}
}
}
}
static
int
it8172_tune_chipset
(
struct
ata_device
*
drive
,
byte
speed
)
static
int
it8172_tune_chipset
(
struct
ata_device
*
drive
,
u8
speed
)
{
{
struct
ata_channel
*
hwif
=
drive
->
channel
;
struct
ata_channel
*
hwif
=
drive
->
channel
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
...
@@ -147,7 +137,7 @@ static int it8172_tune_chipset (struct ata_device *drive, byte speed)
...
@@ -147,7 +137,7 @@ static int it8172_tune_chipset (struct ata_device *drive, byte speed)
int
u_flag
=
1
<<
drive
->
dn
;
int
u_flag
=
1
<<
drive
->
dn
;
int
u_speed
=
0
;
int
u_speed
=
0
;
int
err
=
0
;
int
err
=
0
;
byte
reg48
,
reg4a
;
u8
reg48
,
reg4a
;
pci_read_config_byte
(
dev
,
0x48
,
&
reg48
);
pci_read_config_byte
(
dev
,
0x48
,
&
reg48
);
pci_read_config_byte
(
dev
,
0x4a
,
&
reg4a
);
pci_read_config_byte
(
dev
,
0x4a
,
&
reg4a
);
...
@@ -187,52 +177,28 @@ static int it8172_tune_chipset (struct ata_device *drive, byte speed)
...
@@ -187,52 +177,28 @@ static int it8172_tune_chipset (struct ata_device *drive, byte speed)
it8172_tune_drive
(
drive
,
it8172_dma_2_pio
(
speed
));
it8172_tune_drive
(
drive
,
it8172_dma_2_pio
(
speed
));
err
=
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
speed
);
drive
->
current_speed
=
speed
;
return
err
;
}
}
static
int
it8172_
config_chipset_for_dma
(
struct
ata_device
*
drive
)
static
int
it8172_
udma_setup
(
struct
ata_device
*
drive
)
{
{
struct
hd_driveid
*
id
=
drive
->
id
;
u8
speed
=
ata_timing_mode
(
drive
,
XFER_PIO
|
XFER_EPIO
|
byte
speed
;
XFER_SWDMA
|
XFER_MWDMA
|
XFER_UDMA
);
speed
=
ata_timing_mode
(
drive
,
XFER_PIO
|
XFER_EPIO
|
XFER_SWDMA
|
XFER_MWDMA
|
XFER_UDMA
);
(
void
)
it8172_tune_chipset
(
drive
,
speed
);
return
!
it8172_tune_chipset
(
drive
,
speed
);
return
((
int
)((
id
->
dma_ultra
>>
11
)
&
7
)
?
ide_dma_on
:
((
id
->
dma_ultra
>>
8
)
&
7
)
?
ide_dma_on
:
((
id
->
dma_mword
>>
8
)
&
7
)
?
ide_dma_on
:
((
id
->
dma_1word
>>
8
)
&
7
)
?
ide_dma_on
:
ide_dma_off_quietly
);
}
static
int
it8172_dmaproc
(
ide_dma_action_t
func
,
struct
ata_device
*
drive
)
{
switch
(
func
)
{
case
ide_dma_check
:
return
ide_dmaproc
((
ide_dma_action_t
)
it8172_config_chipset_for_dma
(
drive
),
drive
);
default
:
break
;
}
/* Other cases are done by generic IDE-DMA code. */
return
ide_dmaproc
(
func
,
drive
);
}
}
#endif
/* defined(CONFIG_BLK_DEV_IDEDMA) && (CONFIG_IT8172_TUNING) */
#endif
/* defined(CONFIG_BLK_DEV_IDEDMA) && (CONFIG_IT8172_TUNING) */
static
unsigned
int
__init
pci_init_it8172
(
struct
pci_dev
*
dev
)
static
unsigned
int
__init
pci_init_it8172
(
struct
pci_dev
*
dev
)
{
{
unsigned
char
progif
;
u8
progif
;
/*
/*
* Place both IDE interfaces into PCI "native" mode
* Place both IDE interfaces into PCI "native" mode
*/
*/
(
void
)
pci_read_config_byte
(
dev
,
PCI_CLASS_PROG
,
&
progif
);
pci_read_config_byte
(
dev
,
PCI_CLASS_PROG
,
&
progif
);
(
void
)
pci_write_config_byte
(
dev
,
PCI_CLASS_PROG
,
progif
|
0x05
);
pci_write_config_byte
(
dev
,
PCI_CLASS_PROG
,
progif
|
0x05
);
return
IT8172_IDE_IRQ
;
return
IT8172_IDE_IRQ
;
}
}
...
...
drivers/ide/opti621.c
View file @
509c4ed3
...
@@ -342,9 +342,8 @@ int __init init_opti621(void)
...
@@ -342,9 +342,8 @@ int __init init_opti621(void)
{
{
int
i
;
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
chipsets
);
++
i
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
chipsets
);
++
i
)
ata_register_chipset
(
&
chipsets
[
i
]);
ata_register_chipset
(
&
chipsets
[
i
]);
}
return
0
;
return
0
;
}
}
drivers/ide/pcidma.c
View file @
509c4ed3
...
@@ -415,7 +415,7 @@ void udma_destroy_table(struct ata_channel *ch)
...
@@ -415,7 +415,7 @@ void udma_destroy_table(struct ata_channel *ch)
*
*
* Channel lock should be held.
* Channel lock should be held.
*/
*/
int
udma_pci_start
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
void
udma_pci_start
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
{
{
struct
ata_channel
*
ch
=
drive
->
channel
;
struct
ata_channel
*
ch
=
drive
->
channel
;
unsigned
long
dma_base
=
ch
->
dma_base
;
unsigned
long
dma_base
=
ch
->
dma_base
;
...
...
drivers/ide/pdc202xx.c
View file @
509c4ed3
...
@@ -230,8 +230,6 @@ static int pdc202xx_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -230,8 +230,6 @@ static int pdc202xx_tune_chipset(struct ata_device *drive, byte speed)
printk
(
KERN_DEBUG
"DP(%x)
\n
"
,
DP
);
printk
(
KERN_DEBUG
"DP(%x)
\n
"
,
DP
);
#endif
#endif
drive
->
current_speed
=
speed
;
#if PDC202XX_DEBUG_DRIVE_INFO
#if PDC202XX_DEBUG_DRIVE_INFO
printk
(
"%s: %02x drive%d 0x%08x "
,
printk
(
"%s: %02x drive%d 0x%08x "
,
drive
->
name
,
speed
,
drive
->
name
,
speed
,
...
@@ -352,8 +350,6 @@ static int pdc202xx_new_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -352,8 +350,6 @@ static int pdc202xx_new_tune_chipset(struct ata_device *drive, byte speed)
;
;
}
}
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
...
@@ -551,7 +547,7 @@ static int pdc202xx_udma_setup(struct ata_device *drive)
...
@@ -551,7 +547,7 @@ static int pdc202xx_udma_setup(struct ata_device *drive)
return
0
;
return
0
;
}
}
static
int
pdc202xx_udma_start
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
static
void
pdc202xx_udma_start
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
{
{
struct
ata_channel
*
ch
=
drive
->
channel
;
struct
ata_channel
*
ch
=
drive
->
channel
;
u32
high_16
=
pci_resource_start
(
ch
->
pci_dev
,
4
);
u32
high_16
=
pci_resource_start
(
ch
->
pci_dev
,
4
);
...
...
drivers/ide/piix.c
View file @
509c4ed3
...
@@ -222,8 +222,6 @@ static int piix_set_drive(struct ata_device *drive, unsigned char speed)
...
@@ -222,8 +222,6 @@ static int piix_set_drive(struct ata_device *drive, unsigned char speed)
piix_set_speed
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
,
umul
);
piix_set_speed
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
,
umul
);
drive
->
current_speed
=
speed
;
return
0
;
return
0
;
}
}
...
...
drivers/ide/probe.c
View file @
509c4ed3
...
@@ -339,6 +339,8 @@ int ide_config_drive_speed(struct ata_device *drive, byte speed)
...
@@ -339,6 +339,8 @@ int ide_config_drive_speed(struct ata_device *drive, byte speed)
ata_irq_enable
(
drive
,
1
);
ata_irq_enable
(
drive
,
1
);
udelay
(
1
);
udelay
(
1
);
/* FIXME: use ata_status_poll() --bkz */
ata_busy_poll
(
drive
,
WAIT_CMD
);
ata_busy_poll
(
drive
,
WAIT_CMD
);
/*
/*
...
@@ -395,6 +397,8 @@ int ide_config_drive_speed(struct ata_device *drive, byte speed)
...
@@ -395,6 +397,8 @@ int ide_config_drive_speed(struct ata_device *drive, byte speed)
default:
break
;
default:
break
;
}
}
drive
->
current_speed
=
speed
;
return
error
;
return
error
;
}
}
...
...
drivers/ide/serverworks.c
View file @
509c4ed3
...
@@ -123,23 +123,21 @@ static int svwks_ratemask(struct ata_device *drive)
...
@@ -123,23 +123,21 @@ static int svwks_ratemask(struct ata_device *drive)
return
map
;
return
map
;
}
}
static
int
svwks_tune_chipset
(
struct
ata_device
*
drive
,
byte
speed
)
static
int
svwks_tune_chipset
(
struct
ata_device
*
drive
,
u8
speed
)
{
{
static
u8
dma_modes
[]
=
{
0x77
,
0x21
,
0x20
};
static
u8
dma_modes
[]
=
{
0x77
,
0x21
,
0x20
};
static
u8
pio_modes
[]
=
{
0x5d
,
0x47
,
0x34
,
0x22
,
0x20
};
static
u8
pio_modes
[]
=
{
0x5d
,
0x47
,
0x34
,
0x22
,
0x20
};
struct
ata_channel
*
hwif
=
drive
->
channel
;
struct
ata_channel
*
ch
=
drive
->
channel
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
struct
pci_dev
*
dev
=
ch
->
pci_dev
;
byte
unit
=
(
drive
->
select
.
b
.
unit
&
0x01
);
u8
unit
=
drive
->
select
.
b
.
unit
&
0x01
;
byte
csb5
=
(
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
)
?
1
:
0
;
u8
drive_pci
,
drive_pci2
;
u8
drive_pci3
=
ch
->
unit
?
0x57
:
0x56
;
byte
drive_pci
,
drive_pci2
;
byte
drive_pci3
=
hwif
->
unit
?
0x57
:
0x56
;
byte
ultra_enable
,
ultra_timing
,
dma_timing
,
pio_timing
;
u8
ultra_enable
,
ultra_timing
,
dma_timing
,
pio_timing
;
u
nsigned
short
csb5_pio
;
u
16
csb5_pio
;
byte
pio
=
ata_timing_mode
(
drive
,
XFER_PIO
|
XFER_EPIO
)
-
XFER_PIO_0
;
u8
pio
=
ata_timing_mode
(
drive
,
XFER_PIO
|
XFER_EPIO
)
-
XFER_PIO_0
;
switch
(
drive
->
dn
)
{
switch
(
drive
->
dn
)
{
case
0
:
drive_pci
=
0x41
;
break
;
case
0
:
drive_pci
=
0x41
;
break
;
...
@@ -213,7 +211,8 @@ static int svwks_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -213,7 +211,8 @@ static int svwks_tune_chipset(struct ata_device *drive, byte speed)
#endif
#endif
pci_write_config_byte
(
dev
,
drive_pci
,
pio_timing
);
pci_write_config_byte
(
dev
,
drive_pci
,
pio_timing
);
if
(
csb5
)
if
(
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
)
pci_write_config_word
(
dev
,
0x4A
,
csb5_pio
);
pci_write_config_word
(
dev
,
0x4A
,
csb5_pio
);
#ifdef CONFIG_BLK_DEV_IDEDMA
#ifdef CONFIG_BLK_DEV_IDEDMA
...
@@ -221,29 +220,20 @@ static int svwks_tune_chipset(struct ata_device *drive, byte speed)
...
@@ -221,29 +220,20 @@ static int svwks_tune_chipset(struct ata_device *drive, byte speed)
pci_write_config_byte
(
dev
,
drive_pci3
,
ultra_timing
);
pci_write_config_byte
(
dev
,
drive_pci3
,
ultra_timing
);
pci_write_config_byte
(
dev
,
0x54
,
ultra_enable
);
pci_write_config_byte
(
dev
,
0x54
,
ultra_enable
);
#endif
#endif
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
static
void
svwks_tune_drive
(
struct
ata_device
*
drive
,
byte
pio
)
static
void
svwks_tune_drive
(
struct
ata_device
*
drive
,
u8
pio
)
{
{
byte
speed
;
(
void
)
svwks_tune_chipset
(
drive
,
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
));
switch
(
pio
)
{
case
4
:
speed
=
XFER_PIO_4
;
break
;
case
3
:
speed
=
XFER_PIO_3
;
break
;
case
2
:
speed
=
XFER_PIO_2
;
break
;
case
1
:
speed
=
XFER_PIO_1
;
break
;
default:
speed
=
XFER_PIO_0
;
break
;
}
(
void
)
svwks_tune_chipset
(
drive
,
speed
);
}
}
#ifdef CONFIG_BLK_DEV_IDEDMA
#ifdef CONFIG_BLK_DEV_IDEDMA
static
int
config_chipset_for_dma
(
struct
ata_device
*
drive
)
static
int
config_chipset_for_dma
(
struct
ata_device
*
drive
)
{
{
int
map
;
int
map
;
byte
mode
;
u8
mode
;
/* FIXME: check SWDMA modes --bkz */
/* FIXME: check SWDMA modes --bkz */
map
=
XFER_MWDMA
|
svwks_ratemask
(
drive
);
map
=
XFER_MWDMA
|
svwks_ratemask
(
drive
);
...
@@ -354,7 +344,7 @@ static int svwks_udma_stop(struct ata_device *drive)
...
@@ -354,7 +344,7 @@ static int svwks_udma_stop(struct ata_device *drive)
static
unsigned
int
__init
svwks_init_chipset
(
struct
pci_dev
*
dev
)
static
unsigned
int
__init
svwks_init_chipset
(
struct
pci_dev
*
dev
)
{
{
unsigned
int
reg
;
unsigned
int
reg
;
byte
btr
;
u8
btr
;
/* save revision id to determine DMA capability */
/* save revision id to determine DMA capability */
pci_read_config_byte
(
dev
,
PCI_REVISION_ID
,
&
svwks_revision
);
pci_read_config_byte
(
dev
,
PCI_REVISION_ID
,
&
svwks_revision
);
...
@@ -404,8 +394,7 @@ static unsigned int __init svwks_init_chipset(struct pci_dev *dev)
...
@@ -404,8 +394,7 @@ static unsigned int __init svwks_init_chipset(struct pci_dev *dev)
static
unsigned
int
__init
ata66_svwks_dell
(
struct
ata_channel
*
hwif
)
static
unsigned
int
__init
ata66_svwks_dell
(
struct
ata_channel
*
hwif
)
{
{
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
if
(
dev
->
subsystem_vendor
==
PCI_VENDOR_ID_DELL
&&
if
(
dev
->
vendor
==
PCI_VENDOR_ID_SERVERWORKS
&&
dev
->
vendor
==
PCI_VENDOR_ID_SERVERWORKS
&&
(
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
||
(
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
||
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB6IDE
))
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB6IDE
))
return
((
1
<<
(
hwif
->
unit
+
14
))
&
return
((
1
<<
(
hwif
->
unit
+
14
))
&
...
@@ -422,8 +411,7 @@ static unsigned int __init ata66_svwks_dell(struct ata_channel *hwif)
...
@@ -422,8 +411,7 @@ static unsigned int __init ata66_svwks_dell(struct ata_channel *hwif)
static
unsigned
int
__init
ata66_svwks_cobalt
(
struct
ata_channel
*
hwif
)
static
unsigned
int
__init
ata66_svwks_cobalt
(
struct
ata_channel
*
hwif
)
{
{
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
if
(
dev
->
subsystem_vendor
==
PCI_VENDOR_ID_SUN
&&
if
(
dev
->
vendor
==
PCI_VENDOR_ID_SERVERWORKS
&&
dev
->
vendor
==
PCI_VENDOR_ID_SERVERWORKS
&&
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
)
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
)
return
((
1
<<
(
hwif
->
unit
+
14
))
&
return
((
1
<<
(
hwif
->
unit
+
14
))
&
dev
->
subsystem_device
)
?
1
:
0
;
dev
->
subsystem_device
)
?
1
:
0
;
...
@@ -501,9 +489,8 @@ int __init init_svwks(void)
...
@@ -501,9 +489,8 @@ int __init init_svwks(void)
{
{
int
i
;
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
chipsets
);
++
i
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
chipsets
);
++
i
)
ata_register_chipset
(
&
chipsets
[
i
]);
ata_register_chipset
(
&
chipsets
[
i
]);
}
return
0
;
return
0
;
}
}
drivers/ide/sis5513.c
View file @
509c4ed3
...
@@ -267,7 +267,7 @@ static int config_art_rwp_pio(struct ata_device *drive, u8 pio)
...
@@ -267,7 +267,7 @@ static int config_art_rwp_pio(struct ata_device *drive, u8 pio)
{
{
struct
ata_channel
*
hwif
=
drive
->
channel
;
struct
ata_channel
*
hwif
=
drive
->
channel
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
u8
drive_pci
,
test1
,
test2
,
speed
;
u8
drive_pci
,
test1
,
test2
;
#ifdef DEBUG
#ifdef DEBUG
sis5513_load_verify_registers
(
dev
,
"config_drive_art_rwp_pio start"
);
sis5513_load_verify_registers
(
dev
,
"config_drive_art_rwp_pio start"
);
...
@@ -280,13 +280,10 @@ static int config_art_rwp_pio(struct ata_device *drive, u8 pio)
...
@@ -280,13 +280,10 @@ static int config_art_rwp_pio(struct ata_device *drive, u8 pio)
drive
->
dn
,
pio
,
timing
);
drive
->
dn
,
pio
,
timing
);
#endif
#endif
switch
(
drive
->
dn
)
{
if
(
drive
->
dn
>
3
)
/* FIXME: remove this --bkz */
case
0
:
drive_pci
=
0x40
;
break
;
return
1
;
case
1
:
drive_pci
=
0x42
;
break
;
case
2
:
drive_pci
=
0x44
;
break
;
drive_pci
=
0x40
+
(
drive
->
dn
<<
1
);
case
3
:
drive_pci
=
0x46
;
break
;
default:
return
1
;
}
/* register layout changed with newer ATA100 chips */
/* register layout changed with newer ATA100 chips */
if
(
chipset_family
<
ATA_100
)
{
if
(
chipset_family
<
ATA_100
)
{
...
@@ -321,9 +318,8 @@ static int config_art_rwp_pio(struct ata_device *drive, u8 pio)
...
@@ -321,9 +318,8 @@ static int config_art_rwp_pio(struct ata_device *drive, u8 pio)
#ifdef DEBUG
#ifdef DEBUG
sis5513_load_verify_registers
(
dev
,
"config_drive_art_rwp_pio start"
);
sis5513_load_verify_registers
(
dev
,
"config_drive_art_rwp_pio start"
);
#endif
#endif
speed
=
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
);
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
));
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
static
int
sis5513_tune_chipset
(
struct
ata_device
*
drive
,
u8
speed
)
static
int
sis5513_tune_chipset
(
struct
ata_device
*
drive
,
u8
speed
)
...
@@ -338,13 +334,11 @@ static int sis5513_tune_chipset(struct ata_device *drive, u8 speed)
...
@@ -338,13 +334,11 @@ static int sis5513_tune_chipset(struct ata_device *drive, u8 speed)
printk
(
"SIS5513: sis5513_tune_chipset, drive %d, speed %d
\n
"
,
printk
(
"SIS5513: sis5513_tune_chipset, drive %d, speed %d
\n
"
,
drive
->
dn
,
speed
);
drive
->
dn
,
speed
);
#endif
#endif
switch
(
drive
->
dn
)
{
case
0
:
drive_pci
=
0x40
;
break
;
if
(
drive
->
dn
>
3
)
/* FIXME: remove this --bkz */
case
1
:
drive_pci
=
0x42
;
break
;
return
1
;
case
2
:
drive_pci
=
0x44
;
break
;
case
3
:
drive_pci
=
0x46
;
break
;
drive_pci
=
0x40
+
(
drive
->
dn
<<
1
);
default:
return
0
;
}
#ifdef BROKEN_LEVEL
#ifdef BROKEN_LEVEL
#ifdef DEBUG
#ifdef DEBUG
...
@@ -396,11 +390,10 @@ static int sis5513_tune_chipset(struct ata_device *drive, u8 speed)
...
@@ -396,11 +390,10 @@ static int sis5513_tune_chipset(struct ata_device *drive, u8 speed)
default:
default:
return
config_art_rwp_pio
(
drive
,
0
);
return
config_art_rwp_pio
(
drive
,
0
);
}
}
drive
->
current_speed
=
speed
;
#ifdef DEBUG
#ifdef DEBUG
sis5513_load_verify_registers
(
dev
,
"sis5513_tune_chipset end"
);
sis5513_load_verify_registers
(
dev
,
"sis5513_tune_chipset end"
);
#endif
#endif
return
((
int
)
ide_config_drive_speed
(
drive
,
speed
)
);
return
ide_config_drive_speed
(
drive
,
speed
);
}
}
static
void
sis5513_tune_drive
(
struct
ata_device
*
drive
,
u8
pio
)
static
void
sis5513_tune_drive
(
struct
ata_device
*
drive
,
u8
pio
)
...
@@ -568,8 +561,8 @@ static unsigned int __init pci_init_sis5513(struct pci_dev *dev)
...
@@ -568,8 +561,8 @@ static unsigned int __init pci_init_sis5513(struct pci_dev *dev)
static
unsigned
int
__init
ata66_sis5513
(
struct
ata_channel
*
hwif
)
static
unsigned
int
__init
ata66_sis5513
(
struct
ata_channel
*
hwif
)
{
{
byte
reg48h
=
0
,
ata66
=
0
;
u8
reg48h
,
ata66
=
0
;
byte
mask
=
hwif
->
unit
?
0x20
:
0x10
;
u8
mask
=
hwif
->
unit
?
0x20
:
0x10
;
pci_read_config_byte
(
hwif
->
pci_dev
,
0x48
,
&
reg48h
);
pci_read_config_byte
(
hwif
->
pci_dev
,
0x48
,
&
reg48h
);
if
(
chipset_family
>=
ATA_66
)
{
if
(
chipset_family
>=
ATA_66
)
{
...
...
drivers/ide/tcq.c
View file @
509c4ed3
...
@@ -430,7 +430,7 @@ static int check_autopoll(struct ata_device *drive)
...
@@ -430,7 +430,7 @@ static int check_autopoll(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
0x01
;
args
.
taskfile
.
feature
=
0x01
;
args
.
cmd
=
WIN_NOP
;
args
.
cmd
=
WIN_NOP
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
if
(
args
.
taskfile
.
feature
&
ABRT_ERR
)
if
(
args
.
taskfile
.
feature
&
ABRT_ERR
)
return
1
;
return
1
;
...
@@ -458,7 +458,7 @@ static int configure_tcq(struct ata_device *drive)
...
@@ -458,7 +458,7 @@ static int configure_tcq(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
SETFEATURES_EN_WCACHE
;
args
.
taskfile
.
feature
=
SETFEATURES_EN_WCACHE
;
args
.
cmd
=
WIN_SETFEATURES
;
args
.
cmd
=
WIN_SETFEATURES
;
if
(
ide_raw_taskfile
(
drive
,
&
args
))
{
if
(
ide_raw_taskfile
(
drive
,
&
args
,
NULL
))
{
printk
(
"%s: failed to enable write cache
\n
"
,
drive
->
name
);
printk
(
"%s: failed to enable write cache
\n
"
,
drive
->
name
);
return
1
;
return
1
;
}
}
...
@@ -470,7 +470,7 @@ static int configure_tcq(struct ata_device *drive)
...
@@ -470,7 +470,7 @@ static int configure_tcq(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
SETFEATURES_DIS_RI
;
args
.
taskfile
.
feature
=
SETFEATURES_DIS_RI
;
args
.
cmd
=
WIN_SETFEATURES
;
args
.
cmd
=
WIN_SETFEATURES
;
if
(
ide_raw_taskfile
(
drive
,
&
args
))
{
if
(
ide_raw_taskfile
(
drive
,
&
args
,
NULL
))
{
printk
(
"%s: disabling release interrupt fail
\n
"
,
drive
->
name
);
printk
(
"%s: disabling release interrupt fail
\n
"
,
drive
->
name
);
return
1
;
return
1
;
}
}
...
@@ -482,7 +482,7 @@ static int configure_tcq(struct ata_device *drive)
...
@@ -482,7 +482,7 @@ static int configure_tcq(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
SETFEATURES_EN_SI
;
args
.
taskfile
.
feature
=
SETFEATURES_EN_SI
;
args
.
cmd
=
WIN_SETFEATURES
;
args
.
cmd
=
WIN_SETFEATURES
;
if
(
ide_raw_taskfile
(
drive
,
&
args
))
{
if
(
ide_raw_taskfile
(
drive
,
&
args
,
NULL
))
{
printk
(
"%s: enabling service interrupt fail
\n
"
,
drive
->
name
);
printk
(
"%s: enabling service interrupt fail
\n
"
,
drive
->
name
);
return
1
;
return
1
;
}
}
...
...
drivers/ide/trm290.c
View file @
509c4ed3
...
@@ -176,7 +176,7 @@ static void trm290_selectproc(struct ata_device *drive)
...
@@ -176,7 +176,7 @@ static void trm290_selectproc(struct ata_device *drive)
}
}
#ifdef CONFIG_BLK_DEV_IDEDMA
#ifdef CONFIG_BLK_DEV_IDEDMA
static
int
trm290_udma_start
(
struct
ata_device
*
drive
,
struct
request
*
__rq
)
static
void
trm290_udma_start
(
struct
ata_device
*
drive
,
struct
request
*
__rq
)
{
{
/* Nothing to be done here. */
/* Nothing to be done here. */
}
}
...
...
drivers/ide/via82cxxx.c
View file @
509c4ed3
...
@@ -199,8 +199,6 @@ static int via_set_drive(struct ata_device *drive, unsigned char speed)
...
@@ -199,8 +199,6 @@ static int via_set_drive(struct ata_device *drive, unsigned char speed)
via_set_speed
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
);
via_set_speed
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
);
drive
->
current_speed
=
speed
;
return
0
;
return
0
;
}
}
...
...
fs/smbfs/smb_debug.h
View file @
509c4ed3
...
@@ -11,14 +11,14 @@
...
@@ -11,14 +11,14 @@
* these are normally enabled.
* these are normally enabled.
*/
*/
#ifdef SMBFS_PARANOIA
#ifdef SMBFS_PARANOIA
# define PARANOIA(f, a...) printk(KERN_NOTICE "%s: " f, __FUNCTION__, ## a)
# define PARANOIA(f, a...) printk(KERN_NOTICE "%s: " f, __FUNCTION__
, ## a)
#else
#else
# define PARANOIA(f, a...) do { ; } while(0)
# define PARANOIA(f, a...) do { ; } while(0)
#endif
#endif
/* lots of debug messages */
/* lots of debug messages */
#ifdef SMBFS_DEBUG_VERBOSE
#ifdef SMBFS_DEBUG_VERBOSE
# define VERBOSE(f, a...) printk(KERN_DEBUG "%s: " f, __FUNCTION__, ## a)
# define VERBOSE(f, a...) printk(KERN_DEBUG "%s: " f, __FUNCTION__
, ## a)
#else
#else
# define VERBOSE(f, a...) do { ; } while(0)
# define VERBOSE(f, a...) do { ; } while(0)
#endif
#endif
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
* too common name.
* too common name.
*/
*/
#ifdef SMBFS_DEBUG
#ifdef SMBFS_DEBUG
#define DEBUG1(
x...) printk(KERN_DEBUG __FUNCTION__ ": " x
)
#define DEBUG1(
f, a...) printk(KERN_DEBUG "%s: " f, __FUNCTION__ , ## a
)
#else
#else
#define DEBUG1(
x
...) do { ; } while(0)
#define DEBUG1(
f, a
...) do { ; } while(0)
#endif
#endif
include/linux/ide.h
View file @
509c4ed3
...
@@ -680,8 +680,7 @@ static inline void ide_unmap_rq(struct request *rq, char *to,
...
@@ -680,8 +680,7 @@ static inline void ide_unmap_rq(struct request *rq, char *to,
bio_kunmap_irq
(
to
,
flags
);
bio_kunmap_irq
(
to
,
flags
);
}
}
extern
ide_startstop_t
ata_special_intr
(
struct
ata_device
*
,
struct
request
*
);
extern
int
ide_raw_taskfile
(
struct
ata_device
*
,
struct
ata_taskfile
*
,
char
*
);
extern
int
ide_raw_taskfile
(
struct
ata_device
*
,
struct
ata_taskfile
*
);
extern
void
ide_fix_driveid
(
struct
hd_driveid
*
id
);
extern
void
ide_fix_driveid
(
struct
hd_driveid
*
id
);
extern
int
ide_config_drive_speed
(
struct
ata_device
*
,
byte
);
extern
int
ide_config_drive_speed
(
struct
ata_device
*
,
byte
);
...
@@ -785,7 +784,7 @@ static inline void udma_irq_lost(struct ata_device *drive)
...
@@ -785,7 +784,7 @@ static inline void udma_irq_lost(struct ata_device *drive)
#ifdef CONFIG_BLK_DEV_IDEDMA
#ifdef CONFIG_BLK_DEV_IDEDMA
extern
void
udma_pci_enable
(
struct
ata_device
*
drive
,
int
on
,
int
verbose
);
extern
void
udma_pci_enable
(
struct
ata_device
*
drive
,
int
on
,
int
verbose
);
extern
int
udma_pci_start
(
struct
ata_device
*
drive
,
struct
request
*
rq
);
extern
void
udma_pci_start
(
struct
ata_device
*
drive
,
struct
request
*
rq
);
extern
int
udma_pci_stop
(
struct
ata_device
*
drive
);
extern
int
udma_pci_stop
(
struct
ata_device
*
drive
);
extern
int
udma_pci_init
(
struct
ata_device
*
drive
,
struct
request
*
rq
);
extern
int
udma_pci_init
(
struct
ata_device
*
drive
,
struct
request
*
rq
);
extern
int
udma_pci_irq_status
(
struct
ata_device
*
drive
);
extern
int
udma_pci_irq_status
(
struct
ata_device
*
drive
);
...
...
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