https://source.android.com/docs/security/bulletin/2022-12-01
CVE-2022-23960
# By Yang Yingliang (18) and others
# Via Greg Kroah-Hartman
* tag 'ASB-2022-12-05_4.19-stable' of https://android.googlesource.com/kernel/common:
Linux 4.19.268
ipc/sem: Fix dangling sem_array access in semtimedop race
mmc: sdhci: Fix voltage switch delay
mmc: sdhci: use FIELD_GET for preset value bit masks
x86/ioremap: Fix page aligned size calculation in __ioremap_caller()
Bluetooth: L2CAP: Fix accepting connection request for invalid SPSM
x86/pm: Add enumeration check before spec MSRs save/restore setup
x86/tsx: Add a feature bit for TSX control MSR support
nvme: restrict management ioctls to admin
tcp/udp: Fix memory leak in ipv6_renew_options().
Kconfig.debug: provide a little extra FRAME_WARN leeway when KASAN is enabled
parisc: Increase FRAME_WARN to 2048 bytes on parisc
xtensa: increase size of gcc stack frame check
parisc: Increase size of gcc stack frame check
iommu/vt-d: Fix PCI device refcount leak in dmar_dev_scope_init()
pinctrl: single: Fix potential division by zero
ASoC: ops: Fix bounds check for _sx controls
mm: Fix '.data.once' orphan section warning
arm64: errata: Fix KVM Spectre-v2 mitigation selection for Cortex-A57/A72
arm64: Fix panic() when Spectre-v2 causes Spectre-BHB to re-allocate KVM vectors
pinctrl: intel: Save and restore pins in "direct IRQ" mode
x86/bugs: Make sure MSR_SPEC_CTRL is updated properly upon resume from S3
nilfs2: fix NULL pointer dereference in nilfs_palloc_commit_free_entry()
tools/vm/slabinfo-gnuplot: use "grep -E" instead of "egrep"
error-injection: Add prompt for function error injection
btrfs: qgroup: fix sleep from invalid context bug in btrfs_qgroup_inherit()
hwmon: (coretemp) fix pci device refcount leak in nv1a_ram_new()
hwmon: (coretemp) Check for null before removing sysfs attrs
net: ethernet: renesas: ravb: Fix promiscuous mode after system resumed
packet: do not set TP_STATUS_CSUM_VALID on CHECKSUM_COMPLETE
net: tun: Fix use-after-free in tun_detach()
net: hsr: Fix potential use-after-free
dsa: lan9303: Correct stat name
net/9p: Fix a potential socket leak in p9_socket_open
net: net_netdev: Fix error handling in ntb_netdev_init_module()
net: phy: fix null-ptr-deref while probe() failed
qlcnic: fix sleep-in-atomic-context bugs caused by msleep
can: cc770: cc770_isa_probe(): add missing free_cc770dev()
can: sja1000_isa: sja1000_isa_probe(): add missing free_sja1000dev()
net/mlx5: Fix uninitialized variable bug in outlen_write()
of: property: decrement node refcount in of_fwnode_get_reference_args()
hwmon: (ibmpex) Fix possible UAF when ibmpex_register_bmc() fails
hwmon: (i5500_temp) fix missing pci_disable_device()
scripts/faddr2line: Fix regression in name resolution on ppc64le
iio: light: rpr0521: add missing Kconfig dependencies
iio: health: afe4404: Fix oob read in afe4404_[read|write]_raw
iio: health: afe4403: Fix oob read in afe4403_read_raw
Revert "x86/speculation: Change FILL_RETURN_BUFFER to work with objtool"
v4l2: don't fall back to follow_pfn() if pin_user_pages_fast() fails
proc: proc_skip_spaces() shouldn't think it is working on C strings
proc: avoid integer type confusion in get_proc_long
spi: spi-imx: Fix spi_bus_clk if requested clock is higher than input clock
btrfs: free btrfs_path before copying inodes to userspace
drm/amdgpu: always register an MMU notifier for userptr
drm/amd/dc/dce120: Fix audio register mapping, stop triggering KASAN
btrfs: free btrfs_path before copying subvol info to userspace
btrfs: free btrfs_path before copying fspath to userspace
btrfs: free btrfs_path before copying root refs to userspace
dm integrity: flush the journal on suspend
net: usb: qmi_wwan: add Telit 0x103a composition
tcp: configurable source port perturb table size
platform/x86: hp-wmi: Ignore Smart Experience App event
platform/x86: acer-wmi: Enable SW_TABLET_MODE on Switch V 10 (SW5-017)
platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr()
xen/platform-pci: add missing free_irq() in error path
serial: 8250: 8250_omap: Avoid RS485 RTS glitch on ->set_termios()
Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode
nilfs2: fix nilfs_sufile_mark_dirty() not set segment usage as dirty
ceph: avoid putting the realm twice when decoding snaps fails
ceph: do not update snapshot context when there is no new snapshot
iio: pressure: ms5611: fixed value compensation bug
iio: ms5611: Simplify IO callback parameters
nios2: add FORCE for vmlinuz.gz
iio: core: Fix entry not deleted when iio_register_sw_trigger_type() fails
iio: light: apds9960: fix wrong register for gesture gain
arm64: dts: rockchip: lower rk3399-puma-haikou SD controller clock frequency
s390/crashdump: fix TOD programmable field size
net: thunderx: Fix the ACPI memory leak
nfc: st-nci: fix memory leaks in EVT_TRANSACTION
nfc: st-nci: fix incorrect validating logic in EVT_TRANSACTION
s390/dasd: fix no record found for raw_track_access
dccp/tcp: Reset saddr on failure after inet6?_hash_connect().
bnx2x: fix pci device refcount leak in bnx2x_vf_is_pcie_pending()
NFC: nci: fix memory leak in nci_rx_data_packet()
xfrm: Fix ignored return value in xfrm6_init()
tipc: check skb_linearize() return value in tipc_disc_rcv()
tipc: add an extra conn_get in tipc_conn_alloc
tipc: set con sock in tipc_conn_alloc
net/mlx5: Fix FW tracer timestamp calculation
Drivers: hv: vmbus: fix possible memory leak in vmbus_device_register()
Drivers: hv: vmbus: fix double free in the error path of vmbus_add_channel_work()
net: pch_gbe: fix pci device refcount leak while module exiting
net/qla3xxx: fix potential memleak in ql3xxx_send()
net/mlx4: Check retval of mlx4_bitmap_init
ARM: mxs: fix memory leak in mxs_machine_init()
9p/fd: fix issue of list_del corruption in p9_fd_cancel()
net: pch_gbe: fix potential memleak in pch_gbe_tx_queue()
nfc/nci: fix race with opening and closing
ARM: dts: at91: sam9g20ek: enable udc vbus gpio pinctrl
bus: sunxi-rsb: Support atomic transfers
ASoC: sgtl5000: Reset the CHIP_CLK_CTRL reg on remove
ARM: dts: am335x-pcm-953: Define fixed regulators in root node
af_key: Fix send_acquire race with pfkey_register
MIPS: pic32: treat port as signed integer
RISC-V: vdso: Do not add missing symbols to version section in linker script
drm: panel-orientation-quirks: Add quirk for Acer Switch V 10 (SW5-017)
spi: stm32: fix stm32_spi_prepare_mbr() that halves spi clk for every run
wifi: mac80211: Fix ack frame idr leak when mesh has no route
audit: fix undefined behavior in bit shift for AUDIT_BIT
wifi: mac80211_hwsim: fix debugfs attribute ps with rc table support
Linux 4.19.267
ntfs: check overflow when iterating ATTR_RECORDs
ntfs: fix out-of-bounds read in ntfs_attr_find()
ntfs: fix use-after-free in ntfs_attr_find()
mm: fs: initialize fsdata passed to write_begin/write_end interface
9p/trans_fd: always use O_NONBLOCK read/write
gfs2: Switch from strlcpy to strscpy
gfs2: Check sb_bsize_shift after reading superblock
9p: trans_fd/p9_conn_cancel: drop client lock earlier
kcm: close race conditions on sk_receive_queue
bpf, test_run: Fix alignment problem in bpf_prog_test_run_skb()
kcm: avoid potential race in kcm_tx_work
tcp: cdg: allow tcp_cdg_release() to be called multiple times
macvlan: enforce a consistent minimal mtu
serial: 8250: Flush DMA Rx on RLSI
Input: i8042 - fix leaking of platform device on module removal
scsi: target: tcm_loop: Fix possible name leak in tcm_loop_setup_hba_bus()
misc/vmw_vmci: fix an infoleak in vmci_host_do_receive_datagram()
docs: update mediator contact information in CoC doc
mmc: sdhci-pci: Fix possible memory leak caused by missing pci_dev_put()
mmc: core: properly select voltage range without power cycle
serial: 8250_lpss: Configure DMA also w/o DMA filter
serial: 8250: Fall back to non-DMA Rx if IIR_RDI occurs
dm ioctl: fix misbehavior if list_versions races with module loading
iio: pressure: ms5611: changed hardcoded SPI speed to value limited
iio: trigger: sysfs: fix possible memory leak in iio_sysfs_trig_init()
iio: adc: at91_adc: fix possible memory leak in at91_adc_allocate_trigger()
usb: chipidea: fix deadlock in ci_otg_del_timer
usb: add NO_LPM quirk for Realforce 87U Keyboard
USB: serial: option: add Fibocom FM160 0x0111 composition
USB: serial: option: add u-blox LARA-L6 modem
USB: serial: option: add u-blox LARA-R6 00B modem
USB: serial: option: remove old LARA-R6 PID
USB: serial: option: add Sierra Wireless EM9191
speakup: fix a segfault caused by switching consoles
slimbus: stream: correct presence rate frequencies
ALSA: usb-audio: Drop snd_BUG_ON() from snd_usbmidi_output_open()
ring_buffer: Do not deactivate non-existant pages
ftrace: Fix null pointer dereference in ftrace_add_mod()
ftrace: Optimize the allocation for mcount entries
ftrace: Fix the possible incorrect kernel message
net: thunderbolt: Fix error handling in tbnet_init()
cifs: Fix wrong return value checking when GETFLAGS
net/x25: Fix skb leak in x25_lapb_receive_frame()
drbd: use after free in drbd_create_device()
xen/pcpu: fix possible memory leak in register_pcpu()
bnxt_en: Remove debugfs when pci_register_driver failed
net: caif: fix double disconnect client in chnl_net_open()
mISDN: fix misuse of put_device() in mISDN_register_device()
mISDN: fix possible memory leak in mISDN_dsp_element_register()
net: bgmac: Drop free_netdev() from bgmac_enet_remove()
ata: libata-transport: fix double ata_host_put() in ata_tport_add()
pinctrl: devicetree: fix null pointer dereferencing in pinctrl_dt_to_map
parport_pc: Avoid FIFO port location truncation
siox: fix possible memory leak in siox_device_add()
block: sed-opal: kmalloc the cmd/resp buffers
ASoC: soc-utils: Remove __exit for snd_soc_util_exit()
tty: n_gsm: fix sleep-in-atomic-context bug in gsm_control_send
serial: imx: Add missing .thaw_noirq hook
serial: 8250: omap: Flush PM QOS work on remove
serial: 8250_omap: remove wait loop from Errata i202 workaround
ASoC: core: Fix use-after-free in snd_soc_exit()
Bluetooth: L2CAP: Fix l2cap_global_chan_by_psm
btrfs: remove pointless and double ulist frees in error paths of qgroup tests
drm/imx: imx-tve: Fix return type of imx_tve_connector_mode_valid
NFSv4: Retry LOCK on OLD_STATEID during delegation return
selftests/intel_pstate: fix build for ARCH=x86_64
selftests/futex: fix build for clang
spi: intel: Fix the offset to get the 64K erase opcode
ASoC: wm8997: Revert "ASoC: wm8997: Fix PM disable depth imbalance in wm8997_probe"
ASoC: wm5110: Revert "ASoC: wm5110: Fix PM disable depth imbalance in wm5110_probe"
ASoC: wm5102: Revert "ASoC: wm5102: Fix PM disable depth imbalance in wm5102_probe"
x86/cpu: Restore AMD's DE_CFG MSR after resume
net: tun: call napi_schedule_prep() to ensure we own a napi
dmaengine: at_hdmac: Check return code of dma_async_device_register
dmaengine: at_hdmac: Fix impossible condition
dmaengine: at_hdmac: Don't allow CPU to reorder channel enable
dmaengine: at_hdmac: Fix completion of unissued descriptor in case of errors
dmaengine: at_hdmac: Don't start transactions at tx_submit level
dmaengine: at_hdmac: Fix at_lli struct definition
cert host tools: Stop complaining about deprecated OpenSSL functions
udf: Fix a slab-out-of-bounds write bug in udf_find_entry()
btrfs: selftests: fix wrong error check in btrfs_free_dummy_root()
platform/x86: hp_wmi: Fix rfkill causing soft blocked wifi
drm/i915/dmabuf: fix sg_table handling in map_dma_buf
nilfs2: fix use-after-free bug of ns_writer on remount
nilfs2: fix deadlock in nilfs_count_free_blocks()
vmlinux.lds.h: Fix placement of '.data..decrypted' section
ALSA: usb-audio: Add DSD support for Accuphase DAC-60
ALSA: usb-audio: Add quirk entry for M-Audio Micro
ALSA: hda: fix potential memleak in 'add_widget_node'
ALSA: hda/ca0132: add quirk for EVGA Z390 DARK
arm64: efi: Fix handling of misaligned runtime regions and drop warning
riscv: process: fix kernel info leakage
net: macvlan: fix memory leaks of macvlan_common_newlink
net: mv643xx_eth: disable napi when init rxq or txq failed in mv643xx_eth_open()
ethernet: s2io: disable napi when start nic failed in s2io_card_up()
net: cxgb3_main: disable napi when bind qsets failed in cxgb_up()
net: nixge: disable napi when enable interrupts failed in nixge_open()
drivers: net: xgene: disable napi when register irq failed in xgene_enet_open()
dmaengine: mv_xor_v2: Fix a resource leak in mv_xor_v2_remove()
tipc: fix the msg->req tlv len check in tipc_nl_compat_name_table_dump_header
ipv6: addrlabel: fix infoleak when sending struct ifaddrlblmsg to network
drm/vc4: Fix missing platform_unregister_drivers() call in vc4_drm_register()
hamradio: fix issue of dev reference count leakage in bpq_device_event()
net: lapbether: fix issue of dev reference count leakage in lapbeth_device_event()
capabilities: fix undefined behavior in bit shift for CAP_TO_MASK
net: fman: Unregister ethernet device on removal
bnxt_en: fix potentially incorrect return value for ndo_rx_flow_steer
net: tun: Fix memory leaks of napi_get_frags
net: gso: fix panic on frag_list with mixed head alloc types
HID: hyperv: fix possible memory leak in mousevsc_probe()
wifi: cfg80211: fix memory leak in query_regdb_file()
phy: stm32: fix an error code in probe
Linux 4.19.266
x86/speculation: Add RSB VM Exit protections
x86/bugs: Warn when "ibrs" mitigation is selected on Enhanced IBRS parts
x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current
x86/speculation: Disable RRSBA behavior
x86/bugs: Add Cannon lake to RETBleed affected CPU list
x86/cpu/amd: Enumerate BTC_NO
x86/common: Stamp out the stepping madness
x86/speculation: Fill RSB on vmexit for IBRS
KVM: VMX: Fix IBRS handling after vmexit
KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS
x86/speculation: Remove x86_spec_ctrl_mask
x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit
x86/speculation: Fix SPEC_CTRL write on SMT state change
x86/speculation: Fix firmware entry SPEC_CTRL handling
x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n
x86/speculation: Change FILL_RETURN_BUFFER to work with objtool
intel_idle: Disable IBRS during long idle
x86/bugs: Report Intel retbleed vulnerability
x86/bugs: Split spectre_v2_select_mitigation() and spectre_v2_user_select_mitigation()
x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS
x86/bugs: Optimize SPEC_CTRL MSR writes
x86/entry: Add kernel IBRS implementation
x86/entry: Remove skip_r11rcx
x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value
x86/bugs: Add AMD retbleed= boot parameter
x86/bugs: Report AMD retbleed vulnerability
x86/cpufeatures: Move RETPOLINE flags to word 11
x86/cpu: Add a steppings field to struct x86_cpu_id
x86/cpu: Add consistent CPU match macros
x86/devicetable: Move x86 specific macro out of generic code
x86/cpufeature: Fix various quality problems in the <asm/cpu_device_hd.h> header
x86/cpufeature: Add facility to check for min microcode revisions
Revert "x86/cpu: Add a steppings field to struct x86_cpu_id"
Revert "x86/speculation: Add RSB VM Exit protections"
ANDROID: preserve CRC for some DRM functions
Revert "tcp/udp: Make early_demux back namespacified."
Linux 4.19.265
wifi: brcmfmac: Fix potential buffer overflow in brcmf_fweh_event_worker()
linux/bits.h: make BIT(), GENMASK(), and friends available in assembly
KVM: x86: emulator: update the emulation mode after CR0 write
KVM: x86: emulator: introduce emulator_recalc_and_set_mode
KVM: x86: emulator: em_sysexit should update ctxt->mode
KVM: x86: Mask off reserved bits in CPUID.80000008H
ext4: fix warning in 'ext4_da_release_space'
parisc: Avoid printing the hardware path twice
parisc: Export iosapic_serial_irq() symbol for serial port driver
parisc: Make 8250_gsc driver dependend on CONFIG_PARISC
efi: random: reduce seed size to 32 bytes
ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices
capabilities: fix potential memleak on error path from vfs_getxattr_alloc()
tracing/histogram: Update document for KEYS_MAX size
kprobe: reverse kp->flags when arm_kprobe failed
tcp/udp: Make early_demux back namespacified.
btrfs: fix type of parameter generation in btrfs_get_dentry
block, bfq: protect 'bfqd->queued' by 'bfqd->lock'
Bluetooth: L2CAP: Fix attempting to access uninitialized memory
i2c: xiic: Add platform module alias
HID: saitek: add madcatz variant of MMO7 mouse device ID
media: dvb-frontends/drxk: initialize err to 0
media: cros-ec-cec: limit msg.len to CEC_MAX_MSG_SIZE
media: s5p_cec: limit msg.len to CEC_MAX_MSG_SIZE
ipv6: fix WARNING in ip6_route_net_exit_late()
net, neigh: Fix null-ptr-deref in neigh_table_clear()
net: mdio: fix undefined behavior in bit shift for __mdiobus_register
Bluetooth: L2CAP: fix use-after-free in l2cap_conn_del()
Bluetooth: L2CAP: Fix use-after-free caused by l2cap_reassemble_sdu
btrfs: fix ulist leaks in error paths of qgroup self tests
btrfs: fix inode list leak during backref walking at resolve_indirect_refs()
isdn: mISDN: netjet: fix wrong check of device registration
mISDN: fix possible memory leak in mISDN_register_device()
rose: Fix NULL pointer dereference in rose_send_frame()
ipvs: fix WARNING in ip_vs_app_net_cleanup()
ipvs: fix WARNING in __ip_vs_cleanup_batch()
ipvs: use explicitly signed chars
net: tun: fix bugs for oversize packet when napi frags enabled
net: sched: Fix use after free in red_enqueue()
ata: pata_legacy: fix pdc20230_set_piomode()
net: fec: fix improper use of NETDEV_TX_BUSY
nfc: nfcmrvl: Fix potential memory leak in nfcmrvl_i2c_nci_send()
nfc: s3fwrn5: Fix potential memory leak in s3fwrn5_nci_send()
RDMA/qedr: clean up work queue on failure in qedr_alloc_resources()
net: dsa: Fix possible memory leaks in dsa_loop_init()
nfs4: Fix kmemleak when allocate slot failed
NFSv4.1: We must always send RECLAIM_COMPLETE after a reboot
NFSv4.1: Handle RECLAIM_COMPLETE trunking errors
BACKPORT: ARM: 9039/1: assembler: generalize byte swapping macro into rev_l
BACKPORT: ARM: 9035/1: uncompress: Add be32tocpu macro
Conflicts:
drivers/mmc/host/sdhci.c
drivers/slimbus/stream.c
Change-Id: Ic112be181f3558a83f85d01fb4e25444f14c7548
807 lines
21 KiB
C
807 lines
21 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Device tables which are exported to userspace via
|
|
* scripts/mod/file2alias.c. You must keep that file in sync with this
|
|
* header.
|
|
*/
|
|
|
|
#ifndef LINUX_MOD_DEVICETABLE_H
|
|
#define LINUX_MOD_DEVICETABLE_H
|
|
|
|
#ifdef __KERNEL__
|
|
#include <linux/types.h>
|
|
#include <linux/uuid.h>
|
|
typedef unsigned long kernel_ulong_t;
|
|
#endif
|
|
|
|
#define PCI_ANY_ID (~0)
|
|
|
|
struct pci_device_id {
|
|
__u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/
|
|
__u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */
|
|
__u32 class, class_mask; /* (class,subclass,prog-if) triplet */
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
|
|
#define IEEE1394_MATCH_VENDOR_ID 0x0001
|
|
#define IEEE1394_MATCH_MODEL_ID 0x0002
|
|
#define IEEE1394_MATCH_SPECIFIER_ID 0x0004
|
|
#define IEEE1394_MATCH_VERSION 0x0008
|
|
|
|
struct ieee1394_device_id {
|
|
__u32 match_flags;
|
|
__u32 vendor_id;
|
|
__u32 model_id;
|
|
__u32 specifier_id;
|
|
__u32 version;
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
|
|
/*
|
|
* Device table entry for "new style" table-driven USB drivers.
|
|
* User mode code can read these tables to choose which modules to load.
|
|
* Declare the table as a MODULE_DEVICE_TABLE.
|
|
*
|
|
* A probe() parameter will point to a matching entry from this table.
|
|
* Use the driver_info field for each match to hold information tied
|
|
* to that match: device quirks, etc.
|
|
*
|
|
* Terminate the driver's table with an all-zeroes entry.
|
|
* Use the flag values to control which fields are compared.
|
|
*/
|
|
|
|
/**
|
|
* struct usb_device_id - identifies USB devices for probing and hotplugging
|
|
* @match_flags: Bit mask controlling which of the other fields are used to
|
|
* match against new devices. Any field except for driver_info may be
|
|
* used, although some only make sense in conjunction with other fields.
|
|
* This is usually set by a USB_DEVICE_*() macro, which sets all
|
|
* other fields in this structure except for driver_info.
|
|
* @idVendor: USB vendor ID for a device; numbers are assigned
|
|
* by the USB forum to its members.
|
|
* @idProduct: Vendor-assigned product ID.
|
|
* @bcdDevice_lo: Low end of range of vendor-assigned product version numbers.
|
|
* This is also used to identify individual product versions, for
|
|
* a range consisting of a single device.
|
|
* @bcdDevice_hi: High end of version number range. The range of product
|
|
* versions is inclusive.
|
|
* @bDeviceClass: Class of device; numbers are assigned
|
|
* by the USB forum. Products may choose to implement classes,
|
|
* or be vendor-specific. Device classes specify behavior of all
|
|
* the interfaces on a device.
|
|
* @bDeviceSubClass: Subclass of device; associated with bDeviceClass.
|
|
* @bDeviceProtocol: Protocol of device; associated with bDeviceClass.
|
|
* @bInterfaceClass: Class of interface; numbers are assigned
|
|
* by the USB forum. Products may choose to implement classes,
|
|
* or be vendor-specific. Interface classes specify behavior only
|
|
* of a given interface; other interfaces may support other classes.
|
|
* @bInterfaceSubClass: Subclass of interface; associated with bInterfaceClass.
|
|
* @bInterfaceProtocol: Protocol of interface; associated with bInterfaceClass.
|
|
* @bInterfaceNumber: Number of interface; composite devices may use
|
|
* fixed interface numbers to differentiate between vendor-specific
|
|
* interfaces.
|
|
* @driver_info: Holds information used by the driver. Usually it holds
|
|
* a pointer to a descriptor understood by the driver, or perhaps
|
|
* device flags.
|
|
*
|
|
* In most cases, drivers will create a table of device IDs by using
|
|
* USB_DEVICE(), or similar macros designed for that purpose.
|
|
* They will then export it to userspace using MODULE_DEVICE_TABLE(),
|
|
* and provide it to the USB core through their usb_driver structure.
|
|
*
|
|
* See the usb_match_id() function for information about how matches are
|
|
* performed. Briefly, you will normally use one of several macros to help
|
|
* construct these entries. Each entry you provide will either identify
|
|
* one or more specific products, or will identify a class of products
|
|
* which have agreed to behave the same. You should put the more specific
|
|
* matches towards the beginning of your table, so that driver_info can
|
|
* record quirks of specific products.
|
|
*/
|
|
struct usb_device_id {
|
|
/* which fields to match against? */
|
|
__u16 match_flags;
|
|
|
|
/* Used for product specific matches; range is inclusive */
|
|
__u16 idVendor;
|
|
__u16 idProduct;
|
|
__u16 bcdDevice_lo;
|
|
__u16 bcdDevice_hi;
|
|
|
|
/* Used for device class matches */
|
|
__u8 bDeviceClass;
|
|
__u8 bDeviceSubClass;
|
|
__u8 bDeviceProtocol;
|
|
|
|
/* Used for interface class matches */
|
|
__u8 bInterfaceClass;
|
|
__u8 bInterfaceSubClass;
|
|
__u8 bInterfaceProtocol;
|
|
|
|
/* Used for vendor-specific interface matches */
|
|
__u8 bInterfaceNumber;
|
|
|
|
/* not matched against */
|
|
kernel_ulong_t driver_info
|
|
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
|
};
|
|
|
|
/* Some useful macros to use to create struct usb_device_id */
|
|
#define USB_DEVICE_ID_MATCH_VENDOR 0x0001
|
|
#define USB_DEVICE_ID_MATCH_PRODUCT 0x0002
|
|
#define USB_DEVICE_ID_MATCH_DEV_LO 0x0004
|
|
#define USB_DEVICE_ID_MATCH_DEV_HI 0x0008
|
|
#define USB_DEVICE_ID_MATCH_DEV_CLASS 0x0010
|
|
#define USB_DEVICE_ID_MATCH_DEV_SUBCLASS 0x0020
|
|
#define USB_DEVICE_ID_MATCH_DEV_PROTOCOL 0x0040
|
|
#define USB_DEVICE_ID_MATCH_INT_CLASS 0x0080
|
|
#define USB_DEVICE_ID_MATCH_INT_SUBCLASS 0x0100
|
|
#define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200
|
|
#define USB_DEVICE_ID_MATCH_INT_NUMBER 0x0400
|
|
|
|
#define HID_ANY_ID (~0)
|
|
#define HID_BUS_ANY 0xffff
|
|
#define HID_GROUP_ANY 0x0000
|
|
|
|
struct hid_device_id {
|
|
__u16 bus;
|
|
__u16 group;
|
|
__u32 vendor;
|
|
__u32 product;
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
/* s390 CCW devices */
|
|
struct ccw_device_id {
|
|
__u16 match_flags; /* which fields to match against */
|
|
|
|
__u16 cu_type; /* control unit type */
|
|
__u16 dev_type; /* device type */
|
|
__u8 cu_model; /* control unit model */
|
|
__u8 dev_model; /* device model */
|
|
|
|
kernel_ulong_t driver_info;
|
|
};
|
|
|
|
#define CCW_DEVICE_ID_MATCH_CU_TYPE 0x01
|
|
#define CCW_DEVICE_ID_MATCH_CU_MODEL 0x02
|
|
#define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
|
|
#define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
|
|
|
|
/* s390 AP bus devices */
|
|
struct ap_device_id {
|
|
__u16 match_flags; /* which fields to match against */
|
|
__u8 dev_type; /* device type */
|
|
kernel_ulong_t driver_info;
|
|
};
|
|
|
|
#define AP_DEVICE_ID_MATCH_CARD_TYPE 0x01
|
|
#define AP_DEVICE_ID_MATCH_QUEUE_TYPE 0x02
|
|
|
|
/* s390 css bus devices (subchannels) */
|
|
struct css_device_id {
|
|
__u8 match_flags;
|
|
__u8 type; /* subchannel type */
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
#define ACPI_ID_LEN 9
|
|
|
|
struct acpi_device_id {
|
|
__u8 id[ACPI_ID_LEN];
|
|
kernel_ulong_t driver_data;
|
|
__u32 cls;
|
|
__u32 cls_msk;
|
|
};
|
|
|
|
#define PNP_ID_LEN 8
|
|
#define PNP_MAX_DEVICES 8
|
|
|
|
struct pnp_device_id {
|
|
__u8 id[PNP_ID_LEN];
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
struct pnp_card_device_id {
|
|
__u8 id[PNP_ID_LEN];
|
|
kernel_ulong_t driver_data;
|
|
struct {
|
|
__u8 id[PNP_ID_LEN];
|
|
} devs[PNP_MAX_DEVICES];
|
|
};
|
|
|
|
|
|
#define SERIO_ANY 0xff
|
|
|
|
struct serio_device_id {
|
|
__u8 type;
|
|
__u8 extra;
|
|
__u8 id;
|
|
__u8 proto;
|
|
};
|
|
|
|
struct hda_device_id {
|
|
__u32 vendor_id;
|
|
__u32 rev_id;
|
|
__u8 api_version;
|
|
const char *name;
|
|
unsigned long driver_data;
|
|
};
|
|
|
|
struct sdw_device_id {
|
|
__u16 mfg_id;
|
|
__u16 part_id;
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
/*
|
|
* Struct used for matching a device
|
|
*/
|
|
struct of_device_id {
|
|
char name[32];
|
|
char type[32];
|
|
char compatible[128];
|
|
const void *data;
|
|
};
|
|
|
|
/* VIO */
|
|
struct vio_device_id {
|
|
char type[32];
|
|
char compat[32];
|
|
};
|
|
|
|
/* PCMCIA */
|
|
|
|
struct pcmcia_device_id {
|
|
__u16 match_flags;
|
|
|
|
__u16 manf_id;
|
|
__u16 card_id;
|
|
|
|
__u8 func_id;
|
|
|
|
/* for real multi-function devices */
|
|
__u8 function;
|
|
|
|
/* for pseudo multi-function devices */
|
|
__u8 device_no;
|
|
|
|
__u32 prod_id_hash[4];
|
|
|
|
/* not matched against in kernelspace */
|
|
const char * prod_id[4];
|
|
|
|
/* not matched against */
|
|
kernel_ulong_t driver_info;
|
|
char * cisfile;
|
|
};
|
|
|
|
#define PCMCIA_DEV_ID_MATCH_MANF_ID 0x0001
|
|
#define PCMCIA_DEV_ID_MATCH_CARD_ID 0x0002
|
|
#define PCMCIA_DEV_ID_MATCH_FUNC_ID 0x0004
|
|
#define PCMCIA_DEV_ID_MATCH_FUNCTION 0x0008
|
|
#define PCMCIA_DEV_ID_MATCH_PROD_ID1 0x0010
|
|
#define PCMCIA_DEV_ID_MATCH_PROD_ID2 0x0020
|
|
#define PCMCIA_DEV_ID_MATCH_PROD_ID3 0x0040
|
|
#define PCMCIA_DEV_ID_MATCH_PROD_ID4 0x0080
|
|
#define PCMCIA_DEV_ID_MATCH_DEVICE_NO 0x0100
|
|
#define PCMCIA_DEV_ID_MATCH_FAKE_CIS 0x0200
|
|
#define PCMCIA_DEV_ID_MATCH_ANONYMOUS 0x0400
|
|
|
|
/* Input */
|
|
#define INPUT_DEVICE_ID_EV_MAX 0x1f
|
|
#define INPUT_DEVICE_ID_KEY_MIN_INTERESTING 0x71
|
|
#define INPUT_DEVICE_ID_KEY_MAX 0x2ff
|
|
#define INPUT_DEVICE_ID_REL_MAX 0x0f
|
|
#define INPUT_DEVICE_ID_ABS_MAX 0x3f
|
|
#define INPUT_DEVICE_ID_MSC_MAX 0x07
|
|
#define INPUT_DEVICE_ID_LED_MAX 0x0f
|
|
#define INPUT_DEVICE_ID_SND_MAX 0x07
|
|
#define INPUT_DEVICE_ID_FF_MAX 0x7f
|
|
#define INPUT_DEVICE_ID_SW_MAX 0x20
|
|
#define INPUT_DEVICE_ID_PROP_MAX 0x1f
|
|
|
|
#define INPUT_DEVICE_ID_MATCH_BUS 1
|
|
#define INPUT_DEVICE_ID_MATCH_VENDOR 2
|
|
#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
|
|
#define INPUT_DEVICE_ID_MATCH_VERSION 8
|
|
|
|
#define INPUT_DEVICE_ID_MATCH_EVBIT 0x0010
|
|
#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x0020
|
|
#define INPUT_DEVICE_ID_MATCH_RELBIT 0x0040
|
|
#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x0080
|
|
#define INPUT_DEVICE_ID_MATCH_MSCIT 0x0100
|
|
#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x0200
|
|
#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400
|
|
#define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800
|
|
#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
|
|
#define INPUT_DEVICE_ID_MATCH_PROPBIT 0x2000
|
|
|
|
struct input_device_id {
|
|
|
|
kernel_ulong_t flags;
|
|
|
|
__u16 bustype;
|
|
__u16 vendor;
|
|
__u16 product;
|
|
__u16 version;
|
|
|
|
kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
|
|
kernel_ulong_t propbit[INPUT_DEVICE_ID_PROP_MAX / BITS_PER_LONG + 1];
|
|
|
|
kernel_ulong_t driver_info;
|
|
};
|
|
|
|
/* EISA */
|
|
|
|
#define EISA_SIG_LEN 8
|
|
|
|
/* The EISA signature, in ASCII form, null terminated */
|
|
struct eisa_device_id {
|
|
char sig[EISA_SIG_LEN];
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
#define EISA_DEVICE_MODALIAS_FMT "eisa:s%s"
|
|
|
|
struct parisc_device_id {
|
|
__u8 hw_type; /* 5 bits used */
|
|
__u8 hversion_rev; /* 4 bits */
|
|
__u16 hversion; /* 12 bits */
|
|
__u32 sversion; /* 20 bits */
|
|
};
|
|
|
|
#define PA_HWTYPE_ANY_ID 0xff
|
|
#define PA_HVERSION_REV_ANY_ID 0xff
|
|
#define PA_HVERSION_ANY_ID 0xffff
|
|
#define PA_SVERSION_ANY_ID 0xffffffff
|
|
|
|
/* SDIO */
|
|
|
|
#define SDIO_ANY_ID (~0)
|
|
|
|
struct sdio_device_id {
|
|
__u8 class; /* Standard interface or SDIO_ANY_ID */
|
|
__u16 vendor; /* Vendor or SDIO_ANY_ID */
|
|
__u16 device; /* Device ID or SDIO_ANY_ID */
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
/* SSB core, see drivers/ssb/ */
|
|
struct ssb_device_id {
|
|
__u16 vendor;
|
|
__u16 coreid;
|
|
__u8 revision;
|
|
__u8 __pad;
|
|
} __attribute__((packed, aligned(2)));
|
|
#define SSB_DEVICE(_vendor, _coreid, _revision) \
|
|
{ .vendor = _vendor, .coreid = _coreid, .revision = _revision, }
|
|
|
|
#define SSB_ANY_VENDOR 0xFFFF
|
|
#define SSB_ANY_ID 0xFFFF
|
|
#define SSB_ANY_REV 0xFF
|
|
|
|
/* Broadcom's specific AMBA core, see drivers/bcma/ */
|
|
struct bcma_device_id {
|
|
__u16 manuf;
|
|
__u16 id;
|
|
__u8 rev;
|
|
__u8 class;
|
|
} __attribute__((packed,aligned(2)));
|
|
#define BCMA_CORE(_manuf, _id, _rev, _class) \
|
|
{ .manuf = _manuf, .id = _id, .rev = _rev, .class = _class, }
|
|
|
|
#define BCMA_ANY_MANUF 0xFFFF
|
|
#define BCMA_ANY_ID 0xFFFF
|
|
#define BCMA_ANY_REV 0xFF
|
|
#define BCMA_ANY_CLASS 0xFF
|
|
|
|
struct virtio_device_id {
|
|
__u32 device;
|
|
__u32 vendor;
|
|
};
|
|
#define VIRTIO_DEV_ANY_ID 0xffffffff
|
|
|
|
/*
|
|
* For Hyper-V devices we use the device guid as the id.
|
|
*/
|
|
struct hv_vmbus_device_id {
|
|
uuid_le guid;
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
/* rpmsg */
|
|
|
|
#define RPMSG_NAME_SIZE 32
|
|
#define RPMSG_DEVICE_MODALIAS_FMT "rpmsg:%s"
|
|
|
|
struct rpmsg_device_id {
|
|
char name[RPMSG_NAME_SIZE];
|
|
};
|
|
|
|
/* i2c */
|
|
|
|
#define I2C_NAME_SIZE 20
|
|
#define I2C_MODULE_PREFIX "i2c:"
|
|
|
|
struct i2c_device_id {
|
|
char name[I2C_NAME_SIZE];
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
/* pci_epf */
|
|
|
|
#define PCI_EPF_NAME_SIZE 20
|
|
#define PCI_EPF_MODULE_PREFIX "pci_epf:"
|
|
|
|
struct pci_epf_device_id {
|
|
char name[PCI_EPF_NAME_SIZE];
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
/* i3c */
|
|
|
|
#define I3C_MATCH_DCR 0x1
|
|
#define I3C_MATCH_MANUF 0x2
|
|
#define I3C_MATCH_PART 0x4
|
|
#define I3C_MATCH_EXTRA_INFO 0x8
|
|
|
|
struct i3c_device_id {
|
|
__u8 match_flags;
|
|
__u8 dcr;
|
|
__u16 manuf_id;
|
|
__u16 part_id;
|
|
__u16 extra_info;
|
|
|
|
const void *data;
|
|
};
|
|
|
|
/* spi */
|
|
|
|
#define SPI_NAME_SIZE 32
|
|
#define SPI_MODULE_PREFIX "spi:"
|
|
|
|
struct spi_device_id {
|
|
char name[SPI_NAME_SIZE];
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
/* SLIMbus */
|
|
|
|
#define SLIMBUS_NAME_SIZE 32
|
|
#define SLIMBUS_MODULE_PREFIX "slim:"
|
|
|
|
struct slim_device_id {
|
|
char name[SLIMBUS_NAME_SIZE];
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
#define APR_NAME_SIZE 32
|
|
#define APR_MODULE_PREFIX "apr:"
|
|
|
|
struct apr_device_id {
|
|
char name[APR_NAME_SIZE];
|
|
__u32 domain_id;
|
|
__u32 svc_id;
|
|
__u32 svc_version;
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
#define SPMI_NAME_SIZE 32
|
|
#define SPMI_MODULE_PREFIX "spmi:"
|
|
|
|
struct spmi_device_id {
|
|
char name[SPMI_NAME_SIZE];
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
/* soundwire */
|
|
|
|
#define SOUNDWIRE_NAME_SIZE 32
|
|
#define SOUNDWIRE_MODULE_PREFIX "swr:"
|
|
|
|
struct swr_device_id {
|
|
char name[SOUNDWIRE_NAME_SIZE];
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
/* dmi */
|
|
enum dmi_field {
|
|
DMI_NONE,
|
|
DMI_BIOS_VENDOR,
|
|
DMI_BIOS_VERSION,
|
|
DMI_BIOS_DATE,
|
|
DMI_SYS_VENDOR,
|
|
DMI_PRODUCT_NAME,
|
|
DMI_PRODUCT_VERSION,
|
|
DMI_PRODUCT_SERIAL,
|
|
DMI_PRODUCT_UUID,
|
|
DMI_PRODUCT_SKU,
|
|
DMI_PRODUCT_FAMILY,
|
|
DMI_BOARD_VENDOR,
|
|
DMI_BOARD_NAME,
|
|
DMI_BOARD_VERSION,
|
|
DMI_BOARD_SERIAL,
|
|
DMI_BOARD_ASSET_TAG,
|
|
DMI_CHASSIS_VENDOR,
|
|
DMI_CHASSIS_TYPE,
|
|
DMI_CHASSIS_VERSION,
|
|
DMI_CHASSIS_SERIAL,
|
|
DMI_CHASSIS_ASSET_TAG,
|
|
DMI_STRING_MAX,
|
|
DMI_OEM_STRING, /* special case - will not be in dmi_ident */
|
|
};
|
|
|
|
struct dmi_strmatch {
|
|
unsigned char slot:7;
|
|
unsigned char exact_match:1;
|
|
char substr[79];
|
|
};
|
|
|
|
struct dmi_system_id {
|
|
int (*callback)(const struct dmi_system_id *);
|
|
const char *ident;
|
|
struct dmi_strmatch matches[4];
|
|
void *driver_data;
|
|
};
|
|
/*
|
|
* struct dmi_device_id appears during expansion of
|
|
* "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it
|
|
* but this is enough for gcc 3.4.6 to error out:
|
|
* error: storage size of '__mod_dmi_device_table' isn't known
|
|
*/
|
|
#define dmi_device_id dmi_system_id
|
|
|
|
#define DMI_MATCH(a, b) { .slot = a, .substr = b }
|
|
#define DMI_EXACT_MATCH(a, b) { .slot = a, .substr = b, .exact_match = 1 }
|
|
|
|
#define PLATFORM_NAME_SIZE 20
|
|
#define PLATFORM_MODULE_PREFIX "platform:"
|
|
|
|
struct platform_device_id {
|
|
char name[PLATFORM_NAME_SIZE];
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
#define MDIO_NAME_SIZE 32
|
|
#define MDIO_MODULE_PREFIX "mdio:"
|
|
|
|
#define MDIO_ID_FMT "%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u"
|
|
#define MDIO_ID_ARGS(_id) \
|
|
((_id)>>31) & 1, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1, \
|
|
((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \
|
|
((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \
|
|
((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \
|
|
((_id)>>15) & 1, ((_id)>>14) & 1, ((_id)>>13) & 1, ((_id)>>12) & 1, \
|
|
((_id)>>11) & 1, ((_id)>>10) & 1, ((_id)>>9) & 1, ((_id)>>8) & 1, \
|
|
((_id)>>7) & 1, ((_id)>>6) & 1, ((_id)>>5) & 1, ((_id)>>4) & 1, \
|
|
((_id)>>3) & 1, ((_id)>>2) & 1, ((_id)>>1) & 1, (_id) & 1
|
|
|
|
/**
|
|
* struct mdio_device_id - identifies PHY devices on an MDIO/MII bus
|
|
* @phy_id: The result of
|
|
* (mdio_read(&MII_PHYSID1) << 16 | mdio_read(&PHYSID2)) & @phy_id_mask
|
|
* for this PHY type
|
|
* @phy_id_mask: Defines the significant bits of @phy_id. A value of 0
|
|
* is used to terminate an array of struct mdio_device_id.
|
|
*/
|
|
struct mdio_device_id {
|
|
__u32 phy_id;
|
|
__u32 phy_id_mask;
|
|
};
|
|
|
|
struct zorro_device_id {
|
|
__u32 id; /* Device ID or ZORRO_WILDCARD */
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
};
|
|
|
|
#define ZORRO_WILDCARD (0xffffffff) /* not official */
|
|
|
|
#define ZORRO_DEVICE_MODALIAS_FMT "zorro:i%08X"
|
|
|
|
#define ISAPNP_ANY_ID 0xffff
|
|
struct isapnp_device_id {
|
|
unsigned short card_vendor, card_device;
|
|
unsigned short vendor, function;
|
|
kernel_ulong_t driver_data; /* data private to the driver */
|
|
};
|
|
|
|
/**
|
|
* struct amba_id - identifies a device on an AMBA bus
|
|
* @id: The significant bits if the hardware device ID
|
|
* @mask: Bitmask specifying which bits of the id field are significant when
|
|
* matching. A driver binds to a device when ((hardware device ID) & mask)
|
|
* == id.
|
|
* @data: Private data used by the driver.
|
|
*/
|
|
struct amba_id {
|
|
unsigned int id;
|
|
unsigned int mask;
|
|
void *data;
|
|
};
|
|
|
|
/**
|
|
* struct mips_cdmm_device_id - identifies devices in MIPS CDMM bus
|
|
* @type: Device type identifier.
|
|
*/
|
|
struct mips_cdmm_device_id {
|
|
__u8 type;
|
|
};
|
|
|
|
/*
|
|
* Match x86 CPUs for CPU specific drivers.
|
|
* See documentation of "x86_match_cpu" for details.
|
|
*/
|
|
|
|
/*
|
|
* MODULE_DEVICE_TABLE expects this struct to be called x86cpu_device_id.
|
|
* Although gcc seems to ignore this error, clang fails without this define.
|
|
*
|
|
* Note: The ordering of the struct is different from upstream because the
|
|
* static initializers in kernels < 5.7 still use C89 style while upstream
|
|
* has been converted to proper C99 initializers.
|
|
*/
|
|
#define x86cpu_device_id x86_cpu_id
|
|
struct x86_cpu_id {
|
|
__u16 vendor;
|
|
__u16 family;
|
|
__u16 model;
|
|
__u16 feature; /* bit index */
|
|
kernel_ulong_t driver_data;
|
|
__u16 steppings;
|
|
};
|
|
|
|
/* Wild cards for x86_cpu_id::vendor, family, model and feature */
|
|
#define X86_VENDOR_ANY 0xffff
|
|
#define X86_FAMILY_ANY 0
|
|
#define X86_MODEL_ANY 0
|
|
#define X86_STEPPING_ANY 0
|
|
#define X86_FEATURE_ANY 0 /* Same as FPU, you can't test for that */
|
|
|
|
/*
|
|
* Generic table type for matching CPU features.
|
|
* @feature: the bit number of the feature (0 - 65535)
|
|
*/
|
|
|
|
struct cpu_feature {
|
|
__u16 feature;
|
|
};
|
|
|
|
#define IPACK_ANY_FORMAT 0xff
|
|
#define IPACK_ANY_ID (~0)
|
|
struct ipack_device_id {
|
|
__u8 format; /* Format version or IPACK_ANY_ID */
|
|
__u32 vendor; /* Vendor ID or IPACK_ANY_ID */
|
|
__u32 device; /* Device ID or IPACK_ANY_ID */
|
|
};
|
|
|
|
#define MEI_CL_MODULE_PREFIX "mei:"
|
|
#define MEI_CL_NAME_SIZE 32
|
|
#define MEI_CL_VERSION_ANY 0xff
|
|
|
|
/**
|
|
* struct mei_cl_device_id - MEI client device identifier
|
|
* @name: helper name
|
|
* @uuid: client uuid
|
|
* @version: client protocol version
|
|
* @driver_info: information used by the driver.
|
|
*
|
|
* identifies mei client device by uuid and name
|
|
*/
|
|
struct mei_cl_device_id {
|
|
char name[MEI_CL_NAME_SIZE];
|
|
uuid_le uuid;
|
|
__u8 version;
|
|
kernel_ulong_t driver_info;
|
|
};
|
|
|
|
/* RapidIO */
|
|
|
|
#define RIO_ANY_ID 0xffff
|
|
|
|
/**
|
|
* struct rio_device_id - RIO device identifier
|
|
* @did: RapidIO device ID
|
|
* @vid: RapidIO vendor ID
|
|
* @asm_did: RapidIO assembly device ID
|
|
* @asm_vid: RapidIO assembly vendor ID
|
|
*
|
|
* Identifies a RapidIO device based on both the device/vendor IDs and
|
|
* the assembly device/vendor IDs.
|
|
*/
|
|
struct rio_device_id {
|
|
__u16 did, vid;
|
|
__u16 asm_did, asm_vid;
|
|
};
|
|
|
|
struct mcb_device_id {
|
|
__u16 device;
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
struct ulpi_device_id {
|
|
__u16 vendor;
|
|
__u16 product;
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
/**
|
|
* struct fsl_mc_device_id - MC object device identifier
|
|
* @vendor: vendor ID
|
|
* @obj_type: MC object type
|
|
*
|
|
* Type of entries in the "device Id" table for MC object devices supported by
|
|
* a MC object device driver. The last entry of the table has vendor set to 0x0
|
|
*/
|
|
struct fsl_mc_device_id {
|
|
__u16 vendor;
|
|
const char obj_type[16];
|
|
};
|
|
|
|
/**
|
|
* struct tb_service_id - Thunderbolt service identifiers
|
|
* @match_flags: Flags used to match the structure
|
|
* @protocol_key: Protocol key the service supports
|
|
* @protocol_id: Protocol id the service supports
|
|
* @protocol_version: Version of the protocol
|
|
* @protocol_revision: Revision of the protocol software
|
|
* @driver_data: Driver specific data
|
|
*
|
|
* Thunderbolt XDomain services are exposed as devices where each device
|
|
* carries the protocol information the service supports. Thunderbolt
|
|
* XDomain service drivers match against that information.
|
|
*/
|
|
struct tb_service_id {
|
|
__u32 match_flags;
|
|
char protocol_key[8 + 1];
|
|
__u32 protocol_id;
|
|
__u32 protocol_version;
|
|
__u32 protocol_revision;
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
#define TBSVC_MATCH_PROTOCOL_KEY 0x0001
|
|
#define TBSVC_MATCH_PROTOCOL_ID 0x0002
|
|
#define TBSVC_MATCH_PROTOCOL_VERSION 0x0004
|
|
#define TBSVC_MATCH_PROTOCOL_REVISION 0x0008
|
|
|
|
/* USB Type-C Alternate Modes */
|
|
|
|
#define TYPEC_ANY_MODE 0x7
|
|
|
|
/**
|
|
* struct typec_device_id - USB Type-C alternate mode identifiers
|
|
* @svid: Standard or Vendor ID
|
|
* @mode: Mode index
|
|
* @driver_data: Driver specific data
|
|
*/
|
|
struct typec_device_id {
|
|
__u16 svid;
|
|
__u8 mode;
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
#define MHI_NAME_SIZE 32
|
|
|
|
/**
|
|
* struct mhi_device_id - MHI device identification
|
|
* @chan: MHI channel name
|
|
* @driver_data: driver data;
|
|
*/
|
|
|
|
struct mhi_device_id {
|
|
const char chan[MHI_NAME_SIZE];
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
#endif /* LINUX_MOD_DEVICETABLE_H */
|