Browse Source

[PARISC] Fix Dino reporting on J2240

Fix Dino reporting on J2240. This particular machine thought it
had a Cujo. Also add J2240 Dino chip to the hp_hardware_list.

Signed-off-by: Matthew Wilcox <willy@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Matthew Wilcox 19 years ago
parent
commit
f45adcf977
2 changed files with 5 additions and 4 deletions
  1. 1 0
      arch/parisc/kernel/hardware.c
  2. 4 4
      drivers/parisc/dino.c

+ 1 - 0
arch/parisc/kernel/hardware.c

@@ -551,6 +551,7 @@ static struct hp_hardware hp_hardware_list[] __initdata = {
 	{HPHW_BCPORT, 0x804, 0x0000C, 0x10, "REO I/O BC Merced Port"}, 
 	{HPHW_BCPORT, 0x804, 0x0000C, 0x10, "REO I/O BC Merced Port"}, 
 	{HPHW_BCPORT, 0x782, 0x0000C, 0x00, "REO I/O BC Ropes Port"}, 
 	{HPHW_BCPORT, 0x782, 0x0000C, 0x00, "REO I/O BC Ropes Port"}, 
 	{HPHW_BCPORT, 0x784, 0x0000C, 0x00, "Pluto I/O BC Ropes Port"}, 
 	{HPHW_BCPORT, 0x784, 0x0000C, 0x00, "Pluto I/O BC Ropes Port"}, 
+	{HPHW_BRIDGE, 0x05D, 0x0000A, 0x00, "SummitHawk Dino PCI Bridge"}, 
 	{HPHW_BRIDGE, 0x680, 0x0000A, 0x00, "Dino PCI Bridge"}, 
 	{HPHW_BRIDGE, 0x680, 0x0000A, 0x00, "Dino PCI Bridge"}, 
 	{HPHW_BRIDGE, 0x682, 0x0000A, 0x00, "Cujo PCI Bridge"}, 
 	{HPHW_BRIDGE, 0x682, 0x0000A, 0x00, "Cujo PCI Bridge"}, 
 	{HPHW_BRIDGE, 0x782, 0x0000A, 0x00, "Elroy PCI Bridge"}, 
 	{HPHW_BRIDGE, 0x782, 0x0000A, 0x00, "Elroy PCI Bridge"}, 

+ 4 - 4
drivers/parisc/dino.c

@@ -83,7 +83,8 @@
 ** bus number for each dino.
 ** bus number for each dino.
 */
 */
 
 
-#define is_card_dino(id) ((id)->hw_type == HPHW_A_DMA)
+#define is_card_dino(id)	((id)->hw_type == HPHW_A_DMA)
+#define is_cujo(id)		((id)->hversion == 0x682)
 
 
 #define DINO_IAR0		0x004
 #define DINO_IAR0		0x004
 #define DINO_IODC_ADDR		0x008
 #define DINO_IODC_ADDR		0x008
@@ -682,7 +683,6 @@ dino_fixup_bus(struct pci_bus *bus)
 			printk(KERN_WARNING "Device %s has unassigned IRQ\n", pci_name(dev));
 			printk(KERN_WARNING "Device %s has unassigned IRQ\n", pci_name(dev));
 #endif
 #endif
 		} else {
 		} else {
-
 			/* Adjust INT_LINE for that busses region */
 			/* Adjust INT_LINE for that busses region */
 			dino_assign_irq(dino_dev, dev->irq, &dev->irq);
 			dino_assign_irq(dino_dev, dev->irq, &dev->irq);
 		}
 		}
@@ -888,7 +888,7 @@ static int __init dino_common_init(struct parisc_device *dev,
 
 
 	/* allocate I/O Port resource region */
 	/* allocate I/O Port resource region */
 	res = &dino_dev->hba.io_space;
 	res = &dino_dev->hba.io_space;
-	if (dev->id.hversion == 0x680 || is_card_dino(&dev->id)) {
+	if (!is_cujo(&dev->id)) {
 		res->name = "Dino I/O Port";
 		res->name = "Dino I/O Port";
 	} else {
 	} else {
 		res->name = "Cujo I/O Port";
 		res->name = "Cujo I/O Port";
@@ -943,7 +943,7 @@ static int __init dino_probe(struct parisc_device *dev)
 	if (is_card_dino(&dev->id)) {
 	if (is_card_dino(&dev->id)) {
 		version = "3.x (card mode)";
 		version = "3.x (card mode)";
 	} else {
 	} else {
-		if(dev->id.hversion == 0x680) {
+		if (!is_cujo(&dev->id)) {
 			if (dev->id.hversion_rev < 4) {
 			if (dev->id.hversion_rev < 4) {
 				version = dino_vers[dev->id.hversion_rev];
 				version = dino_vers[dev->id.hversion_rev];
 			}
 			}