Make isa_probe_addr a simple integer rather than a struct, to facilitate
authorMichael Brown <mcb30@etherboot.org>
Sat, 16 Apr 2005 09:30:48 +0000 (09:30 +0000)
committerMichael Brown <mcb30@etherboot.org>
Sat, 16 Apr 2005 09:30:48 +0000 (09:30 +0000)
specification of ISA_PROBE_ADDRS.

src/drivers/bus/isa.c
src/drivers/net/cs89x0.c
src/drivers/net/depca.c
src/drivers/net/eepro.c
src/drivers/net/skel.c
src/drivers/net/smc9000.c
src/include/isa.h

index e2c1e7a..a4af120 100644 (file)
  * instead.  Some cards (e.g. the 3c509) implement a proprietary
  * ISAPnP-like mechanism.
  *
- * The ISA probe address list can be overridden by config.c; if 
+ * The ISA probe address list can be overridden by config.c; if the
+ * user specifies ISA_PROBE_ADDRS then that list will be used first.
+ * (If ISA_PROBE_ADDRS ends with a zero, the driver's own list will
+ * never be used).
  */
 
 /*
@@ -49,7 +52,7 @@ int find_isa_device ( struct isa_device *isa, struct isa_driver *driver ) {
                }
 
                /* Set I/O address */
-               ioaddr = isa_extra_probe_addrs[i].addr;
+               ioaddr = isa_extra_probe_addrs[i];
 
                /* An I/O address of 0 in extra_probe_addrs list means
                 * stop probing (i.e. don't continue to the
@@ -80,7 +83,7 @@ int find_isa_device ( struct isa_device *isa, struct isa_driver *driver ) {
                }
 
                /* Set I/O address */
-               ioaddr = driver->probe_addrs[i].addr;
+               ioaddr = driver->probe_addrs[i];
 
                /* Use probe_addr method to see if there's a device
                 * present at this address.
index c2d09fa..3c7dc00 100644 (file)
@@ -463,7 +463,7 @@ static struct nic_operations cs89x0_operations = {
 ETH_PROBE - Look for an adapter
 ***************************************************************************/
 
