- Drivers Contec Multifunction Devices Infrared Thermometer
- Drivers Contec Multifunction Devices Scanner
- Drivers Contec Multifunction Devices Inc
- Drivers Contec Multifunction Devices Reviews
- Drivers Contec Multifunction Devices Driver
NI R Series Multifunction RIO Device Drivers will drop support for Windows 7 (32- and 64-bit), Windows Server 2008 R2, and all 32-bit Windows operating systems starting in 2021. Versions of this product that ship after May 1, 2021, will not install or run on these operating systems. Windows / Linux COM driver COM-DRV PC-HELPER PC-based DAQ & Control Serial communication device series Windows / Linux Com Driver COM-DRV COM-DRV controls Contec's serial communications devices in the PC-HELPER series just like the COM ports on the PC under Windows or Linux. An MFP (Multi Function Product/ Printer/ Peripheral), multifunctional, all-in-one (AIO), or Multifunction Device (MFD), is an office machine which incorporates the functionality of multiple devices in one, so as to have a smaller footprint in a home or small business setting (the SOHO market segment), or to provide centralized document.
-->(Non-members can send an inquiry too) Login; Create Account.
A multifunction device occupies one location on its parent bus but contains more than one function. Combination printer/scanner/fax devices and modem/network cards are common multifunction devices.
In a multifunction device, the individual functions are independent. This means the functions must have the following characteristics:
The functions cannot have start-order dependencies.
The resource requirements for one function cannot be expressed in terms of the resources of another function (for example, function1 uses I/O port x and function2 uses port x + 200).
Each function must be able to operate as a separate device, even if it is serviced by the same drivers as another function.
Each function on the device must be enumerated.
Resource requirements for each function must be communicated to the PnP manager.
There must be INF files and drivers for each function.
The component responsible for each of these tasks depends on the multifunction standard for the device's parent bus, the extent to which the device conforms to the standard, and the capabilities of the parent bus driver.
If the device complies with the multifunction standards for its bus, your driver requirements are significantly reduced. Industry-wide multifunction standards have been defined for the PC Card and PCI buses.
If you are working with a multifunction DVD/CD-ROM device used for data storage (not for audio/video playback), you should use the system-supplied WDM DVD class driver, which treats the device as a single logical unit.
For a multifunction device that combines other functionality, you can use a system-supplied driver and INF file if the device complies with the multifunction standards for its bus. The system supplied multifunction driver (mf.sys) can handle the bus-level enumeration and resource allocation requirements for the device, and the system-supplied INF (mf.sys) can install the multifunction device. You need to supply only a function driver and INF file for each of the individual device functions.
If the device does not comply with the standard for its bus, you might need to supply a driver equivalent to mf.sys in functionality, in addition to function drivers and INF files for the device functions.
To install a multifunction device, you typically provide a base INF file for the device and an additional INF file for each of the device's functions. The base INF file typically copies the INF files for the device's individual functions. For information about how to accomplish this, see Copying INFs.
The following sections describe driver and installation requirements for various types of multifunction devices:
See INF File Sections and INF File Directives for information about INF file syntax.
The Windows Driver Kit (WDK) includes a separate section that describes how to support multifunction audio devices.
This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible. |
Drivers Contec Multifunction Devices Infrared Thermometer
December 17, 2020
This article was contributed by Marta Rybczyńska
Device drivers usually live within a single kernel subsystem. Sometimes,however, developers need to handle functionalities outside of this model.Consider, for example, a network interface card (NIC) exposing both Ethernet andRDMA functionalities. There is one hardware block, but two drivers for thetwo functions. Those drivers need to work within their respectivesubsystems, but they must also share access to the same hardware. There isno standard way in current kernels to connect those drivers together, sodevelopers invent ad-hoc methods to handle the interaction betweenthem. Recently, Dave Ertman posteda patch set introducing a new type of a bus, called the 'auxiliary bus', toaddress this problem.
Complex devices
Linux already includes a number of drivers for multi-functiondevices. One of the ways to support them is the Multi-FunctionDevices (MFD) subsystem. It handles independent devices 'glued'together into one hardware block which may contain some sharedresources. MFD allows access to device registers either directly, or usinga common bus. In this second case, it conveniently multiplexes accesses onInter-Integrated Circuit(I2C) or SerialPeripheral Interface (SPI) buses. As the MFD sub-devices are separate,MFD drivers do not share a common state.
The devices Ertman addresses do not fit well into the MFD model.Devices using the auxiliary bus provide subsets of the capabilities of asingle hardware device. They do not expose separate register sets for eachfunction; thus they cannot be described by devicetrees or discovered byACPI. Their drivers need to share access to the hardware. Events concerning allsub-functionalities (like power management) need to be properly handled byall drivers. These devices will often be specialized processors runningfirmware and communicating with the host system (and the Linux drivers) bymessaging. The available functions may not be known in advance, and thusmust be discovered at run time.
The documentationpatch in the auxiliary bus series cites a number of examples. The SoundOpen Firmware (SOF) driver interacts with a single device exposinginterfaces like HDMI output, microphones, speakers, testing, and debughooks. NICs implementing both Ethernet and RDMA may need a driversupporting a common part of the functionalities, and then the specificEthernet and RDMA drivers can implement specific parts on top of that.
Current kernels do not have a generic way to describe dependenciesbetween drivers for this kind of device. A solution to the problem could beto have a way to attach secondary drivers to the primaryone; this is exactly what the auxiliary bus implements.
Auxiliary devices and drivers
The patch set introduces two main concepts: The 'auxiliary device' and'auxiliary driver'. These implement the relationship between the main andthe secondary drivers. The main driver maintains the device state, allocating and managing all shared data. It also unregisters all secondarydrivers when shutting down. Secondary drivers, instead, handle theinteractions with the specific subsystem they are implementing a devicefor.
Each main driver may expose a number of functionalities (devices) forsecondary drivers. Only one secondary driver can attach to each of thosefunctionalities.
The main driver creates an auxiliary device, represented by structauxiliary_device:
The combination of name and id must be unique; thecomplete device name is a combination of the module name and those twofields, connected by dots (.). That yields a result likemodname.device_name.id.
The developer embeds this structure in the device structure ofthe main driver, with all shared data necessary for the communicationbetween the main driver and secondary drivers. They may also addsupplementary callbacks.
The sequence to initialize the main driver contains two steps. The firstone is to call auxiliary_device_init():
Drivers Contec Multifunction Devices Scanner
It verifies the arguments and returns anerror code if need be; in such case the initialization of the deviceshould be aborted.If the first call succeeds, the second step is to call the macroauxiliary_device_add() with the initialized device; this willset up the device name and register the deviceitself.
The unregistration procedure also has two steps, consisting of calls toauxiliary_device_uninit() (necessary from the point whenauxiliary_device_init() has succeeded) andauxiliary_device_delete(). Those functions have the followingprototypes:
This two-step approach was implemented inresponse to comments on earlier versions of the patch set. It allows the driver to allocate itsown data between auxiliary_device_init() andauxiliary_device_add() with a possibility to free it correctly inthe case of a failure.
The secondary devices, which will connect to the main driver,are represented by struct auxiliary_driver:
This structure includes a number of callbacks to manage thedevice's life cycle, and the id_table containing names of thedevices the driver can bind with. All callbacks receive pointers to theparent's auxiliary_device, allowing access to the shareddata.
The secondary devices are set up with auxiliary_driver_register():
This function requires the probe() callback and theid_table to be filled in. When successful, it causes aprobe() callback call for any matching devices. The secondarydevices can access the shared data using container_of() and theauxiliary_device structure.
When unregistering a driver, the developer should callauxiliary_driver_unregister():
First users
Together with the auxiliary bus implementation, Ertman postedchanges to the SOF driver. The modified driver uses thisinfrastructure to implementa test driver, and aprobes driver, allowing the creation of a new virtual audio device thatcan tap into the pipeline and allow listening in at any point.
Another user can be found in the networking subsystem; Leon Romanovskyposteda conversion of the mlx5 driver to use the auxiliary bus. The updateddriver creates network, VDPA, and RDMAdrivers for one physical device. Those changes allowthe removal of a bunch of custom driver code. Parav Pandit followed upby using this functionality to implement device sub-functions.
The patch set has come to its fourth iteration in its current form, andwitnessed a number of earlier ones under the names of ancillaryand virtualbus.The development of the auxiliary bus patch set took time, and it createddependencies in other work. This caused a fair amount of pressure to get itupstream, and that led to some pushing on thelist. In an attempt to push things forward, Dan Williams repostedthe patch set, stating that 'it looks good to me and several otherstakeholders'. After a review from GregKroah-Hartman, the auxiliary bus code was merged into the mainline for the5.11 kernel release.Drivers Contec Multifunction Devices Inc
Index entries for this article | |
---|---|
Kernel | Auxiliary bus |
Kernel | Device drivers/Support APIs |
GuestArticles | Rybczynska, Marta |