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
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
Show 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
#define NO_MATCH { NONE, NULL}
#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
* Dell Computer Corporation so their systems "just work". :-)
...
...
@@ -511,12 +489,6 @@ static __init int print_if_true(struct dmi_blacklist *d)
*/
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 */
MATCH
(
DMI_SYS_VENDOR
,
"Dell"
),
MATCH
(
DMI_PRODUCT_NAME
,
"Latitude C600"
),
...
...
drivers/ide/Config.help
View file @
509c4ed3
...
...
@@ -372,6 +372,8 @@ CONFIG_BLK_DEV_HPT366
HPT366 is an Ultra DMA chipset for ATA-66.
HPT368 is an Ultra DMA chipset for ATA-66 RAID Based.
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
interrupt.
...
...
drivers/ide/Config.in
View file @
509c4ed3
...
...
@@ -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 ' 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_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
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
...
...
drivers/ide/aec62xx.c
View file @
509c4ed3
...
...
@@ -141,8 +141,6 @@ static int aec_set_drive(struct ata_device *drive, unsigned char speed)
else
aec_set_speed_new
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
);
drive
->
current_speed
=
speed
;
return
0
;
}
...
...
drivers/ide/alim15x3.c
View file @
509c4ed3
...
...
@@ -53,6 +53,7 @@ static void ali15x3_tune_drive(struct ata_device *drive, byte pio)
t
=
ata_timing_data
(
pio
);
/* FIXME: use generic ata-timing library --bkz */
s_time
=
t
->
setup
;
a_time
=
t
->
active
;
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)
}
#endif
/* CONFIG_BLK_DEV_IDEDMA */
drive
->
current_speed
=
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)
amd_set_speed
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
);
drive
->
current_speed
=
speed
;
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
* 8: prefetch off, 9: prefetch on, 255: auto-select best mode.
* 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
;
u8
recovery_count2
,
cycle_count
,
speed
;
int
setup_count
,
active_count
,
recovery_count
;
int
T
;
u8
speed
,
active
,
recover
;
struct
ata_timing
*
t
;
switch
(
mode_wanted
)
{
switch
(
pio
)
{
/* FIXME: b0rken --bkz */
case
8
:
/* set prefetch off */
case
9
:
/* set prefetch on */
mode_wanted
&=
1
;
pio
&=
1
;
/*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
;
}
if
(
mode_wanted
==
255
)
if
(
pio
==
255
)
speed
=
ata_best_pio_mode
(
drive
);
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
);
...
...
@@ -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.
* 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 */
T
=
1000000000
/
system_bus_speed
;
ata_timing_quantize
(
t
,
t
,
T
,
T
);
recovery_time
=
t
->
cycle
-
(
t
->
setup
+
t
->
active
);
clock_time
=
1000000
/
system_bus_speed
;
cycle_count
=
(
t
->
cycle
+
clock_time
-
1
)
/
clock_time
;
setup_count
=
(
t
->
setup
+
clock_time
-
1
)
/
clock_time
;
active_count
=
(
t
->
active
+
clock_time
-
1
)
/
clock_time
;
/* FIXME: maybe switch to ata_timing_compute() --bkz */
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
(
recovery_count2
>
recovery_count
)
recovery_count
=
recovery_count2
;
if
(
recovery_count
>
16
)
{
active_count
+=
recovery_count
-
16
;
recovery_count
=
16
;
if
(
recover
>
16
)
{
active
+=
recover
-
16
;
recover
=
16
;
}
if
(
active
_count
>
16
)
active
_count
=
16
;
/* maximum allowed by cmd
646 */
if
(
active
>
16
)
active
=
16
;
/* maximum allowed by CMD
646 */
/*
* 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)
* 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
*/
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
"
,
drive
->
name
,
t
.
mode
-
XFER_PIO_0
,
mode_wanted
,
cycle_tim
e
,
setup_count
,
active_count
,
recovery_count
);
drive
->
name
,
t
.
mode
-
XFER_PIO_0
,
pio
,
t
->
cycl
e
,
t
->
setup
,
active
,
recover
);
drive
->
current_speed
=
speed
;
ide_config_drive_speed
(
drive
,
speed
);
}
...
...
@@ -237,7 +234,7 @@ static int cmd64x_ratemask(struct ata_device *drive)
break
;
case
PCI_DEVICE_ID_CMD_646
:
{
u
nsigned
int
class_rev
=
0
;
u
32
class_rev
;
pci_read_config_dword
(
dev
,
PCI_CLASS_REVISION
,
&
class_rev
);
class_rev
&=
0xff
;
...
...
@@ -332,11 +329,10 @@ static void cmd680_tuneproc(struct ata_device *drive, u8 pio)
speed
=
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
);
drive
->
current_speed
=
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
struct
ata_channel
*
hwif
=
drive
->
channel
;
...
...
@@ -345,34 +341,40 @@ static int cmd64x_tune_chipset(struct ata_device *drive, byte speed)
u8
unit
=
(
drive
->
select
.
b
.
unit
&
0x01
);
u8
pciU
=
(
hwif
->
unit
)
?
UDIDETCR1
:
UDIDETCR0
;
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
))
return
1
;
(
void
)
pci_read_config_byte
(
dev
,
pciD
,
&
regD
);
(
void
)
pci_read_config_byte
(
dev
,
pciU
,
&
regU
);
pci_read_config_byte
(
dev
,
pciD
,
&
regD
);
pci_read_config_byte
(
dev
,
pciU
,
&
regU
);
/* unit 1 - 01000000b unit 0 - 00100000b */
regD
&=
~
(
unit
?
0x40
:
0x20
);
/* unit 1 - 11001010b unit 0 - 00110101b */
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
);
(
void
)
pci_read_config_byte
(
dev
,
pciU
,
&
regU
);
/* FIXME: get unit checking out of here --bkz */
pci_write_config_byte
(
dev
,
pciD
,
regD
);
pci_write_config_byte
(
dev
,
pciU
,
regU
);
pci_read_config_byte
(
dev
,
pciD
,
&
regD
);
pci_read_config_byte
(
dev
,
pciU
,
&
regU
);
switch
(
speed
)
{
case
XFER_UDMA_5
:
regU
|=
(
unit
?
0x0A
:
0x05
);
break
;
case
XFER_UDMA_4
:
regU
|=
(
unit
?
0x4A
:
0x15
);
break
;
case
XFER_UDMA_3
:
regU
|=
(
unit
?
0x8A
:
0x25
);
break
;
case
XFER_UDMA_2
:
regU
|=
(
unit
?
0x42
:
0x11
);
break
;
case
XFER_UDMA_1
:
regU
|=
(
unit
?
0x82
:
0x21
);
break
;
case
XFER_UDMA_0
:
regU
|=
(
unit
?
0xC2
:
0x31
);
break
;
case
XFER_MW_DMA_2
:
regD
|=
(
unit
?
0x40
:
0x10
);
break
;
case
XFER_MW_DMA_1
:
regD
|=
(
unit
?
0x80
:
0x20
);
break
;
case
XFER_MW_DMA_0
:
regD
|=
(
unit
?
0xC0
:
0x30
);
break
;
case
XFER_SW_DMA_2
:
regD
|=
(
unit
?
0x40
:
0x10
);
break
;
case
XFER_SW_DMA_1
:
regD
|=
(
unit
?
0x80
:
0x20
);
break
;
case
XFER_SW_DMA_0
:
regD
|=
(
unit
?
0xC0
:
0x30
);
break
;
/* FIXME: use tables --bkz */
case
XFER_UDMA_5
:
U
=
0x05
;
break
;
case
XFER_UDMA_4
:
U
=
0x15
;
break
;
case
XFER_UDMA_3
:
U
=
0x25
;
break
;
case
XFER_UDMA_2
:
U
=
0x11
;
break
;
case
XFER_UDMA_1
:
U
=
0x21
;
break
;
case
XFER_UDMA_0
:
U
=
0x31
;
break
;
case
XFER_MW_DMA_2
:
D
=
0x10
;
break
;
case
XFER_MW_DMA_1
:
D
=
0x20
;
break
;
case
XFER_MW_DMA_0
:
D
=
0x30
;
break
;
case
XFER_SW_DMA_2
:
D
=
0x10
;
break
;
case
XFER_SW_DMA_1
:
D
=
0x20
;
break
;
case
XFER_SW_DMA_0
:
D
=
0x30
;
break
;
#else
switch
(
speed
)
{
#endif
/* CONFIG_BLK_DEV_IDEDMA */
...
...
@@ -390,15 +392,22 @@ static int cmd64x_tune_chipset(struct ata_device *drive, byte speed)
cmd64x_tuneproc
(
drive
,
255
);
#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
);
(
void
)
pci_write_config_byte
(
dev
,
pciD
,
regD
);
#endif
/* CONFIG_BLK_DEV_IDEDMA */
pci_write_config_byte
(
dev
,
pciD
,
regD
);
#endif
return
ide_config_drive_speed
(
drive
,
speed
);
}
...
...
@@ -410,19 +419,20 @@ static int cmd680_tune_chipset(struct ata_device *drive, byte speed)
u8
addr_mask
=
(
hwif
->
unit
)
?
0x84
:
0x80
;
u8
unit
=
(
drive
->
select
.
b
.
unit
&
0x01
);
u8
dma_pci
,
udma_pci
;
u8
mode_pci
,
scsc
;
u8
mode_pci
,
scsc
,
scsc_on
=
0
;
u16
ultra
,
multi
;
pci_read_config_byte
(
dev
,
addr_mask
,
&
mode_pci
);
pci_read_config_byte
(
dev
,
0x8A
,
&
scsc
);
switch
(
drive
->
dn
)
{
case
0
:
dma_pci
=
0xA8
;
udma_pci
=
0xAC
;
break
;
case
1
:
dma_pci
=
0xAA
;
udma_pci
=
0xAE
;
break
;
case
2
:
dma_pci
=
0xB8
;
udma_pci
=
0xBC
;
break
;
case
3
:
dma_pci
=
0xBA
;
udma_pci
=
0xBE
;
break
;
case
0
:
dma_pci
=
0xA8
;
break
;
case
1
:
dma_pci
=
0xAA
;
break
;
case
2
:
dma_pci
=
0xB8
;
break
;
case
3
:
dma_pci
=
0xBA
;
break
;
default:
return
1
;
}
udma_pci
=
dma_pci
+
4
;
pci_read_config_byte
(
dev
,
addr_mask
,
&
mode_pci
);
mode_pci
&=
~
((
unit
)
?
0x30
:
0x03
);
...
...
@@ -434,46 +444,38 @@ static int cmd680_tune_chipset(struct ata_device *drive, byte speed)
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
)
{
#ifdef CONFIG_BLK_DEV_IDEDMA
case
XFER_UDMA_6
:
if
(
(
scsc
&
0x30
)
==
0x00
)
if
(
scsc_on
)
goto
speed_break
;
multi
=
0x10C1
;
ultra
&=
~
0x3F
;
ultra
|=
0x01
;
break
;
speed_break
:
speed
=
XFER_UDMA_5
;
case
XFER_UDMA_5
:
multi
=
0x10C1
;
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x01
:
0x02
);
ultra
|=
(
scsc_on
?
0x01
:
0x02
);
break
;
case
XFER_UDMA_4
:
multi
=
0x10C1
;
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x02
:
0x03
);
ultra
|=
(
scsc_on
?
0x02
:
0x03
);
break
;
case
XFER_UDMA_3
:
multi
=
0x10C1
;
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x04
:
0x05
);
ultra
|=
(
scsc_on
?
0x04
:
0x05
);
break
;
case
XFER_UDMA_2
:
multi
=
0x10C1
;
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x05
:
0x07
);
ultra
|=
(
scsc_on
?
0x05
:
0x07
);
break
;
case
XFER_UDMA_1
:
multi
=
0x10C1
;
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x07
:
0x0B
);
ultra
|=
(
scsc_on
?
0x07
:
0x0B
);
break
;
case
XFER_UDMA_0
:
multi
=
0x10C1
;
ultra
&=
~
0x3F
;
ultra
|=
(((
scsc
&
0x30
)
==
0x00
)
?
0x0C
:
0x0F
);
ultra
|=
(
scsc_on
?
0x0C
:
0x0F
);
break
;
case
XFER_MW_DMA_2
:
multi
=
0x10C1
;
...
...
@@ -509,8 +511,6 @@ speed_break :
pci_write_config_word
(
dev
,
dma_pci
,
multi
);
pci_write_config_word
(
dev
,
udma_pci
,
ultra
);
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
}
...
...
@@ -520,11 +520,6 @@ static int config_chipset_for_dma(struct ata_device *drive, u8 udma)
int
map
;
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
)
map
=
cmd64x_ratemask
(
drive
);
else
...
...
@@ -728,8 +723,8 @@ static unsigned int cmd680_pci_init(struct pci_dev *dev)
static
unsigned
int
cmd64x_pci_init
(
struct
pci_dev
*
dev
)
{
u
nsigned
char
mrdmode
;
u
nsigned
int
class_rev
;
u
8
mrdmode
;
u
32
class_rev
;
pci_read_config_dword
(
dev
,
PCI_CLASS_REVISION
,
&
class_rev
);
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)
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
));
#endif
/* CY82C693_DEBUG_LOGS */
#endif
data
=
(
byte
)
mode
|
(
byte
)(
single
<<
2
);
...
...
@@ -213,7 +213,7 @@ static void cy82c693_dma_enable(struct ata_device *drive, int mode, int single)
#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
);
#endif
/* CY82C693_DEBUG_INFO */
#endif
/*
* 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)
#if CY82C693_DEBUG_INFO
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)
#if CY82C693_DEBUG_INFO
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 */
...
...
drivers/ide/hpt34x.c
View file @
509c4ed3
...
...
@@ -63,7 +63,6 @@ static int hpt34x_tune_chipset(struct ata_device *drive, u8 speed)
udma
,
pio
,
err
);
#endif
drive
->
current_speed
=
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 {
unsigned
int
chipset_settings
;
};
/* key for bus clock timings
/* key for bus clock timings
for HPT370
* bit
* 0:3 data_high_time. inactive time of DIOW_/DIOR_ for PIO and MW
* DMA. cycles = value + 1
...
...
@@ -408,26 +408,6 @@ static struct chipset_bus_clock_list_entry thirty_three_base_hpt374[] = {
{
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
static struct chipset_bus_clock_list_entry sixty_six_base_hpt374[] = {
{ XFER_UDMA_6, 0x12406231 }, /* checkme */
...
...
@@ -678,21 +658,13 @@ static int hpt3xx_tune_chipset(struct ata_device *drive, u8 speed)
}
else
{
hpt366_tune_chipset
(
drive
,
speed
);
}
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
}
static
void
hpt3xx_tune_drive
(
struct
ata_device
*
drive
,
u8
pio
)
{
u8
speed
;
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
);
(
void
)
hpt3xx_tune_chipset
(
drive
,
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
));
}
#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)
/*
* 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
;
struct
ata_channel
*
ch
=
drive
->
channel
;
int
re
t
;
unsigned
int
msec
t
;
spin_lock_irqsave
(
ch
->
lock
,
flags
);
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
);
return
ata_error
(
drive
,
rq
,
__FUNCTION__
);
}
/* no data yet, so wait for another interrupt */
ata_set_handler
(
drive
,
task_in_intr
,
WAIT_CMD
,
NULL
);
if
(
!
(
drive
->
status
&
BUSY_STAT
))
goto
cont
;
}
ret
=
ide_started
;
msect
=
drive
->
mult_count
;
do
{
unsigned
int
nsect
;
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: %p, rq->current_nr_sectors: %d\n", buf,
(int) rq->current_nr_sectors);
// printk("Read: rq->current_nr_sectors: %d %d %d\n", msect, nsect,
(int) rq->current_nr_sectors);
{
unsigned
long
flags
;
char
*
buf
;
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
);
}
/*
First s
egment of the request is complete. note that this does not
* necessarily mean that the entire request is done!! this is
only true
* if ata_end_request() returns 0.
/*
S
egment of the request is complete. note that this does not
* necessarily mean that the entire request is done!! this is
*
only true
if ata_end_request() returns 0.
*/
rq
->
errors
=
0
;
--
rq
->
current_nr_sectors
;
rq
->
current_nr_sectors
-=
nsect
;
if
(
rq
->
current_nr_sectors
<=
0
)
{
if
(
!
__ata_end_request
(
drive
,
rq
,
1
,
0
))
{
// printk("Request Ended stat: %02x\n", drive->status);
spin_unlock_irqrestore
(
ch
->
lock
,
flags
);
return
ide_stopped
;
}
}
msect
-=
nsect
;
}
while
(
msect
>
0
);
cont:
/* still data left to transfer */
ata_set_handler
(
drive
,
task_in_intr
,
WAIT_CMD
,
NULL
);
ret
=
ide_started
;
}
ata_set_handler
(
drive
,
pio_in_intr
,
WAIT_CMD
,
NULL
);
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
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
)
{
unsigned
long
flags
;
...
...
@@ -610,10 +552,10 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
}
else
if
(
drive
->
using_dma
)
{
args
.
cmd
=
WIN_READDMA_EXT
;
}
else
if
(
drive
->
mult_count
)
{
args
.
XXX_handler
=
task_mul
in_intr
;
args
.
XXX_handler
=
pio_
in_intr
;
args
.
cmd
=
WIN_MULTREAD_EXT
;
}
else
{
args
.
XXX_handler
=
task
_in_intr
;
args
.
XXX_handler
=
pio
_in_intr
;
args
.
cmd
=
WIN_READ_EXT
;
}
}
else
{
...
...
@@ -622,11 +564,10 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
}
else
if
(
drive
->
using_dma
)
{
args
.
cmd
=
WIN_READDMA
;
}
else
if
(
drive
->
mult_count
)
{
/* FIXME : Shouldn't this be task_mulin_intr?! */
args
.
XXX_handler
=
task_in_intr
;
args
.
XXX_handler
=
pio_in_intr
;
args
.
cmd
=
WIN_MULTREAD
;
}
else
{
args
.
XXX_handler
=
task
_in_intr
;
args
.
XXX_handler
=
pio
_in_intr
;
args
.
cmd
=
WIN_READ
;
}
}
...
...
@@ -673,6 +614,19 @@ static ide_startstop_t idedisk_do_request(struct ata_device *drive, struct reque
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
)
{
MOD_INC_USE_COUNT
;
...
...
@@ -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
* already succeeded once, and the door_lock is irrelevant at
this
* time.
* already succeeded once, and the door_lock is irrelevant at
* t
his t
ime.
*/
if
(
drive
->
doorlocking
)
{
struct
ata_taskfile
args
;
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
cmd
=
WIN_DOORLOCK
;
if
(
ide_raw_taskfile
(
drive
,
&
args
))
if
(
simple_taskfile
(
drive
,
WIN_DOORLOCK
))
drive
->
doorlocking
=
0
;
}
}
...
...
@@ -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
)
{
struct
ata_taskfile
args
;
memset
(
&
args
,
0
,
sizeof
(
args
));
u8
cmd
;
if
(
drive
->
id
->
cfs_enable_2
&
0x2400
)
args
.
cmd
=
WIN_FLUSH_CACHE_EXT
;
cmd
=
WIN_FLUSH_CACHE_EXT
;
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
)
{
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
)
{
struct
ata_taskfile
args
;
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
cmd
=
WIN_DOORUNLOCK
;
if
(
ide_raw_taskfile
(
drive
,
&
args
))
if
(
simple_taskfile
(
drive
,
WIN_DOORUNLOCK
))
drive
->
doorlocking
=
0
;
}
}
...
...
@@ -769,7 +710,7 @@ static int set_multcount(struct ata_device *drive, int arg)
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
sector_count
=
arg
;
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 */
drive
->
mult_count
=
arg
;
...
...
@@ -798,7 +739,7 @@ static int write_cache(struct ata_device *drive, int arg)
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
(
arg
)
?
SETFEATURES_EN_WCACHE
:
SETFEATURES_DIS_WCACHE
;
args
.
cmd
=
WIN_SETFEATURES
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
drive
->
wcache
=
arg
;
...
...
@@ -807,11 +748,7 @@ static int write_cache(struct ata_device *drive, int arg)
static
int
idedisk_standby
(
struct
ata_device
*
drive
)
{
struct
ata_taskfile
args
;
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
cmd
=
WIN_STANDBYNOW1
;
return
ide_raw_taskfile
(
drive
,
&
args
);
return
simple_taskfile
(
drive
,
WIN_STANDBYNOW1
);
}
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
.
sector_count
=
arg
;
args
.
cmd
=
WIN_SETFEATURES
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
drive
->
acoustic
=
arg
;
...
...
@@ -942,7 +879,7 @@ static unsigned long native_max_address(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
device_head
=
0x40
;
args
.
cmd
=
WIN_READ_NATIVE_MAX
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
/* if OK, compute maximum address value */
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
...
...
@@ -964,10 +901,9 @@ static u64 native_max_address_ext(struct ata_device *drive)
/* Create IDE/ATA command request structure */
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
device_head
=
0x40
;
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
(
!
(
drive
->
status
&
ERR_STAT
))
{
...
...
@@ -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
.
cmd
=
WIN_SET_MAX
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
/* if OK, read new maximum address value */
if
(
!
(
drive
->
status
&
ERR_STAT
))
{
...
...
@@ -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
.
device_head
=
0x40
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
/* if OK, compute maximum address value */
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,
}
}
#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
* is enough, I beleive selectproc will be called whenever an IDE command is started,
* but... */
...
...
@@ -1365,7 +1350,7 @@ static int pmac_udma_start(struct ata_device *drive, struct request *rq)
*/
ix
=
pmac_ide_find
(
drive
);
if
(
ix
<
0
)
return
ide_st
art
ed
;
return
ide_st
opp
ed
;
dma
=
pmac_ide
[
ix
].
dma_regs
;
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
/*
* Invoked on completion of a special REQ_SPECIAL command.
*/
ide_startstop_t
ata_special_intr
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
{
static
ide_startstop_t
special_intr
(
struct
ata_device
*
drive
,
struct
request
*
rq
)
{
struct
ata_taskfile
*
ar
=
rq
->
special
;
ide_startstop_t
ret
=
ide_stopped
;
...
...
@@ -292,16 +293,18 @@ ide_startstop_t ata_special_intr(struct ata_device *drive, struct
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
;
ar
->
command_type
=
IDE_DRIVE_TASK_NO_DATA
;
ar
->
XXX_handler
=
ata_
special_intr
;
ar
->
XXX_handler
=
special_intr
;
memset
(
&
req
,
0
,
sizeof
(
req
));
req
.
flags
=
REQ_SPECIAL
;
req
.
special
=
ar
;
req
.
buffer
=
buffer
;
return
ide_do_drive_cmd
(
drive
,
&
req
,
ide_wait
);
}
...
...
@@ -310,5 +313,4 @@ EXPORT_SYMBOL(drive_is_ready);
EXPORT_SYMBOL
(
ide_do_drive_cmd
);
EXPORT_SYMBOL
(
ata_read
);
EXPORT_SYMBOL
(
ata_write
);
EXPORT_SYMBOL
(
ata_special_intr
);
EXPORT_SYMBOL
(
ide_raw_taskfile
);
drivers/ide/ide.c
View file @
509c4ed3
...
...
@@ -560,7 +560,7 @@ static int do_recalibrate(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
sector_count
=
drive
->
sect
;
args
.
cmd
=
WIN_RESTORE
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
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)
u8
*
argbuf
=
vals
;
int
argsize
=
4
;
struct
ata_taskfile
args
;
struct
request
req
;
/* Second phase.
*/
...
...
@@ -78,17 +77,7 @@ static int do_cmd_ioctl(struct ata_device *drive, unsigned long arg)
memset
(
argbuf
+
4
,
0
,
argsize
-
4
);
}
/* Issue ATA command and wait for completion.
*/
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
);
err
=
ide_raw_taskfile
(
drive
,
&
args
,
argbuf
+
4
);
argbuf
[
0
]
=
drive
->
status
;
argbuf
[
1
]
=
args
.
taskfile
.
feature
;
...
...
drivers/ide/it8172.c
View file @
509c4ed3
...
...
@@ -45,21 +45,11 @@
#include "ata-timing.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
;
u16
drive_enables
;
u32
drive_timing
;
...
...
@@ -70,8 +60,8 @@ static void it8172_tune_drive (struct ata_device *drive, byte pio)
else
pio
=
min_t
(
byte
,
pio
,
4
);
pci_read_config_word
(
drive
->
channel
->
pci_
dev
,
master_port
,
&
master_data
);
pci_read_config_dword
(
drive
->
channel
->
pci_
dev
,
slave_port
,
&
slave_data
);
pci_read_config_word
(
dev
,
master_port
,
&
master_data
);
pci_read_config_dword
(
dev
,
slave_port
,
&
slave_data
);
/*
* 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)
save_flags
(
flags
);
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
);
}
...
...
@@ -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
)
{
case
XFER_UDMA_5
:
...
...
@@ -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
pci_dev
*
dev
=
hwif
->
pci_dev
;
...
...
@@ -147,7 +137,7 @@ static int it8172_tune_chipset (struct ata_device *drive, byte speed)
int
u_flag
=
1
<<
drive
->
dn
;
int
u_speed
=
0
;
int
err
=
0
;
byte
reg48
,
reg4a
;
u8
reg48
,
reg4a
;
pci_read_config_byte
(
dev
,
0x48
,
&
reg48
);
pci_read_config_byte
(
dev
,
0x4a
,
&
reg4a
);
...
...
@@ -187,52 +177,28 @@ static int it8172_tune_chipset (struct ata_device *drive, byte speed)
it8172_tune_drive
(
drive
,
it8172_dma_2_pio
(
speed
));
err
=
ide_config_drive_speed
(
drive
,
speed
);
drive
->
current_speed
=
speed
;
return
err
;
return
ide_config_drive_speed
(
drive
,
speed
);
}
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
;
byte
speed
;
speed
=
ata_timing_mode
(
drive
,
XFER_PIO
|
XFER_EPIO
|
XFER_SWDMA
|
XFER_MWDMA
|
XFER_UDMA
);
u8
speed
=
ata_timing_mode
(
drive
,
XFER_PIO
|
XFER_EPIO
|
XFER_SWDMA
|
XFER_MWDMA
|
XFER_UDMA
);
(
void
)
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
);
return
!
it8172_tune_chipset
(
drive
,
speed
);
}
#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
*/
(
void
)
pci_read_config_byte
(
dev
,
PCI_CLASS_PROG
,
&
progif
);
(
void
)
pci_write_config_byte
(
dev
,
PCI_CLASS_PROG
,
progif
|
0x05
);
pci_read_config_byte
(
dev
,
PCI_CLASS_PROG
,
&
progif
);
pci_write_config_byte
(
dev
,
PCI_CLASS_PROG
,
progif
|
0x05
);
return
IT8172_IDE_IRQ
;
}
...
...
drivers/ide/opti621.c
View file @
509c4ed3
...
...
@@ -342,9 +342,8 @@ int __init init_opti621(void)
{
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
chipsets
);
++
i
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
chipsets
);
++
i
)
ata_register_chipset
(
&
chipsets
[
i
]);
}
return
0
;
}
drivers/ide/pcidma.c
View file @
509c4ed3
...
...
@@ -415,7 +415,7 @@ void udma_destroy_table(struct ata_channel *ch)
*
* 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
;
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)
printk
(
KERN_DEBUG
"DP(%x)
\n
"
,
DP
);
#endif
drive
->
current_speed
=
speed
;
#if PDC202XX_DEBUG_DRIVE_INFO
printk
(
"%s: %02x drive%d 0x%08x "
,
drive
->
name
,
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
);
}
...
...
@@ -551,7 +547,7 @@ static int pdc202xx_udma_setup(struct ata_device *drive)
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
;
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)
piix_set_speed
(
drive
->
channel
->
pci_dev
,
drive
->
dn
,
&
t
,
umul
);
drive
->
current_speed
=
speed
;
return
0
;
}
...
...
drivers/ide/probe.c
View file @
509c4ed3
...
...
@@ -339,6 +339,8 @@ int ide_config_drive_speed(struct ata_device *drive, byte speed)
ata_irq_enable
(
drive
,
1
);
udelay
(
1
);
/* FIXME: use ata_status_poll() --bkz */
ata_busy_poll
(
drive
,
WAIT_CMD
);
/*
...
...
@@ -395,6 +397,8 @@ int ide_config_drive_speed(struct ata_device *drive, byte speed)
default:
break
;
}
drive
->
current_speed
=
speed
;
return
error
;
}
...
...
drivers/ide/serverworks.c
View file @
509c4ed3
...
...
@@ -123,23 +123,21 @@ static int svwks_ratemask(struct ata_device *drive)
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
pio_modes
[]
=
{
0x5d
,
0x47
,
0x34
,
0x22
,
0x20
};
struct
ata_channel
*
hwif
=
drive
->
channel
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
byte
unit
=
(
drive
->
select
.
b
.
unit
&
0x01
);
byte
csb5
=
(
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
)
?
1
:
0
;
byte
drive_pci
,
drive_pci2
;
byte
drive_pci3
=
hwif
->
unit
?
0x57
:
0x56
;
struct
ata_channel
*
ch
=
drive
->
channel
;
struct
pci_dev
*
dev
=
ch
->
pci_dev
;
u8
unit
=
drive
->
select
.
b
.
unit
&
0x01
;
u8
drive_pci
,
drive_pci2
;
u8
drive_pci3
=
ch
->
unit
?
0x57
:
0x56
;
byte
ultra_enable
,
ultra_timing
,
dma_timing
,
pio_timing
;
u
nsigned
short
csb5_pio
;
u8
ultra_enable
,
ultra_timing
,
dma_timing
,
pio_timing
;
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
)
{
case
0
:
drive_pci
=
0x41
;
break
;
...
...
@@ -213,7 +211,8 @@ static int svwks_tune_chipset(struct ata_device *drive, byte speed)
#endif
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
);
#ifdef CONFIG_BLK_DEV_IDEDMA
...
...
@@ -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
,
0x54
,
ultra_enable
);
#endif
drive
->
current_speed
=
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
;
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
);
(
void
)
svwks_tune_chipset
(
drive
,
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
));
}
#ifdef CONFIG_BLK_DEV_IDEDMA
static
int
config_chipset_for_dma
(
struct
ata_device
*
drive
)
{
int
map
;
byte
mode
;
u8
mode
;
/* FIXME: check SWDMA modes --bkz */
map
=
XFER_MWDMA
|
svwks_ratemask
(
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
)
{
unsigned
int
reg
;
byte
btr
;
u8
btr
;
/* save revision id to determine DMA capability */
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)
static
unsigned
int
__init
ata66_svwks_dell
(
struct
ata_channel
*
hwif
)
{
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
if
(
dev
->
subsystem_vendor
==
PCI_VENDOR_ID_DELL
&&
dev
->
vendor
==
PCI_VENDOR_ID_SERVERWORKS
&&
if
(
dev
->
vendor
==
PCI_VENDOR_ID_SERVERWORKS
&&
(
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
||
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB6IDE
))
return
((
1
<<
(
hwif
->
unit
+
14
))
&
...
...
@@ -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
)
{
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
if
(
dev
->
subsystem_vendor
==
PCI_VENDOR_ID_SUN
&&
dev
->
vendor
==
PCI_VENDOR_ID_SERVERWORKS
&&
if
(
dev
->
vendor
==
PCI_VENDOR_ID_SERVERWORKS
&&
dev
->
device
==
PCI_DEVICE_ID_SERVERWORKS_CSB5IDE
)
return
((
1
<<
(
hwif
->
unit
+
14
))
&
dev
->
subsystem_device
)
?
1
:
0
;
...
...
@@ -501,9 +489,8 @@ int __init init_svwks(void)
{
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
chipsets
);
++
i
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
chipsets
);
++
i
)
ata_register_chipset
(
&
chipsets
[
i
]);
}
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)
{
struct
ata_channel
*
hwif
=
drive
->
channel
;
struct
pci_dev
*
dev
=
hwif
->
pci_dev
;
u8
drive_pci
,
test1
,
test2
,
speed
;
u8
drive_pci
,
test1
,
test2
;
#ifdef DEBUG
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)
drive
->
dn
,
pio
,
timing
);
#endif
switch
(
drive
->
dn
)
{
case
0
:
drive_pci
=
0x40
;
break
;
case
1
:
drive_pci
=
0x42
;
break
;
case
2
:
drive_pci
=
0x44
;
break
;
case
3
:
drive_pci
=
0x46
;
break
;
default:
return
1
;
}
if
(
drive
->
dn
>
3
)
/* FIXME: remove this --bkz */
return
1
;
drive_pci
=
0x40
+
(
drive
->
dn
<<
1
);
/* register layout changed with newer ATA100 chips */
if
(
chipset_family
<
ATA_100
)
{
...
...
@@ -321,9 +318,8 @@ static int config_art_rwp_pio(struct ata_device *drive, u8 pio)
#ifdef DEBUG
sis5513_load_verify_registers
(
dev
,
"config_drive_art_rwp_pio start"
);
#endif
speed
=
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
);
drive
->
current_speed
=
speed
;
return
ide_config_drive_speed
(
drive
,
speed
);
return
ide_config_drive_speed
(
drive
,
XFER_PIO_0
+
min_t
(
u8
,
pio
,
4
));
}
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
"
,
drive
->
dn
,
speed
);
#endif
switch
(
drive
->
dn
)
{
case
0
:
drive_pci
=
0x40
;
break
;
case
1
:
drive_pci
=
0x42
;
break
;
case
2
:
drive_pci
=
0x44
;
break
;
case
3
:
drive_pci
=
0x46
;
break
;
default:
return
0
;
}
if
(
drive
->
dn
>
3
)
/* FIXME: remove this --bkz */
return
1
;
drive_pci
=
0x40
+
(
drive
->
dn
<<
1
);
#ifdef BROKEN_LEVEL
#ifdef DEBUG
...
...
@@ -396,11 +390,10 @@ static int sis5513_tune_chipset(struct ata_device *drive, u8 speed)
default:
return
config_art_rwp_pio
(
drive
,
0
);
}
drive
->
current_speed
=
speed
;
#ifdef DEBUG
sis5513_load_verify_registers
(
dev
,
"sis5513_tune_chipset end"
);
#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
)
...
...
@@ -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
)
{
byte
reg48h
=
0
,
ata66
=
0
;
byte
mask
=
hwif
->
unit
?
0x20
:
0x10
;
u8
reg48h
,
ata66
=
0
;
u8
mask
=
hwif
->
unit
?
0x20
:
0x10
;
pci_read_config_byte
(
hwif
->
pci_dev
,
0x48
,
&
reg48h
);
if
(
chipset_family
>=
ATA_66
)
{
...
...
drivers/ide/tcq.c
View file @
509c4ed3
...
...
@@ -430,7 +430,7 @@ static int check_autopoll(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
0x01
;
args
.
cmd
=
WIN_NOP
;
ide_raw_taskfile
(
drive
,
&
args
);
ide_raw_taskfile
(
drive
,
&
args
,
NULL
);
if
(
args
.
taskfile
.
feature
&
ABRT_ERR
)
return
1
;
...
...
@@ -458,7 +458,7 @@ static int configure_tcq(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
SETFEATURES_EN_WCACHE
;
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
);
return
1
;
}
...
...
@@ -470,7 +470,7 @@ static int configure_tcq(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
SETFEATURES_DIS_RI
;
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
);
return
1
;
}
...
...
@@ -482,7 +482,7 @@ static int configure_tcq(struct ata_device *drive)
memset
(
&
args
,
0
,
sizeof
(
args
));
args
.
taskfile
.
feature
=
SETFEATURES_EN_SI
;
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
);
return
1
;
}
...
...
drivers/ide/trm290.c
View file @
509c4ed3
...
...
@@ -176,7 +176,7 @@ static void trm290_selectproc(struct ata_device *drive)
}
#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. */
}
...
...
drivers/ide/via82cxxx.c
View file @
509c4ed3
...
...
@@ -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
);
drive
->
current_speed
=
speed
;
return
0
;
}
...
...
fs/smbfs/smb_debug.h
View file @
509c4ed3
...
...
@@ -11,14 +11,14 @@
* these are normally enabled.
*/
#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
# define PARANOIA(f, a...) do { ; } while(0)
#endif
/* lots of debug messages */
#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
# define VERBOSE(f, a...) do { ; } while(0)
#endif
...
...
@@ -28,7 +28,7 @@
* too common name.
*/
#ifdef SMBFS_DEBUG
#define DEBUG1(
x...) printk(KERN_DEBUG __FUNCTION__ ": " x
)
#define DEBUG1(
f, a...) printk(KERN_DEBUG "%s: " f, __FUNCTION__ , ## a
)
#else
#define DEBUG1(
x
...) do { ; } while(0)
#define DEBUG1(
f, a
...) do { ; } while(0)
#endif
include/linux/ide.h
View file @
509c4ed3
...
...
@@ -680,8 +680,7 @@ static inline void ide_unmap_rq(struct request *rq, char *to,
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
*
);
extern
int
ide_raw_taskfile
(
struct
ata_device
*
,
struct
ata_taskfile
*
,
char
*
);
extern
void
ide_fix_driveid
(
struct
hd_driveid
*
id
);
extern
int
ide_config_drive_speed
(
struct
ata_device
*
,
byte
);
...
...
@@ -785,7 +784,7 @@ static inline void udma_irq_lost(struct ata_device *drive)
#ifdef CONFIG_BLK_DEV_IDEDMA
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_init
(
struct
ata_device
*
drive
,
struct
request
*
rq
);
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