-static int cs89x0_probe_addr ( uint16_t ioaddr ) {
+static int cs89x0_probe_addr ( isa_probe_addr_t ioaddr ) {
        /* if they give us an odd I/O address, then do ONE write to
           the address port, to get it back to address zero, where we
           expect to find the EISA signature word. */
@@ -685,14 +685,14 @@ static int cs89x0_probe ( struct dev *dev, struct isa_device *isa ) {
        return 1;
 }
        
-static struct isa_probe_addr cs89x0_probe_addrs[] = { 
+static isa_probe_addr_t cs89x0_probe_addrs[] = { 
 #ifndef EMBEDDED
        /* use "conservative" default values for autoprobing */
-       { 0x300 }, { 0x320 }, { 0x340 }, { 0x200 }, { 0x220 }, { 0x240 },
-       { 0x260 }, { 0x280 }, { 0x2a0 }, { 0x2c0 }, { 0x2e0 },
+       0x300, 0x320, 0x340, 0x200, 0x220, 0x240,
+       0x260, 0x280, 0x2a0, 0x2c0, 0x2e0,
        /* if that did not work, then be more aggressive */
-       { 0x301 }, { 0x321 }, { 0x341 }, { 0x201 }, { 0x221 }, { 0x241 },
-       { 0x261 }, { 0x281 }, { 0x2a1 }, { 0x2c1 }, { 0x2e1 },
+       0x301, 0x321, 0x341, 0x201, 0x221, 0x241,
+       0x261, 0x281, 0x2a1, 0x2c1, 0x2e1,
 #else
        0x01000300,
 #endif
index 45cc2d7..78339b0 100644 (file)
@@ -695,7 +695,7 @@ static void depca_irq(struct nic *nic __unused, irq_action_t action __unused)
 static u8 nicsr;
 
 
-static int depca_probe1 ( uint16_t ioaddr ) {
+static int depca_probe1 ( isa_probe_addr_t ioaddr ) {
        u8      data;
        /* This is only correct for little endian machines, but then
           Etherboot doesn't work on anything but a PC */
@@ -787,8 +787,8 @@ static int depca_probe ( struct dev *dev, struct isa_device *isa ) {
        return 1;
 }
 
-static struct isa_probe_addr depca_probe_addrs[] = {
-       { 0x300 }, { 0x200 },
+static isa_probe_addr_t depca_probe_addrs[] = {
+       0x300, 0x200,
 };
 
 static struct isa_driver depca_driver =
index d97b249..a2b75e0 100644 (file)
@@ -516,7 +516,7 @@ static int read_eeprom(uint16_t ioaddr, int location)
        return (retval);
 }
 
-static int eepro_probe1 ( uint16_t ioaddr ) {
+static int eepro_probe1 ( isa_probe_addr_t ioaddr ) {
        int             id, counter;
 
        id = inb(ioaddr + ID_REG);
@@ -600,10 +600,8 @@ static int eepro_probe ( struct dev *dev, struct isa_device *isa ) {
        return 1;
 }
 
-static struct isa_probe_addr eepro_probe_addrs[] = {
-       { 0x300 },
-       { 0x210 }, { 0x240 }, { 0x280 }, { 0x2C0 }, { 0x200 },
-       { 0x320 }, { 0x340 }, { 0x360 },
+static isa_probe_addr_t eepro_probe_addrs[] = {
+       0x300, 0x210, 0x240, 0x280, 0x2C0, 0x200, 0x320, 0x340, 0x360,
 };
 
 static struct isa_driver eepro_driver =
index e47fdb2..369f841 100644 (file)
@@ -349,7 +349,7 @@ ISA_ROM ( "skel-mca", "Skeleton MCA Adapter" );
  *
  **************************************************************************
  */
-static int skel_isa_probe_addr ( uint16_t ioaddr __unused ) {
+static int skel_isa_probe_addr ( isa_probe_addr_t ioaddr __unused ) {
        return 0;
 }
 
@@ -372,9 +372,9 @@ static int skel_isa_probe ( struct dev *dev, struct isa_device *isa ) {
        return 1;
 }
 
-static struct isa_probe_addr skel_isa_probe_addrs[] = {
+static isa_probe_addr_t skel_isa_probe_addrs[] = {
        /*
-          { 0x200 }, { 0x240 },
+          0x200, 0x240,
        */
 };
 
index 09345a6..6cadcd0 100644 (file)
@@ -108,7 +108,7 @@ static void smc_reset(int ioaddr)
  *
  * ---------------------------------------------------------------------
  */
-static int smc9000_probe_addr( unsigned short ioaddr )
+static int smc9000_probe_addr( isa_probe_addr_t ioaddr )
 {
    word bank;
    word        revision_register;
@@ -483,11 +483,9 @@ static int smc9000_probe ( struct dev *dev, struct isa_device *isa ) {
  * change for a slightly different card, you can add it to the array.
  *
  */
-static struct isa_probe_addr smc9000_probe_addrs[] = {
-   { 0x200 }, { 0x220 }, { 0x240 }, { 0x260 },
-   { 0x280 }, { 0x2A0 }, { 0x2C0 }, { 0x2E0 },
-   { 0x300 }, { 0x320 }, { 0x340 }, { 0x360 },
-   { 0x380 }, { 0x3A0 }, { 0x3C0 }, { 0x3E0 },
+static isa_probe_addr_t smc9000_probe_addrs[] = {
+   0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0,
+   0x300, 0x320, 0x340, 0x360, 0x380, 0x3A0, 0x3C0, 0x3E0,
 };
 
 static struct isa_driver smc9000_driver =
index b1107e5..a76e526 100644 (file)
@@ -19,9 +19,7 @@ struct isa_device {
  * An individual ISA device, identified by probe address
  *
  */
-struct isa_probe_addr {
-       uint16_t addr;
-} __attribute__ (( packed ));
+typedef uint16_t isa_probe_addr_t;
 
 /*
  * An ISA driver, with a probe address list and a probe_addr method.
@@ -32,9 +30,9 @@ struct isa_probe_addr {
  */
 struct isa_driver {
        const char *name;
-       struct isa_probe_addr *probe_addrs;
+       isa_probe_addr_t *probe_addrs;
        unsigned int addr_count;
-       int ( * probe_addr ) ( uint16_t addr );
+       int ( * probe_addr ) ( isa_probe_addr_t addr );
        uint16_t mfg_id;
        uint16_t prod_id;
 };
@@ -72,7 +70,7 @@ extern int find_isa_boot_device ( struct dev *dev,
  * config.c defines isa_extra_probe_addrs and isa_extra_probe_addr_count.
  *
  */
-extern struct isa_probe_addr isa_extra_probe_addrs[];
+extern isa_probe_addr_t isa_extra_probe_addrs[];
 extern unsigned int isa_extra_probe_addr_count;
 
 #endif /* ISA_H */