diff options
Diffstat (limited to 'drivers/parisc')
-rw-r--r-- | drivers/parisc/lba_pci.c | 20 | ||||
-rw-r--r-- | drivers/parisc/led.c | 4 | ||||
-rw-r--r-- | drivers/parisc/power.c | 3 |
3 files changed, 22 insertions, 5 deletions
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c index 41b740aed3a3..69bd98421eb1 100644 --- a/drivers/parisc/lba_pci.c +++ b/drivers/parisc/lba_pci.c @@ -1403,9 +1403,27 @@ lba_hw_init(struct lba_device *d) WRITE_REG32(stat, d->hba.base_addr + LBA_ERROR_CONFIG); } - /* Set HF mode as the default (vs. -1 mode). */ + + /* + * Hard Fail vs. Soft Fail on PCI "Master Abort". + * + * "Master Abort" means the MMIO transaction timed out - usually due to + * the device not responding to an MMIO read. We would like HF to be + * enabled to find driver problems, though it means the system will + * crash with a HPMC. + * + * In SoftFail mode "~0L" is returned as a result of a timeout on the + * pci bus. This is like how PCI busses on x86 and most other + * architectures behave. In order to increase compatibility with + * existing (x86) PCI hardware and existing Linux drivers we enable + * Soft Faul mode on PA-RISC now too. + */ stat = READ_REG32(d->hba.base_addr + LBA_STAT_CTL); +#if defined(ENABLE_HARDFAIL) WRITE_REG32(stat | HF_ENABLE, d->hba.base_addr + LBA_STAT_CTL); +#else + WRITE_REG32(stat & ~HF_ENABLE, d->hba.base_addr + LBA_STAT_CTL); +#endif /* ** Writing a zero to STAT_CTL.rf (bit 0) will clear reset signal diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index ff1a332d76e4..0c6e8b44b4ed 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c @@ -176,7 +176,7 @@ static int led_proc_open(struct inode *inode, struct file *file) } -static ssize_t led_proc_write(struct file *file, const char *buf, +static ssize_t led_proc_write(struct file *file, const char __user *buf, size_t count, loff_t *pos) { void *data = PDE_DATA(file_inode(file)); @@ -250,7 +250,7 @@ static int __init led_create_procfs(void) if (led_type == -1) return -1; - proc_pdc_root = proc_mkdir("pdc", 0); + proc_pdc_root = proc_mkdir("pdc", NULL); if (!proc_pdc_root) return -1; if (!lcd_no_led_support) diff --git a/drivers/parisc/power.c b/drivers/parisc/power.c index e2a3112f1c98..ebaf6867b457 100644 --- a/drivers/parisc/power.c +++ b/drivers/parisc/power.c @@ -95,8 +95,7 @@ static void process_shutdown(void) /* send kill signal */ if (kill_cad_pid(SIGINT, 1)) { /* just in case killing init process failed */ - if (pm_power_off) - pm_power_off(); + machine_power_off(); } } } |