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
4c9773ed
Commit
4c9773ed
authored
May 22, 2009
by
Bartlomiej Zolnierkiewicz
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-linus' into for-next
parents
9f36d314
5993856e
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
35 additions
and
32 deletions
+35
-32
drivers/ide/ide-io.c
drivers/ide/ide-io.c
+2
-2
drivers/ide/ide-iops.c
drivers/ide/ide-iops.c
+17
-4
drivers/ide/ide-lib.c
drivers/ide/ide-lib.c
+6
-21
drivers/ide/ide-probe.c
drivers/ide/ide-probe.c
+6
-3
drivers/ide/via82cxxx.c
drivers/ide/via82cxxx.c
+2
-0
include/linux/ide.h
include/linux/ide.h
+1
-1
include/linux/pci_ids.h
include/linux/pci_ids.h
+1
-1
No files found.
drivers/ide/ide-io.c
View file @
4c9773ed
...
...
@@ -681,7 +681,7 @@ void ide_timer_expiry (unsigned long data)
}
spin_lock_irq
(
&
hwif
->
lock
);
enable_irq
(
hwif
->
irq
);
if
(
startstop
==
ide_stopped
)
{
if
(
startstop
==
ide_stopped
&&
hwif
->
polling
==
0
)
{
ide_unlock_port
(
hwif
);
plug_device
=
1
;
}
...
...
@@ -853,7 +853,7 @@ irqreturn_t ide_intr (int irq, void *dev_id)
* same irq as is currently being serviced here, and Linux
* won't allow another of the same (on any CPU) until we return.
*/
if
(
startstop
==
ide_stopped
)
{
if
(
startstop
==
ide_stopped
&&
hwif
->
polling
==
0
)
{
BUG_ON
(
hwif
->
handler
);
ide_unlock_port
(
hwif
);
plug_device
=
1
;
...
...
drivers/ide/ide-iops.c
View file @
4c9773ed
...
...
@@ -206,8 +206,6 @@ EXPORT_SYMBOL_GPL(ide_in_drive_list);
/*
* Early UDMA66 devices don't set bit14 to 1, only bit13 is valid.
* We list them here and depend on the device side cable detection for them.
*
* Some optical devices with the buggy firmwares have the same problem.
*/
static
const
struct
drive_list_entry
ivb_list
[]
=
{
...
...
@@ -251,10 +249,25 @@ u8 eighty_ninty_three(ide_drive_t *drive)
* - force bit13 (80c cable present) check also for !ivb devices
* (unless the slave device is pre-ATA3)
*/
if
((
id
[
ATA_ID_HW_CONFIG
]
&
0x4000
)
||
(
ivb
&&
(
id
[
ATA_ID_HW_CONFIG
]
&
0x2000
)))
if
(
id
[
ATA_ID_HW_CONFIG
]
&
0x4000
)
return
1
;
if
(
ivb
)
{
const
char
*
model
=
(
char
*
)
&
id
[
ATA_ID_PROD
];
if
(
strstr
(
model
,
"TSSTcorp CDDVDW SH-S202"
))
{
/*
* These ATAPI devices always report 80c cable
* so we have to depend on the host in this case.
*/
if
(
hwif
->
cbl
==
ATA_CBL_PATA80
)
return
1
;
}
else
{
/* Depend on the device side cable detection. */
if
(
id
[
ATA_ID_HW_CONFIG
]
&
0x2000
)
return
1
;
}
}
no_80w:
if
(
drive
->
dev_flags
&
IDE_DFLAG_UDMA33_WARNED
)
return
0
;
...
...
drivers/ide/ide-lib.c
View file @
4c9773ed
...
...
@@ -31,24 +31,6 @@ void ide_toggle_bounce(ide_drive_t *drive, int on)
blk_queue_bounce_limit
(
drive
->
queue
,
addr
);
}
static
void
ide_dump_opcode
(
ide_drive_t
*
drive
)
{
struct
request
*
rq
=
drive
->
hwif
->
rq
;
struct
ide_cmd
*
cmd
=
NULL
;
if
(
!
rq
)
return
;
if
(
rq
->
cmd_type
==
REQ_TYPE_ATA_TASKFILE
)
cmd
=
rq
->
special
;
printk
(
KERN_ERR
"ide: failed opcode was: "
);
if
(
cmd
==
NULL
)
printk
(
KERN_CONT
"unknown
\n
"
);
else
printk
(
KERN_CONT
"0x%02x
\n
"
,
cmd
->
tf
.
command
);
}
u64
ide_get_lba_addr
(
struct
ide_cmd
*
cmd
,
int
lba48
)
{
struct
ide_taskfile
*
tf
=
&
cmd
->
tf
;
...
...
@@ -91,7 +73,7 @@ static void ide_dump_sector(ide_drive_t *drive)
static
void
ide_dump_ata_error
(
ide_drive_t
*
drive
,
u8
err
)
{
printk
(
KERN_
ERR
"{ "
);
printk
(
KERN_
CONT
"{ "
);
if
(
err
&
ATA_ABORTED
)
printk
(
KERN_CONT
"DriveStatusError "
);
if
(
err
&
ATA_ICRC
)
...
...
@@ -121,7 +103,7 @@ static void ide_dump_ata_error(ide_drive_t *drive, u8 err)
static
void
ide_dump_atapi_error
(
ide_drive_t
*
drive
,
u8
err
)
{
printk
(
KERN_
ERR
"{ "
);
printk
(
KERN_
CONT
"{ "
);
if
(
err
&
ATAPI_ILI
)
printk
(
KERN_CONT
"IllegalLengthIndication "
);
if
(
err
&
ATAPI_EOM
)
...
...
@@ -179,7 +161,10 @@ u8 ide_dump_status(ide_drive_t *drive, const char *msg, u8 stat)
else
ide_dump_atapi_error
(
drive
,
err
);
}
ide_dump_opcode
(
drive
);
printk
(
KERN_ERR
"%s: possibly failed opcode: 0x%02x
\n
"
,
drive
->
name
,
drive
->
hwif
->
cmd
.
tf
.
command
);
return
err
;
}
EXPORT_SYMBOL
(
ide_dump_status
);
drivers/ide/ide-probe.c
View file @
4c9773ed
...
...
@@ -295,7 +295,7 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
timeout
=
((
cmd
==
ATA_CMD_ID_ATA
)
?
WAIT_WORSTCASE
:
WAIT_PIDENTIFY
)
/
2
;
if
(
ide_busy_sleep
(
hwif
,
timeout
,
use_altstatus
))
if
(
ide_busy_sleep
(
drive
,
timeout
,
use_altstatus
))
return
1
;
/* wait for IRQ and ATA_DRQ */
...
...
@@ -316,8 +316,9 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
return
rc
;
}
int
ide_busy_sleep
(
ide_
hwif_t
*
hwif
,
unsigned
long
timeout
,
int
altstatus
)
int
ide_busy_sleep
(
ide_
drive_t
*
drive
,
unsigned
long
timeout
,
int
altstatus
)
{
ide_hwif_t
*
hwif
=
drive
->
hwif
;
u8
stat
;
timeout
+=
jiffies
;
...
...
@@ -330,6 +331,8 @@ int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
return
0
;
}
while
(
time_before
(
jiffies
,
timeout
));
printk
(
KERN_ERR
"%s: timeout in %s
\n
"
,
drive
->
name
,
__func__
);
return
1
;
/* drive timed-out */
}
...
...
@@ -420,7 +423,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
tp_ops
->
dev_select
(
drive
);
msleep
(
50
);
tp_ops
->
exec_command
(
hwif
,
ATA_CMD_DEV_RESET
);
(
void
)
ide_busy_sleep
(
hwif
,
WAIT_WORSTCASE
,
0
);
(
void
)
ide_busy_sleep
(
drive
,
WAIT_WORSTCASE
,
0
);
rc
=
ide_dev_read_id
(
drive
,
cmd
,
id
);
}
...
...
drivers/ide/via82cxxx.c
View file @
4c9773ed
...
...
@@ -67,6 +67,7 @@ static struct via_isa_bridge {
u8
udma_mask
;
u8
flags
;
}
via_isa_bridges
[]
=
{
{
"vx855"
,
PCI_DEVICE_ID_VIA_VX855
,
0x00
,
0x2f
,
ATA_UDMA6
,
VIA_BAD_AST
},
{
"vx800"
,
PCI_DEVICE_ID_VIA_VX800
,
0x00
,
0x2f
,
ATA_UDMA6
,
VIA_BAD_AST
},
{
"cx700"
,
PCI_DEVICE_ID_VIA_CX700
,
0x00
,
0x2f
,
ATA_UDMA6
,
VIA_BAD_AST
},
{
"vt8237s"
,
PCI_DEVICE_ID_VIA_8237S
,
0x00
,
0x2f
,
ATA_UDMA6
,
VIA_BAD_AST
},
...
...
@@ -474,6 +475,7 @@ static const struct pci_device_id via_pci_tbl[] = {
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_82C576_1
),
0
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_82C586_1
),
0
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_CX700_IDE
),
0
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_VX855_IDE
),
0
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_6410
),
1
},
{
PCI_VDEVICE
(
VIA
,
PCI_DEVICE_ID_VIA_SATA_EIDE
),
1
},
{
0
,
},
...
...
include/linux/ide.h
View file @
4c9773ed
...
...
@@ -1093,7 +1093,7 @@ void ide_fix_driveid(u16 *);
extern
void
ide_fixstring
(
u8
*
,
const
int
,
const
int
);
int
ide_busy_sleep
(
ide_
hwif
_t
*
,
unsigned
long
,
int
);
int
ide_busy_sleep
(
ide_
drive
_t
*
,
unsigned
long
,
int
);
int
ide_wait_stat
(
ide_startstop_t
*
,
ide_drive_t
*
,
u8
,
u8
,
unsigned
long
);
...
...
include/linux/pci_ids.h
View file @
4c9773ed
...
...
@@ -1406,7 +1406,7 @@
#define PCI_DEVICE_ID_VIA_82C598_1 0x8598
#define PCI_DEVICE_ID_VIA_838X_1 0xB188
#define PCI_DEVICE_ID_VIA_83_87XX_1 0xB198
#define PCI_DEVICE_ID_VIA_
C409_IDE 0X
C409
#define PCI_DEVICE_ID_VIA_
VX855_IDE 0x
C409
#define PCI_DEVICE_ID_VIA_ANON 0xFFFF
#define PCI_VENDOR_ID_SIEMENS 0x110A
...
...
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