Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: sparc: Fix user_regset 'n' field values. sparc64: Fix PCI error interrupt registry on PSYCHO. sparc32: Fix function signature of of_bus_sbus_get_flags(). sparc64: Fix interrupt register calculations on Psycho and Sabre.
This commit is contained in:
commit
344a7829c4
|
@ -241,7 +241,7 @@ static int of_bus_sbus_map(u32 *addr, const u32 *range, int na, int ns, int pna)
|
|||
return of_bus_default_map(addr, range, na, ns, pna);
|
||||
}
|
||||
|
||||
static unsigned int of_bus_sbus_get_flags(const u32 *addr)
|
||||
static unsigned long of_bus_sbus_get_flags(const u32 *addr, unsigned long flags)
|
||||
{
|
||||
return IORESOURCE_MEM;
|
||||
}
|
||||
|
|
|
@ -288,7 +288,7 @@ static const struct user_regset sparc32_regsets[] = {
|
|||
*/
|
||||
[REGSET_GENERAL] = {
|
||||
.core_note_type = NT_PRSTATUS,
|
||||
.n = 38 * sizeof(u32),
|
||||
.n = 38,
|
||||
.size = sizeof(u32), .align = sizeof(u32),
|
||||
.get = genregs32_get, .set = genregs32_set
|
||||
},
|
||||
|
@ -304,7 +304,7 @@ static const struct user_regset sparc32_regsets[] = {
|
|||
*/
|
||||
[REGSET_FP] = {
|
||||
.core_note_type = NT_PRFPREG,
|
||||
.n = 99 * sizeof(u32),
|
||||
.n = 99,
|
||||
.size = sizeof(u32), .align = sizeof(u32),
|
||||
.get = fpregs32_get, .set = fpregs32_set
|
||||
},
|
||||
|
|
|
@ -744,16 +744,16 @@ static void psycho_register_error_handlers(struct pci_pbm_info *pbm)
|
|||
* the second will just error out since we do not pass in
|
||||
* IRQF_SHARED.
|
||||
*/
|
||||
err = request_irq(op->irqs[1], psycho_ue_intr, 0,
|
||||
err = request_irq(op->irqs[1], psycho_ue_intr, IRQF_SHARED,
|
||||
"PSYCHO_UE", pbm);
|
||||
err = request_irq(op->irqs[2], psycho_ce_intr, 0,
|
||||
err = request_irq(op->irqs[2], psycho_ce_intr, IRQF_SHARED,
|
||||
"PSYCHO_CE", pbm);
|
||||
|
||||
/* This one, however, ought not to fail. We can just warn
|
||||
* about it since the system can still operate properly even
|
||||
* if this fails.
|
||||
*/
|
||||
err = request_irq(op->irqs[0], psycho_pcierr_intr, 0,
|
||||
err = request_irq(op->irqs[0], psycho_pcierr_intr, IRQF_SHARED,
|
||||
"PSYCHO_PCIERR", pbm);
|
||||
if (err)
|
||||
printk(KERN_WARNING "%s: Could not register PCIERR, "
|
||||
|
|
|
@ -156,55 +156,11 @@ static unsigned long psycho_pcislot_imap_offset(unsigned long ino)
|
|||
return PSYCHO_IMAP_B_SLOT0 + (slot * 8);
|
||||
}
|
||||
|
||||
#define PSYCHO_IMAP_SCSI 0x1000UL
|
||||
#define PSYCHO_IMAP_ETH 0x1008UL
|
||||
#define PSYCHO_IMAP_BPP 0x1010UL
|
||||
#define PSYCHO_IMAP_AU_REC 0x1018UL
|
||||
#define PSYCHO_IMAP_AU_PLAY 0x1020UL
|
||||
#define PSYCHO_IMAP_PFAIL 0x1028UL
|
||||
#define PSYCHO_IMAP_KMS 0x1030UL
|
||||
#define PSYCHO_IMAP_FLPY 0x1038UL
|
||||
#define PSYCHO_IMAP_SHW 0x1040UL
|
||||
#define PSYCHO_IMAP_KBD 0x1048UL
|
||||
#define PSYCHO_IMAP_MS 0x1050UL
|
||||
#define PSYCHO_IMAP_SER 0x1058UL
|
||||
#define PSYCHO_IMAP_TIM0 0x1060UL
|
||||
#define PSYCHO_IMAP_TIM1 0x1068UL
|
||||
#define PSYCHO_IMAP_UE 0x1070UL
|
||||
#define PSYCHO_IMAP_CE 0x1078UL
|
||||
#define PSYCHO_IMAP_A_ERR 0x1080UL
|
||||
#define PSYCHO_IMAP_B_ERR 0x1088UL
|
||||
#define PSYCHO_IMAP_PMGMT 0x1090UL
|
||||
#define PSYCHO_IMAP_GFX 0x1098UL
|
||||
#define PSYCHO_IMAP_EUPA 0x10a0UL
|
||||
#define PSYCHO_OBIO_IMAP_BASE 0x1000UL
|
||||
|
||||
static unsigned long __psycho_onboard_imap_off[] = {
|
||||
/*0x20*/ PSYCHO_IMAP_SCSI,
|
||||
/*0x21*/ PSYCHO_IMAP_ETH,
|
||||
/*0x22*/ PSYCHO_IMAP_BPP,
|
||||
/*0x23*/ PSYCHO_IMAP_AU_REC,
|
||||
/*0x24*/ PSYCHO_IMAP_AU_PLAY,
|
||||
/*0x25*/ PSYCHO_IMAP_PFAIL,
|
||||
/*0x26*/ PSYCHO_IMAP_KMS,
|
||||
/*0x27*/ PSYCHO_IMAP_FLPY,
|
||||
/*0x28*/ PSYCHO_IMAP_SHW,
|
||||
/*0x29*/ PSYCHO_IMAP_KBD,
|
||||
/*0x2a*/ PSYCHO_IMAP_MS,
|
||||
/*0x2b*/ PSYCHO_IMAP_SER,
|
||||
/*0x2c*/ PSYCHO_IMAP_TIM0,
|
||||
/*0x2d*/ PSYCHO_IMAP_TIM1,
|
||||
/*0x2e*/ PSYCHO_IMAP_UE,
|
||||
/*0x2f*/ PSYCHO_IMAP_CE,
|
||||
/*0x30*/ PSYCHO_IMAP_A_ERR,
|
||||
/*0x31*/ PSYCHO_IMAP_B_ERR,
|
||||
/*0x32*/ PSYCHO_IMAP_PMGMT,
|
||||
/*0x33*/ PSYCHO_IMAP_GFX,
|
||||
/*0x34*/ PSYCHO_IMAP_EUPA,
|
||||
};
|
||||
#define PSYCHO_ONBOARD_IRQ_BASE 0x20
|
||||
#define PSYCHO_ONBOARD_IRQ_LAST 0x34
|
||||
#define psycho_onboard_imap_offset(__ino) \
|
||||
__psycho_onboard_imap_off[(__ino) - PSYCHO_ONBOARD_IRQ_BASE]
|
||||
(PSYCHO_OBIO_IMAP_BASE + (((__ino) & 0x1f) << 3))
|
||||
|
||||
#define PSYCHO_ICLR_A_SLOT0 0x1400UL
|
||||
#define PSYCHO_ICLR_SCSI 0x1800UL
|
||||
|
@ -228,10 +184,6 @@ static unsigned int psycho_irq_build(struct device_node *dp,
|
|||
imap_off = psycho_pcislot_imap_offset(ino);
|
||||
} else {
|
||||
/* Onboard device */
|
||||
if (ino > PSYCHO_ONBOARD_IRQ_LAST) {
|
||||
prom_printf("psycho_irq_build: Wacky INO [%x]\n", ino);
|
||||
prom_halt();
|
||||
}
|
||||
imap_off = psycho_onboard_imap_offset(ino);
|
||||
}
|
||||
|
||||
|
@ -318,23 +270,6 @@ static void sabre_wsync_handler(unsigned int ino, void *_arg1, void *_arg2)
|
|||
|
||||
#define SABRE_IMAP_A_SLOT0 0x0c00UL
|
||||
#define SABRE_IMAP_B_SLOT0 0x0c20UL
|
||||
#define SABRE_IMAP_SCSI 0x1000UL
|
||||
#define SABRE_IMAP_ETH 0x1008UL
|
||||
#define SABRE_IMAP_BPP 0x1010UL
|
||||
#define SABRE_IMAP_AU_REC 0x1018UL
|
||||
#define SABRE_IMAP_AU_PLAY 0x1020UL
|
||||
#define SABRE_IMAP_PFAIL 0x1028UL
|
||||
#define SABRE_IMAP_KMS 0x1030UL
|
||||
#define SABRE_IMAP_FLPY 0x1038UL
|
||||
#define SABRE_IMAP_SHW 0x1040UL
|
||||
#define SABRE_IMAP_KBD 0x1048UL
|
||||
#define SABRE_IMAP_MS 0x1050UL
|
||||
#define SABRE_IMAP_SER 0x1058UL
|
||||
#define SABRE_IMAP_UE 0x1070UL
|
||||
#define SABRE_IMAP_CE 0x1078UL
|
||||
#define SABRE_IMAP_PCIERR 0x1080UL
|
||||
#define SABRE_IMAP_GFX 0x1098UL
|
||||
#define SABRE_IMAP_EUPA 0x10a0UL
|
||||
#define SABRE_ICLR_A_SLOT0 0x1400UL
|
||||
#define SABRE_ICLR_B_SLOT0 0x1480UL
|
||||
#define SABRE_ICLR_SCSI 0x1800UL
|
||||
|
@ -364,33 +299,10 @@ static unsigned long sabre_pcislot_imap_offset(unsigned long ino)
|
|||
return SABRE_IMAP_B_SLOT0 + (slot * 8);
|
||||
}
|
||||
|
||||
static unsigned long __sabre_onboard_imap_off[] = {
|
||||
/*0x20*/ SABRE_IMAP_SCSI,
|
||||
/*0x21*/ SABRE_IMAP_ETH,
|
||||
/*0x22*/ SABRE_IMAP_BPP,
|
||||
/*0x23*/ SABRE_IMAP_AU_REC,
|
||||
/*0x24*/ SABRE_IMAP_AU_PLAY,
|
||||
/*0x25*/ SABRE_IMAP_PFAIL,
|
||||
/*0x26*/ SABRE_IMAP_KMS,
|
||||
/*0x27*/ SABRE_IMAP_FLPY,
|
||||
/*0x28*/ SABRE_IMAP_SHW,
|
||||
/*0x29*/ SABRE_IMAP_KBD,
|
||||
/*0x2a*/ SABRE_IMAP_MS,
|
||||
/*0x2b*/ SABRE_IMAP_SER,
|
||||
/*0x2c*/ 0 /* reserved */,
|
||||
/*0x2d*/ 0 /* reserved */,
|
||||
/*0x2e*/ SABRE_IMAP_UE,
|
||||
/*0x2f*/ SABRE_IMAP_CE,
|
||||
/*0x30*/ SABRE_IMAP_PCIERR,
|
||||
/*0x31*/ 0 /* reserved */,
|
||||
/*0x32*/ 0 /* reserved */,
|
||||
/*0x33*/ SABRE_IMAP_GFX,
|
||||
/*0x34*/ SABRE_IMAP_EUPA,
|
||||
};
|
||||
#define SABRE_ONBOARD_IRQ_BASE 0x20
|
||||
#define SABRE_ONBOARD_IRQ_LAST 0x30
|
||||
#define SABRE_OBIO_IMAP_BASE 0x1000UL
|
||||
#define SABRE_ONBOARD_IRQ_BASE 0x20
|
||||
#define sabre_onboard_imap_offset(__ino) \
|
||||
__sabre_onboard_imap_off[(__ino) - SABRE_ONBOARD_IRQ_BASE]
|
||||
(SABRE_OBIO_IMAP_BASE + (((__ino) & 0x1f) << 3))
|
||||
|
||||
#define sabre_iclr_offset(ino) \
|
||||
((ino & 0x20) ? (SABRE_ICLR_SCSI + (((ino) & 0x1f) << 3)) : \
|
||||
|
@ -453,10 +365,6 @@ static unsigned int sabre_irq_build(struct device_node *dp,
|
|||
imap_off = sabre_pcislot_imap_offset(ino);
|
||||
} else {
|
||||
/* onboard device */
|
||||
if (ino > SABRE_ONBOARD_IRQ_LAST) {
|
||||
prom_printf("sabre_irq_build: Wacky INO [%x]\n", ino);
|
||||
prom_halt();
|
||||
}
|
||||
imap_off = sabre_onboard_imap_offset(ino);
|
||||
}
|
||||
|
||||
|
|
|
@ -443,7 +443,7 @@ static const struct user_regset sparc64_regsets[] = {
|
|||
*/
|
||||
[REGSET_GENERAL] = {
|
||||
.core_note_type = NT_PRSTATUS,
|
||||
.n = 36 * sizeof(u64),
|
||||
.n = 36,
|
||||
.size = sizeof(u64), .align = sizeof(u64),
|
||||
.get = genregs64_get, .set = genregs64_set
|
||||
},
|
||||
|
@ -455,7 +455,7 @@ static const struct user_regset sparc64_regsets[] = {
|
|||
*/
|
||||
[REGSET_FP] = {
|
||||
.core_note_type = NT_PRFPREG,
|
||||
.n = 35 * sizeof(u64),
|
||||
.n = 35,
|
||||
.size = sizeof(u64), .align = sizeof(u64),
|
||||
.get = fpregs64_get, .set = fpregs64_set
|
||||
},
|
||||
|
@ -801,7 +801,7 @@ static const struct user_regset sparc32_regsets[] = {
|
|||
*/
|
||||
[REGSET_GENERAL] = {
|
||||
.core_note_type = NT_PRSTATUS,
|
||||
.n = 38 * sizeof(u32),
|
||||
.n = 38,
|
||||
.size = sizeof(u32), .align = sizeof(u32),
|
||||
.get = genregs32_get, .set = genregs32_set
|
||||
},
|
||||
|
@ -817,7 +817,7 @@ static const struct user_regset sparc32_regsets[] = {
|
|||
*/
|
||||
[REGSET_FP] = {
|
||||
.core_note_type = NT_PRFPREG,
|
||||
.n = 99 * sizeof(u32),
|
||||
.n = 99,
|
||||
.size = sizeof(u32), .align = sizeof(u32),
|
||||
.get = fpregs32_get, .set = fpregs32_set
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue