[PATCH] serial_cs device identification fix
authorPetr Vandrovec <vandrove@vc.cvut.cz>
Tue, 17 May 2005 04:53:44 +0000 (21:53 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 17 May 2005 14:59:19 +0000 (07:59 -0700)
serial_cs's vendor/device identification got broken by Yum Rayan's change
'[PATCH] serial_cs: Reduce stack usage in serial_event()' - it changed buf
type from u_short* to char*, breaking device manufacturer & card number
retrieval.  Due to this my modem stopped from being recognized as special
case.

Code will work much better if we'll rely on first_tuple's parser instead of
doing parse ourselves.  Code also looks simpler after change.

Signed-off-by: Petr Vandrovec <vandrove@vc.cvut.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/serial/serial_cs.c

index 6eeb48f6a482a739bd1b24071fc4a01637529db3..0d7b65f93e8de505602dbf26d0dd8734f84e3d23 100644 (file)
@@ -661,10 +661,10 @@ void serial_config(dev_link_t * link)
        /* Is this a multiport card? */
        tuple->DesiredTuple = CISTPL_MANFID;
        if (first_tuple(handle, tuple, parse) == CS_SUCCESS) {
-               info->manfid = le16_to_cpu(buf[0]);
+               info->manfid = parse->manfid.manf;
                for (i = 0; i < MULTI_COUNT; i++)
                        if ((info->manfid == multi_id[i].manfid) &&
-                           (le16_to_cpu(buf[1]) == multi_id[i].prodid))
+                           (parse->manfid.card == multi_id[i].prodid))
                                break;
                if (i < MULTI_COUNT)
                        info->multi = multi_id[i].multi;