LCOV - code coverage report
Current view: top level - drivers/usb/storage - usual-tables.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 7 0.0 %
Date: 2014-02-18 Functions: 0 1 0.0 %
Branches: 0 10 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* Driver for USB Mass Storage devices
       2                 :            :  * Usual Tables File for usb-storage and libusual
       3                 :            :  *
       4                 :            :  * Copyright (C) 2009 Alan Stern (stern@rowland.harvard.edu)
       5                 :            :  *
       6                 :            :  * Please see http://www.one-eyed-alien.net/~mdharm/linux-usb for more
       7                 :            :  * information about this driver.
       8                 :            :  *
       9                 :            :  * This program is free software; you can redistribute it and/or modify it
      10                 :            :  * under the terms of the GNU General Public License as published by the
      11                 :            :  * Free Software Foundation; either version 2, or (at your option) any
      12                 :            :  * later version.
      13                 :            :  *
      14                 :            :  * This program is distributed in the hope that it will be useful, but
      15                 :            :  * WITHOUT ANY WARRANTY; without even the implied warranty of
      16                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      17                 :            :  * General Public License for more details.
      18                 :            :  *
      19                 :            :  * You should have received a copy of the GNU General Public License along
      20                 :            :  * with this program; if not, write to the Free Software Foundation, Inc.,
      21                 :            :  * 675 Mass Ave, Cambridge, MA 02139, USA.
      22                 :            :  */
      23                 :            : 
      24                 :            : #include <linux/kernel.h>
      25                 :            : #include <linux/module.h>
      26                 :            : #include <linux/usb.h>
      27                 :            : #include <linux/usb_usual.h>
      28                 :            : 
      29                 :            : 
      30                 :            : /*
      31                 :            :  * The table of devices
      32                 :            :  */
      33                 :            : #define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \
      34                 :            :                     vendorName, productName, useProtocol, useTransport, \
      35                 :            :                     initFunction, flags) \
      36                 :            : { USB_DEVICE_VER(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax), \
      37                 :            :   .driver_info = (flags) }
      38                 :            : 
      39                 :            : #define COMPLIANT_DEV   UNUSUAL_DEV
      40                 :            : 
      41                 :            : #define USUAL_DEV(useProto, useTrans) \
      42                 :            : { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, useProto, useTrans) }
      43                 :            : 
      44                 :            : /* Define the device is matched with Vendor ID and interface descriptors */
      45                 :            : #define UNUSUAL_VENDOR_INTF(id_vendor, cl, sc, pr, \
      46                 :            :                         vendorName, productName, useProtocol, useTransport, \
      47                 :            :                         initFunction, flags) \
      48                 :            : { \
      49                 :            :         .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \
      50                 :            :                                 | USB_DEVICE_ID_MATCH_VENDOR, \
      51                 :            :         .idVendor    = (id_vendor), \
      52                 :            :         .bInterfaceClass = (cl), \
      53                 :            :         .bInterfaceSubClass = (sc), \
      54                 :            :         .bInterfaceProtocol = (pr), \
      55                 :            :         .driver_info = (flags) \
      56                 :            : }
      57                 :            : 
      58                 :            : struct usb_device_id usb_storage_usb_ids[] = {
      59                 :            : #       include "unusual_devs.h"
      60                 :            :         { }             /* Terminating entry */
      61                 :            : };
      62                 :            : MODULE_DEVICE_TABLE(usb, usb_storage_usb_ids);
      63                 :            : 
      64                 :            : #undef UNUSUAL_DEV
      65                 :            : #undef COMPLIANT_DEV
      66                 :            : #undef USUAL_DEV
      67                 :            : #undef UNUSUAL_VENDOR_INTF
      68                 :            : 
      69                 :            : /*
      70                 :            :  * The table of devices to ignore
      71                 :            :  */
      72                 :            : struct ignore_entry {
      73                 :            :         u16     vid, pid, bcdmin, bcdmax;
      74                 :            : };
      75                 :            : 
      76                 :            : #define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \
      77                 :            :                     vendorName, productName, useProtocol, useTransport, \
      78                 :            :                     initFunction, flags) \
      79                 :            : {                                       \
      80                 :            :         .vid    = id_vendor,            \
      81                 :            :         .pid    = id_product,           \
      82                 :            :         .bcdmin = bcdDeviceMin,         \
      83                 :            :         .bcdmax = bcdDeviceMax,         \
      84                 :            : }
      85                 :            : 
      86                 :            : static struct ignore_entry ignore_ids[] = {
      87                 :            : #       include "unusual_alauda.h"
      88                 :            : #       include "unusual_cypress.h"
      89                 :            : #       include "unusual_datafab.h"
      90                 :            : #       include "unusual_ene_ub6250.h"
      91                 :            : #       include "unusual_freecom.h"
      92                 :            : #       include "unusual_isd200.h"
      93                 :            : #       include "unusual_jumpshot.h"
      94                 :            : #       include "unusual_karma.h"
      95                 :            : #       include "unusual_onetouch.h"
      96                 :            : #       include "unusual_realtek.h"
      97                 :            : #       include "unusual_sddr09.h"
      98                 :            : #       include "unusual_sddr55.h"
      99                 :            : #       include "unusual_usbat.h"
     100                 :            :         { }             /* Terminating entry */
     101                 :            : };
     102                 :            : 
     103                 :            : #undef UNUSUAL_DEV
     104                 :            : 
     105                 :            : /* Return an error if a device is in the ignore_ids list */
     106                 :          0 : int usb_usual_ignore_device(struct usb_interface *intf)
     107                 :            : {
     108                 :            :         struct usb_device *udev;
     109                 :            :         unsigned vid, pid, bcd;
     110                 :            :         struct ignore_entry *p;
     111                 :            : 
     112                 :            :         udev = interface_to_usbdev(intf);
     113                 :          0 :         vid = le16_to_cpu(udev->descriptor.idVendor);
     114                 :          0 :         pid = le16_to_cpu(udev->descriptor.idProduct);
     115                 :          0 :         bcd = le16_to_cpu(udev->descriptor.bcdDevice);
     116                 :            : 
     117         [ #  # ]:          0 :         for (p = ignore_ids; p->vid; ++p) {
     118 [ #  # ][ #  # ]:          0 :                 if (p->vid == vid && p->pid == pid &&
                 [ #  # ]
     119         [ #  # ]:          0 :                                 p->bcdmin <= bcd && p->bcdmax >= bcd)
     120                 :            :                         return -ENXIO;
     121                 :            :         }
     122                 :            :         return 0;
     123                 :            : }

Generated by: LCOV version 1.9