[parisc-linux] How to configure EISA network card in 715/80

Matthew Wilcox willy@debian.org
Fri, 11 Jan 2002 21:54:06 +0000


On Fri, Jan 11, 2002 at 08:00:16PM +0000, Matthew Wilcox wrote:
> This is a very different problem -- your machine at least finds the
> EISA adapter.  I'm interesting in debugging it though; please send a
> full dmesg to me in personal mail.

based on the information you sent, try this patch:

Index: drivers/gsc/dino.c
===================================================================
RCS file: /var/cvs/linux/drivers/gsc/dino.c,v
retrieving revision 1.51
diff -u -p -r1.51 dino.c
--- drivers/gsc/dino.c	2002/01/09 00:13:53	1.51
+++ drivers/gsc/dino.c	2002/01/11 21:37:44
@@ -466,15 +464,6 @@ dino_bios_init(void)
  * Claim an 8MB chunk of unused IO space and call the generic PCI routines
  * to set up the addresses of the devices on this bus.
  */
-#ifdef CONFIG_IOMMU_CCIO
-struct ioc;
-void ccio_extend_mmio_range(struct ioc *ioc);
-struct resource * ccio_find_parisc_resource(struct ioc *ioc);
-#else /* !CONFIG_IOMMU_CCIO */
-#define ccio_extend_mmio_range()
-#define ccio_find_parisc_resource(x) &iomem_resource
-#endif /* !CONFIG_IOMMU_CCIO */
-
 #define _8MB 0x00800000
 static void __init
 dino_card_setup(struct pci_bus *bus, unsigned long base_addr)
Index: drivers/gsc/eisa.c
===================================================================
RCS file: /var/cvs/linux/drivers/gsc/eisa.c,v
retrieving revision 1.13
diff -u -p -r1.13 eisa.c
--- drivers/gsc/eisa.c	2001/11/13 20:42:43	1.13
+++ drivers/gsc/eisa.c	2002/01/11 21:37:44
@@ -311,16 +311,22 @@ static void init_eisa_pic(void)
 static int __devinit eisa_probe(struct parisc_device *dev)
 {
 	int result;
+	struct resource *parent_resource;
+
 	char *name = is_mongoose(dev) ? "Mongoose" : "Wax";
 
 	printk(KERN_INFO "%s EISA Adapter found at 0x%08lx\n", 
 		name, dev->hpa);
-   
+
+	eisa_dev.hba.dev = dev;
+	eisa_dev.hba.iommu = ccio_get_iommu(dev);
+	parent_resource = ccio_find_parisc_resource(eisa_dev.hba.iommu);
+
 	eisa_dev.hba.lmmio_space.name = "EISA";
 	eisa_dev.hba.lmmio_space.start = (unsigned long) 0xfffffffffc000000;
 	eisa_dev.hba.lmmio_space.end = (unsigned long) 0xffffffffffbfffff;
 	eisa_dev.hba.lmmio_space.flags = IORESOURCE_MEM;
-	result = request_resource(&iomem_resource, &eisa_dev.hba.lmmio_space);
+	result = request_resource(parent_resource, &eisa_dev.hba.lmmio_space);
 	if (result < 0) {
 		printk(KERN_ERR "EISA: failed to claim EISA Bus address space!\n");
 		return result;
Index: include/asm-parisc/pci.h
===================================================================
RCS file: /var/cvs/linux/include/asm-parisc/pci.h,v
retrieving revision 1.39
diff -u -p -r1.39 pci.h
--- include/asm-parisc/pci.h	2002/01/07 23:51:15	1.39
+++ include/asm-parisc/pci.h	2002/01/11 21:37:46
@@ -247,11 +247,16 @@ extern inline void pcibios_register_hba(
 
 #ifdef CONFIG_IOMMU_CCIO
 struct parisc_device;
+struct ioc;
 void * ccio_get_iommu(struct parisc_device *dev);
 struct pci_dev * ccio_get_fake(struct parisc_device *dev);
+void ccio_extend_mmio_range(struct ioc *ioc);
+struct resource * ccio_find_parisc_resource(struct ioc *ioc);
 #else /* !CONFIG_IOMMU_CCIO */
-#define ccio_get_iommu(dev) (NULL)
-#define ccio_get_fake(dev) (NULL)
+#define ccio_get_iommu(dev) do { } while (0)
+#define ccio_get_fake(dev) do { } while (0)
+#define ccio_extend_mmio_range(ioc) do { } while (0)
+#define ccio_find_parisc_resource(x) &iomem_resource
 #endif /* !CONFIG_IOMMU_CCIO */
 
 #ifdef CONFIG_IOMMU_SBA

-- 
Revolutions do not require corporate support.