Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
authorDavid S. Miller <davem@davemloft.net>
Wed, 19 May 2010 06:01:55 +0000 (23:01 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 19 May 2010 06:01:55 +0000 (23:01 -0700)
Conflicts:
include/linux/mod_devicetable.h
scripts/mod/file2alias.c

1  2 
MAINTAINERS
drivers/net/a2065.c
drivers/net/ariadne.c
drivers/net/zorro8390.c
include/linux/kernel.h
include/linux/mod_devicetable.h
scripts/mod/file2alias.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -474,30 -474,13 +474,39 @@@ struct platform_device_id 
                        __attribute__((aligned(sizeof(kernel_ulong_t))));
  };
  
 +#define MDIO_MODULE_PREFIX    "mdio:"
 +
 +#define MDIO_ID_FMT "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
 +#define MDIO_ID_ARGS(_id) \
 +      (_id)>>31, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1,   \
 +      ((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \
 +      ((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \
 +      ((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \
 +      ((_id)>>15) & 1, ((_id)>>14) & 1, ((_id)>>13) & 1, ((_id)>>12) & 1, \
 +      ((_id)>>11) & 1, ((_id)>>10) & 1, ((_id)>>9) & 1, ((_id)>>8) & 1, \
 +      ((_id)>>7) & 1, ((_id)>>6) & 1, ((_id)>>5) & 1, ((_id)>>4) & 1, \
 +      ((_id)>>3) & 1, ((_id)>>2) & 1, ((_id)>>1) & 1, (_id) & 1
 +
 +/**
 + * struct mdio_device_id - identifies PHY devices on an MDIO/MII bus
 + * @phy_id: The result of
 + *     (mdio_read(&MII_PHYSID1) << 16 | mdio_read(&PHYSID2)) & @phy_id_mask
 + *     for this PHY type
 + * @phy_id_mask: Defines the significant bits of @phy_id.  A value of 0
 + *     is used to terminate an array of struct mdio_device_id.
 + */
 +struct mdio_device_id {
 +      __u32 phy_id;
 +      __u32 phy_id_mask;
 +};
 +
+ struct zorro_device_id {
+       __u32 id;                       /* Device ID or ZORRO_WILDCARD */
+       kernel_ulong_t driver_data;     /* Data private to the driver */
+ };
+ #define ZORRO_WILDCARD                        (0xffffffff)    /* not official */
+ #define ZORRO_DEVICE_MODALIAS_FMT     "zorro:i%08X"
  #endif /* LINUX_MOD_DEVICETABLE_H */
@@@ -796,28 -796,16 +796,38 @@@ static int do_platform_entry(const cha
        return 1;
  }
  
 +static int do_mdio_entry(const char *filename,
 +                       struct mdio_device_id *id, char *alias)
 +{
 +      int i;
 +
 +      alias += sprintf(alias, MDIO_MODULE_PREFIX);
 +
 +      for (i = 0; i < 32; i++) {
 +              if (!((id->phy_id_mask >> (31-i)) & 1))
 +                      *(alias++) = '?';
 +              else if ((id->phy_id >> (31-i)) & 1)
 +                      *(alias++) = '1';
 +              else
 +                      *(alias++) = '0';
 +      }
 +
 +      /* Terminate the string */
 +      *alias = 0;
 +
 +      return 1;
 +}
 +
+ /* Looks like: zorro:iN. */
+ static int do_zorro_entry(const char *filename, struct zorro_device_id *id,
+                         char *alias)
+ {
+       id->id = TO_NATIVE(id->id);
+       strcpy(alias, "zorro:");
+       ADD(alias, "i", id->id != ZORRO_WILDCARD, id->id);
+       return 1;
+ }
  /* Ignore any prefix, eg. some architectures prepend _ */
  static inline int sym_is(const char *symbol, const char *name)
  {
@@@ -965,10 -953,10 +975,14 @@@ void handle_moddevtable(struct module *
                do_table(symval, sym->st_size,
                         sizeof(struct platform_device_id), "platform",
                         do_platform_entry, mod);
 +      else if (sym_is(symname, "__mod_mdio_device_table"))
 +              do_table(symval, sym->st_size,
 +                       sizeof(struct mdio_device_id), "mdio",
 +                       do_mdio_entry, mod);
+       else if (sym_is(symname, "__mod_zorro_device_table"))
+               do_table(symval, sym->st_size,
+                        sizeof(struct zorro_device_id), "zorro",
+                        do_zorro_entry, mod);
        free(zeros);
  }