diff options
Diffstat (limited to 'arch/sh/drivers/pci/pci-sh7780.c')
-rw-r--r-- | arch/sh/drivers/pci/pci-sh7780.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/arch/sh/drivers/pci/pci-sh7780.c b/arch/sh/drivers/pci/pci-sh7780.c index 602b644c35ad..16b30a9e94bb 100644 --- a/arch/sh/drivers/pci/pci-sh7780.c +++ b/arch/sh/drivers/pci/pci-sh7780.c | |||
@@ -48,7 +48,7 @@ | |||
48 | static int __init sh7780_pci_init(void) | 48 | static int __init sh7780_pci_init(void) |
49 | { | 49 | { |
50 | unsigned int id; | 50 | unsigned int id; |
51 | int ret; | 51 | int ret, match = 0; |
52 | 52 | ||
53 | pr_debug("PCI: Starting intialization.\n"); | 53 | pr_debug("PCI: Starting intialization.\n"); |
54 | 54 | ||
@@ -56,8 +56,17 @@ static int __init sh7780_pci_init(void) | |||
56 | 56 | ||
57 | /* check for SH7780/SH7780R hardware */ | 57 | /* check for SH7780/SH7780R hardware */ |
58 | id = pci_read_reg(SH7780_PCIVID); | 58 | id = pci_read_reg(SH7780_PCIVID); |
59 | if ((id != ((SH7780_DEVICE_ID << 16) | SH7780_VENDOR_ID)) && | 59 | if ((id & 0xffff) == SH7780_VENDOR_ID) { |
60 | (id != ((SH7781_DEVICE_ID << 16) | SH7780_VENDOR_ID))) { | 60 | switch ((id >> 16) & 0xffff) { |
61 | case SH7780_DEVICE_ID: | ||
62 | case SH7781_DEVICE_ID: | ||
63 | case SH7785_DEVICE_ID: | ||
64 | match = 1; | ||
65 | break; | ||
66 | } | ||
67 | } | ||
68 | |||
69 | if (unlikely(!match)) { | ||
61 | printk(KERN_ERR "PCI: This is not an SH7780 (%x)\n", id); | 70 | printk(KERN_ERR "PCI: This is not an SH7780 (%x)\n", id); |
62 | return -ENODEV; | 71 | return -ENODEV; |
63 | } | 72 | } |
@@ -138,7 +147,7 @@ int __init sh7780_pcic_init(struct sh4_pci_address_map *map) | |||
138 | * DMA interrupts... | 147 | * DMA interrupts... |
139 | */ | 148 | */ |
140 | 149 | ||
141 | #ifdef CONFIG_SH_R7780RP | 150 | #ifdef CONFIG_SH_HIGHLANDER |
142 | pci_fixup_pcic(); | 151 | pci_fixup_pcic(); |
143 | #endif | 152 | #endif |
144 | 153 | ||