Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/usb/core/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  otg_productlist.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0+ */
/* Copyright (C) 2004 Texas Instruments */

/*
 * This OTG and Embedded Host list is "Targeted Peripheral List".
 * It should mostly use of USB_DEVICE() or USB_DEVICE_VER() entries..
 *
 * YOU _SHOULD_ CHANGE THIS LIST TO MATCH YOUR PRODUCT AND ITS TESTING!
 */


static struct usb_device_id productlist_table[] = {

/* hubs are optional in OTG, but very handy ... */
{ USB_DEVICE_INFO(USB_CLASS_HUB, 0, 0), },
{ USB_DEVICE_INFO(USB_CLASS_HUB, 0, 1), },

#ifdef CONFIG_USB_PRINTER  /* ignoring nonstatic linkage! */
/* FIXME actually, printers are NOT supposed to use device classes;
 * they're supposed to use interface classes...
 */

{ USB_DEVICE_INFO(7, 1, 1) },
{ USB_DEVICE_INFO(7, 1, 2) },
{ USB_DEVICE_INFO(7, 1, 3) },
#endif

#ifdef CONFIG_USB_NET_CDCETHER
/* Linux-USB CDC Ethernet gadget */
{ USB_DEVICE(0x0525, 0xa4a1), },
/* Linux-USB CDC Ethernet + RNDIS gadget */
{ USB_DEVICE(0x0525, 0xa4a2), },
#endif

#if IS_ENABLED(CONFIG_USB_TEST)
/* gadget zero, for testing */
{ USB_DEVICE(0x0525, 0xa4a0), },
#endif

{ } /* Terminating entry */
};

static int is_targeted(struct usb_device *dev)
{
 struct usb_device_id *id = productlist_table;

 /* HNP test device is _never_ targeted (see OTG spec 6.6.6) */
 if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a &&
      le16_to_cpu(dev->descriptor.idProduct) == 0xbadd))
  return 0;

 /* OTG PET device is always targeted (see OTG 2.0 ECN 6.4.2) */
 if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a &&
      le16_to_cpu(dev->descriptor.idProduct) == 0x0200))
  return 1;

 /* NOTE: can't use usb_match_id() since interface caches
 * aren't set up yet. this is cut/paste from that code.
 */

 for (id = productlist_table; id->match_flags; id++) {
  if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
      id->idVendor != le16_to_cpu(dev->descriptor.idVendor))
   continue;

  if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) &&
      id->idProduct != le16_to_cpu(dev->descriptor.idProduct))
   continue;

  /* No need to test id->bcdDevice_lo != 0, since 0 is never
   greater than any unsigned number. */

  if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) &&
      (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice)))
   continue;

  if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) &&
      (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice)))
   continue;

  if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) &&
      (id->bDeviceClass != dev->descriptor.bDeviceClass))
   continue;

  if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) &&
      (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass))
   continue;

  if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
      (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
   continue;

  return 1;
 }

 /* add other match criteria here ... */


 /* OTG MESSAGE: report errors here, customize to match your product */
 dev_err(&dev->dev, "device v%04x p%04x is not supported\n",
  le16_to_cpu(dev->descriptor.idVendor),
  le16_to_cpu(dev->descriptor.idProduct));

 return 0;
}


Messung V0.5
C=85 H=93 G=88

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.