int  lm_match(struct lm_softc *);
int  wb_match(struct lm_softc *);
int  def_match(struct lm_softc *);

struct lm_chip {
        int (*chip_match)(struct lm_softc *);
};

struct lm_chip lm_chips[] = {
        { wb_match },
        { lm_match },
        { def_match } /* Must be last */
};

void
lm_attach(struct lm_softc *sc)
{
        u_int i, config;

        for (i = 0; i < sizeof(lm_chips) / sizeof(lm_chips[0]); i++)
                if (lm_chips[i].chip_match(sc))
                        break;

J'ai remis bout à bout les bons morceaux, dans la réalité, c'est bien plus espacé, sinon se serait trop lisible... (on remarquera que j'ai tout de même laissé les commentaires d'origine)