Commit 4328527c authored by David S. Miller's avatar David S. Miller

Merge davem@nuts.davemloft.net:/disk1/BK/sparc-2.6

into hera.kernel.org:/home/davem/BK/sparc-2.6
parents 2396a8a3 ef4b19c7
...@@ -1334,7 +1334,8 @@ enum { ...@@ -1334,7 +1334,8 @@ enum {
idedisk_pm_flush_cache = ide_pm_state_start_suspend, idedisk_pm_flush_cache = ide_pm_state_start_suspend,
idedisk_pm_standby, idedisk_pm_standby,
idedisk_pm_restore_dma = ide_pm_state_start_resume, idedisk_pm_idle = ide_pm_state_start_resume,
idedisk_pm_restore_dma,
}; };
static void idedisk_complete_power_step (ide_drive_t *drive, struct request *rq, u8 stat, u8 error) static void idedisk_complete_power_step (ide_drive_t *drive, struct request *rq, u8 stat, u8 error)
...@@ -1349,6 +1350,9 @@ static void idedisk_complete_power_step (ide_drive_t *drive, struct request *rq, ...@@ -1349,6 +1350,9 @@ static void idedisk_complete_power_step (ide_drive_t *drive, struct request *rq,
case idedisk_pm_standby: /* Suspend step 2 (standby) complete */ case idedisk_pm_standby: /* Suspend step 2 (standby) complete */
rq->pm->pm_step = ide_pm_state_completed; rq->pm->pm_step = ide_pm_state_completed;
break; break;
case idedisk_pm_idle: /* Resume step 1 (idle) complete */
rq->pm->pm_step = idedisk_pm_restore_dma;
break;
} }
} }
...@@ -1372,13 +1376,20 @@ static ide_startstop_t idedisk_start_power_step (ide_drive_t *drive, struct requ ...@@ -1372,13 +1376,20 @@ static ide_startstop_t idedisk_start_power_step (ide_drive_t *drive, struct requ
args->command_type = IDE_DRIVE_TASK_NO_DATA; args->command_type = IDE_DRIVE_TASK_NO_DATA;
args->handler = &task_no_data_intr; args->handler = &task_no_data_intr;
return do_rw_taskfile(drive, args); return do_rw_taskfile(drive, args);
case idedisk_pm_standby: /* Suspend step 2 (standby) */ case idedisk_pm_standby: /* Suspend step 2 (standby) */
args->tfRegister[IDE_COMMAND_OFFSET] = WIN_STANDBYNOW1; args->tfRegister[IDE_COMMAND_OFFSET] = WIN_STANDBYNOW1;
args->command_type = IDE_DRIVE_TASK_NO_DATA; args->command_type = IDE_DRIVE_TASK_NO_DATA;
args->handler = &task_no_data_intr; args->handler = &task_no_data_intr;
return do_rw_taskfile(drive, args); return do_rw_taskfile(drive, args);
case idedisk_pm_restore_dma: /* Resume step 1 (restore DMA) */ case idedisk_pm_idle: /* Resume step 1 (idle) */
args->tfRegister[IDE_COMMAND_OFFSET] = WIN_IDLEIMMEDIATE;
args->command_type = IDE_DRIVE_TASK_NO_DATA;
args->handler = task_no_data_intr;
return do_rw_taskfile(drive, args);
case idedisk_pm_restore_dma: /* Resume step 2 (restore DMA) */
/* /*
* Right now, all we do is call hwif->ide_dma_check(drive), * Right now, all we do is call hwif->ide_dma_check(drive),
* we could be smarter and check for current xfer_speed * we could be smarter and check for current xfer_speed
......
...@@ -717,6 +717,12 @@ static unsigned int __devinit init_chipset_pdc202xx(struct pci_dev *dev, const c ...@@ -717,6 +717,12 @@ static unsigned int __devinit init_chipset_pdc202xx(struct pci_dev *dev, const c
static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif) static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev;
/* PDC20265 has problems with large LBA48 requests */
if (dev->device == PCI_DEVICE_ID_PROMISE_20265)
hwif->rqsize = 256;
hwif->autodma = 0; hwif->autodma = 0;
hwif->tuneproc = &config_chipset_for_pio; hwif->tuneproc = &config_chipset_for_pio;
hwif->quirkproc = &pdc202xx_quirkproc; hwif->quirkproc = &pdc202xx_quirkproc;
......
...@@ -1265,31 +1265,14 @@ static void isofs_read_inode(struct inode * inode) ...@@ -1265,31 +1265,14 @@ static void isofs_read_inode(struct inode * inode)
inode->i_size = isonum_733 (de->size); inode->i_size = isonum_733 (de->size);
} }
/*
* The ISO-9660 filesystem only stores 32 bits for file size.
* mkisofs handles files up to 2GB-2 = 2147483646 = 0x7FFFFFFE bytes
* in size. This is according to the large file summit paper from 1996.
* WARNING: ISO-9660 filesystems > 1 GB and even > 2 GB are fully
* legal. Do not prevent to use DVD's schilling@fokus.gmd.de
*/
if ((inode->i_size < 0 || inode->i_size > 0x7FFFFFFE) &&
sbi->s_cruft == 'n') {
printk(KERN_WARNING "Warning: defective CD-ROM. "
"Enabling \"cruft\" mount option.\n");
sbi->s_cruft = 'y';
}
/* /*
* Some dipshit decided to store some other bit of information * Some dipshit decided to store some other bit of information
* in the high byte of the file length. Catch this and holler. * in the high byte of the file length. Truncate size in case
* WARNING: this will make it impossible for a file to be > 16MB * this CDROM was mounted with the cruft option.
* on the CDROM.
*/ */
if (sbi->s_cruft == 'y' && if (sbi->s_cruft == 'y')
inode->i_size & 0xff000000) {
inode->i_size &= 0x00ffffff; inode->i_size &= 0x00ffffff;
}
if (de->interleave[0]) { if (de->interleave[0]) {
printk("Interleaved files not (yet) supported.\n"); printk("Interleaved files not (yet) supported.\n");
......
...@@ -190,28 +190,28 @@ static inline int isonum_712(char *p) ...@@ -190,28 +190,28 @@ static inline int isonum_712(char *p)
{ {
return *(s8 *)p; return *(s8 *)p;
} }
static inline int isonum_721(char *p) static inline unsigned int isonum_721(char *p)
{ {
return le16_to_cpu(get_unaligned((u16 *)p)); return le16_to_cpu(get_unaligned((u16 *)p));
} }
static inline int isonum_722(char *p) static inline unsigned int isonum_722(char *p)
{ {
return be16_to_cpu(get_unaligned((u16 *)p)); return be16_to_cpu(get_unaligned((u16 *)p));
} }
static inline int isonum_723(char *p) static inline unsigned int isonum_723(char *p)
{ {
/* Ignore bigendian datum due to broken mastering programs */ /* Ignore bigendian datum due to broken mastering programs */
return le16_to_cpu(get_unaligned((u16 *)p)); return le16_to_cpu(get_unaligned((u16 *)p));
} }
static inline int isonum_731(char *p) static inline unsigned int isonum_731(char *p)
{ {
return le32_to_cpu(get_unaligned((u32 *)p)); return le32_to_cpu(get_unaligned((u32 *)p));
} }
static inline int isonum_732(char *p) static inline unsigned int isonum_732(char *p)
{ {
return be32_to_cpu(get_unaligned((u32 *)p)); return be32_to_cpu(get_unaligned((u32 *)p));
} }
static inline int isonum_733(char *p) static inline unsigned int isonum_733(char *p)
{ {
/* Ignore bigendian datum due to broken mastering programs */ /* Ignore bigendian datum due to broken mastering programs */
return le32_to_cpu(get_unaligned((u32 *)p)); return le32_to_cpu(get_unaligned((u32 *)p));
......
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