Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at bd7b7ce96db4487bb77692a85ee4489fd2c395df 54 lines 1.3 kB view raw
1// SPDX-License-Identifier: GPL-2.0 2// SPDX-FileCopyrightText: Copyright (C) 2025 Collabora Ltd. 3 4//! Rust USB driver sample. 5 6use kernel::{ 7 device::{ 8 self, 9 Core, // 10 }, 11 prelude::*, 12 sync::aref::ARef, 13 usb, // 14}; 15 16struct SampleDriver { 17 _intf: ARef<usb::Interface>, 18} 19 20kernel::usb_device_table!( 21 USB_TABLE, 22 MODULE_USB_TABLE, 23 <SampleDriver as usb::Driver>::IdInfo, 24 [(usb::DeviceId::from_id(0x1234, 0x5678), ()),] 25); 26 27impl usb::Driver for SampleDriver { 28 type IdInfo = (); 29 const ID_TABLE: usb::IdTable<Self::IdInfo> = &USB_TABLE; 30 31 fn probe( 32 intf: &usb::Interface<Core>, 33 _id: &usb::DeviceId, 34 _info: &Self::IdInfo, 35 ) -> impl PinInit<Self, Error> { 36 let dev: &device::Device<Core> = intf.as_ref(); 37 dev_info!(dev, "Rust USB driver sample probed\n"); 38 39 Ok(Self { _intf: intf.into() }) 40 } 41 42 fn disconnect(intf: &usb::Interface<Core>, _data: Pin<&Self>) { 43 let dev: &device::Device<Core> = intf.as_ref(); 44 dev_info!(dev, "Rust USB driver sample disconnected\n"); 45 } 46} 47 48kernel::module_usb_driver! { 49 type: SampleDriver, 50 name: "rust_driver_usb", 51 authors: ["Daniel Almeida"], 52 description: "Rust USB driver sample", 53 license: "GPL v2", 54}