Commit 24fc484a authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz

Merge branch 'for-linus' into for-next

parents 2ecf0a57 83cff839
...@@ -577,7 +577,7 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive) ...@@ -577,7 +577,7 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
struct request *rq = hwif->rq; struct request *rq = hwif->rq;
ide_expiry_t *expiry = NULL; ide_expiry_t *expiry = NULL;
int dma_error = 0, dma, thislen, uptodate = 0; int dma_error = 0, dma, thislen, uptodate = 0;
int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc, nsectors; int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc = 0, nsectors;
int sense = blk_sense_request(rq); int sense = blk_sense_request(rq);
unsigned int timeout; unsigned int timeout;
u16 len; u16 len;
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/ide.h> #include <linux/ide.h>
#include <linux/hdreg.h> #include <linux/hdreg.h>
#include <linux/dmi.h>
#if !defined(CONFIG_DEBUG_BLOCK_EXT_DEVT) #if !defined(CONFIG_DEBUG_BLOCK_EXT_DEVT)
#define IDE_DISK_MINORS (1 << PARTN_BITS) #define IDE_DISK_MINORS (1 << PARTN_BITS)
...@@ -99,6 +100,19 @@ static void ide_gd_resume(ide_drive_t *drive) ...@@ -99,6 +100,19 @@ static void ide_gd_resume(ide_drive_t *drive)
(void)drive->disk_ops->get_capacity(drive); (void)drive->disk_ops->get_capacity(drive);
} }
static const struct dmi_system_id ide_coldreboot_table[] = {
{
/* Acer TravelMate 66x cuts power during reboot */
.ident = "Acer TravelMate 660",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"),
},
},
{ } /* terminate list */
};
static void ide_gd_shutdown(ide_drive_t *drive) static void ide_gd_shutdown(ide_drive_t *drive)
{ {
#ifdef CONFIG_ALPHA #ifdef CONFIG_ALPHA
...@@ -115,7 +129,8 @@ static void ide_gd_shutdown(ide_drive_t *drive) ...@@ -115,7 +129,8 @@ static void ide_gd_shutdown(ide_drive_t *drive)
the disk to expire its write cache. */ the disk to expire its write cache. */
if (system_state != SYSTEM_POWER_OFF) { if (system_state != SYSTEM_POWER_OFF) {
#else #else
if (system_state == SYSTEM_RESTART) { if (system_state == SYSTEM_RESTART &&
!dmi_check_system(ide_coldreboot_table)) {
#endif #endif
drive->disk_ops->flush(drive); drive->disk_ops->flush(drive);
return; return;
......
...@@ -39,14 +39,6 @@ ...@@ -39,14 +39,6 @@
/* Primary Control Offset */ /* Primary Control Offset */
#define IDE_PALM_ATA_PRI_CTL_OFFSET 0x3F6 #define IDE_PALM_ATA_PRI_CTL_OFFSET 0x3F6
/*
* PalmChip 3710 IDE Controller UDMA timing structure Definition
*/
struct palm_bk3710_udmatiming {
unsigned int rptime; /* Ready to pause time */
unsigned int cycletime; /* Cycle Time */
};
#define BK3710_BMICP 0x00 #define BK3710_BMICP 0x00
#define BK3710_BMISP 0x02 #define BK3710_BMISP 0x02
#define BK3710_BMIDTP 0x04 #define BK3710_BMIDTP 0x04
...@@ -75,13 +67,19 @@ struct palm_bk3710_udmatiming { ...@@ -75,13 +67,19 @@ struct palm_bk3710_udmatiming {
static unsigned ideclk_period; /* in nanoseconds */ static unsigned ideclk_period; /* in nanoseconds */
struct palm_bk3710_udmatiming {
unsigned int rptime; /* tRP -- Ready to pause time (nsec) */
unsigned int cycletime; /* tCYCTYP2/2 -- avg Cycle Time (nsec) */
/* tENV is always a minimum of 20 nsec */
};
static const struct palm_bk3710_udmatiming palm_bk3710_udmatimings[6] = { static const struct palm_bk3710_udmatiming palm_bk3710_udmatimings[6] = {
{160, 240}, /* UDMA Mode 0 */ {160, 240 / 2,}, /* UDMA Mode 0 */
{125, 160}, /* UDMA Mode 1 */ {125, 160 / 2,}, /* UDMA Mode 1 */
{100, 120}, /* UDMA Mode 2 */ {100, 120 / 2,}, /* UDMA Mode 2 */
{100, 90}, /* UDMA Mode 3 */ {100, 90 / 2,}, /* UDMA Mode 3 */
{100, 60}, /* UDMA Mode 4 */ {100, 60 / 2,}, /* UDMA Mode 4 */
{85, 40}, /* UDMA Mode 5 */ {85, 40 / 2,}, /* UDMA Mode 5 */
}; };
static void palm_bk3710_setudmamode(void __iomem *base, unsigned int dev, static void palm_bk3710_setudmamode(void __iomem *base, unsigned int dev,
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/stddef.h> #include <linux/stddef.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/ide.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <asm/prom.h> #include <asm/prom.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment