On 11/21/2012 08:11 AM, Olivier Sobrie wrote: > This driver provides support for several Kvaser CAN/USB devices. > Such kind of devices supports up to three CAN network interfaces. > > It has been tested with a Kvaser USB Leaf Light (one network interface) > connected to a pch_can interface. > The firmware version of the Kvaser device was 2.5.205. > > List of Kvaser devices supported by the driver: > - Kvaser Leaf Light > - Kvaser Leaf Professional HS > - Kvaser Leaf SemiPro HS > - Kvaser Leaf Professional LS > - Kvaser Leaf Professional SWC > - Kvaser Leaf Professional LIN > - Kvaser Leaf SemiPro LS > - Kvaser Leaf SemiPro SWC > - Kvaser Memorator II HS/HS > - Kvaser USBcan Professional HS/HS > - Kvaser Leaf Light GI > - Kvaser Leaf Professional HS (OBD-II connector) > - Kvaser Memorator Professional HS/LS > - Kvaser Leaf Light "China" > - Kvaser BlackBird SemiPro > - Kvaser USBcan R > > Signed-off-by: Daniel Berglund > Signed-off-by: Olivier Sobrie > --- [...] > +static struct usb_device_id kvaser_usb_table[] = { this can be const > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_DEVEL_PRODUCT_ID) }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_PRODUCT_ID) }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_SPRO_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_LS_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_SWC_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_LIN_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_SPRO_LS_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_SPRO_SWC_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO2_DEVEL_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO2_HSHS_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_UPRO_HSHS_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_GI_PRODUCT_ID) }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_OBDII_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS | > + KVASER_HAS_SILENT_MODE }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO2_HSLS_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_CH_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_BLACKBIRD_SPRO_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_OEM_MERCURY_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_OEM_LEAF_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS }, > + { USB_DEVICE(KVASER_VENDOR_ID, USB_CAN_R_PRODUCT_ID), > + .driver_info = KVASER_HAS_TXRX_ERRORS }, > + { } > +}; [...] > +static struct can_bittiming_const kvaser_usb_bittiming_const = { this, too. > + .name = "kvaser_usb", > + .tseg1_min = KVASER_USB_TSEG1_MIN, > + .tseg1_max = KVASER_USB_TSEG1_MAX, > + .tseg2_min = KVASER_USB_TSEG2_MIN, > + .tseg2_max = KVASER_USB_TSEG2_MAX, > + .sjw_max = KVASER_USB_SJW_MAX, > + .brp_min = KVASER_USB_BRP_MIN, > + .brp_max = KVASER_USB_BRP_MAX, > + .brp_inc = KVASER_USB_BRP_INC, > +}; I'm adding the consts while applying the patch. Thanks, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |