Merge 4.14.299 into android-4.14-stable
Merge 4.14.298 into android-4.14-stable
Linux 4.14.299
wifi: brcmfmac: Fix potential buffer overflow in brcmf_fweh_event_worker()
* linux/bits.h: make BIT(), GENMASK(), and friends available in assembly
include/linux/bits.h
* linux/const.h: move UL() macro to include/linux/const.h
arch/arm64/include/asm/memory.h
include/linux/const.h
include/uapi/linux/const.h
* linux/const.h: prefix include guard of uapi/linux/const.h with _UAPI
include/uapi/linux/const.h
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'
fs/ext4/migrate.c
parisc: Export iosapic_serial_irq() symbol for serial port driver
* parisc: Make 8250_gsc driver dependend on CONFIG_PARISC
drivers/tty/serial/8250/Kconfig
* efi: random: reduce seed size to 32 bytes
include/linux/efi.h
* ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices
sound/usb/quirks-table.h
sound/usb/quirks.c
* capabilities: fix potential memleak on error path from vfs_getxattr_alloc()
security/commoncap.c
* tcp/udp: Make early_demux back namespacified.
include/net/protocol.h
include/net/tcp.h
include/net/udp.h
net/ipv4/af_inet.c
net/ipv4/ip_input.c
net/ipv4/sysctl_net_ipv4.c
net/ipv6/ip6_input.c
net/ipv6/tcp_ipv6.c
net/ipv6/udp.c
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
net/bluetooth/l2cap_core.c
i2c: xiic: Add platform module alias
media: dvb-frontends/drxk: initialize err to 0
media: s5p_cec: limit msg.len to CEC_MAX_MSG_SIZE
* net, neigh: Fix null-ptr-deref in neigh_table_clear()
net/core/neighbour.c
* net: mdio: fix undefined behavior in bit shift for __mdiobus_register
drivers/net/phy/mdio_bus.c
* Bluetooth: L2CAP: fix use-after-free in l2cap_conn_del()
net/bluetooth/l2cap_core.c
* Bluetooth: L2CAP: Fix use-after-free caused by l2cap_reassemble_sdu
net/bluetooth/l2cap_core.c
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: use explicitly signed chars
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()
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
* UPSTREAM: linux/const.h: move UL() macro to include/linux/const.h
arch/arm64/include/asm/memory.h
include/linux/const.h
include/uapi/linux/const.h
* UPSTREAM: linux/const.h: prefix include guard of uapi/linux/const.h with _UAPI
include/uapi/linux/const.h
* UPSTREAM: linux/bits.h: make BIT(), GENMASK(), and friends available in assembly
include/linux/bits.h
Linux 4.14.298
can: rcar_canfd: rcar_canfd_handle_global_receive(): fix IRQ storm on global FIFO receive
net: ehea: fix possible memory leak in ehea_register_port()
openvswitch: switch from WARN to pr_warn
ALSA: aoa: Fix I2S device accounting
ALSA: aoa: i2sbus: fix possible memory leak in i2sbus_add_dev()
* PM: domains: Fix handling of unavailable/disabled idle states
drivers/base/power/domain.c
net: ksz884x: fix missing pci_disable_device() on error in pcidev_init()
i40e: Fix flow-type by setting GL_HASH_INSET registers
i40e: Fix ethtool rx-flow-hash setting for X722
* media: videodev2.h: V4L2_DV_BT_BLANKING_HEIGHT should check 'interlaced'
include/uapi/linux/videodev2.h
* media: v4l2-dv-timings: add sanity checks for blanking values
drivers/media/v4l2-core/v4l2-dv-timings.c
media: vivid: dev->bitmap_cap wasn't freed in all cases
media: vivid: s_fbuf: add more sanity checks
PM: hibernate: Allow hybrid sleep to work with s2idle
can: mscan: mpc5xxx: mpc5xxx_can_probe(): add missing put_clock() in error path
* tcp: fix indefinite deferral of RTO with SACK reneging
net/ipv4/tcp_input.c
net: lantiq_etop: don't free skb when returning NETDEV_TX_BUSY
kcm: annotate data-races around kcm->rx_wait
kcm: annotate data-races around kcm->rx_psock
amd-xgbe: add the bit rate quirk for Molex cables
amd-xgbe: fix the SFP compliance codes check for DAC cables
x86/unwind/orc: Fix unreliable stack dump with gcov
ALSA: ac97: fix possible memory leak in snd_ac97_dev_register()
arc: iounmap() arg is volatile
drm/msm: Fix return type of mdp4_lvds_connector_mode_valid
net: ieee802154: fix error return code in dgram_bind()
mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages
xen/gntdev: Prevent leaking grants
Xen/gntdev: don't ignore kernel unmapping error
s390/futex: add missing EX_TABLE entry to __futex_atomic_op()
* kernfs: fix use-after-free in __kernfs_remove
fs/kernfs/dir.c
mmc: core: Fix kernel panic when remove non-standard SDIO card
drm/msm/hdmi: fix memory corruption with too many bridges
mac802154: Fix LQI recording
fbdev: smscufx: Fix several use-after-free bugs
iio: light: tsl2583: Fix module unloading
tools: iio: iio_utils: fix digit calculation
* xhci: Remove device endpoints from bandwidth list when freeing the device
drivers/usb/host/xhci-mem.c
* usb: xhci: add XHCI_SPURIOUS_SUCCESS to ASM1042 despite being a V0.96 controller
drivers/usb/host/xhci-pci.c
usb: bdc: change state when port disconnected
* usb: dwc3: gadget: Don't set IMI for no_interrupt
drivers/usb/dwc3/gadget.c
* USB: add RESET_RESUME quirk for NVIDIA Jetson devices in RCM
drivers/usb/core/quirks.c
ALSA: au88x0: use explicitly signed char
ALSA: Use del_timer_sync() before freeing timer
ACPI: video: Force backlight native for more TongFang devices
* media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across ioctls
drivers/media/v4l2-core/v4l2-mem2mem.c
iommu/vt-d: Clean up si_domain in the init_dmars() error path
net: hns: fix possible memory leak in hnae_ae_register()
net/atm: fix proc_mpc_write incorrect return value
* HID: magicmouse: Do not set BTN_MOUSE on double report
drivers/hid/hid-magicmouse.c
ACPI: extlog: Handle multiple records
btrfs: fix processing of delayed data refs during backref walking
* r8152: add PID for the Lenovo OneLink+ Dock
drivers/net/usb/cdc_ether.c
drivers/net/usb/r8152.c
* arm64: errata: Remove AES hwcap for COMPAT tasks
arch/arm64/Kconfig
arch/arm64/include/asm/cpucaps.h
arch/arm64/kernel/cpu_errata.c
arch/arm64/kernel/cpufeature.c
KVM: arm64: vgic: Fix exit condition in scan_its_table()
ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS
ata: ahci-imx: Fix MODULE_ALIAS
x86/microcode/AMD: Apply the patch early on every logical thread
ocfs2: fix BUG when iput after ocfs2_mknod fails
ocfs2: clear dinode links count in case of error
Merge 4.14.297 into android-4.14-stable
Linux 4.14.297
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: Add LFENCE to RSB fill sequence
x86/speculation: Change FILL_RETURN_BUFFER to work with objtool
entel_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/bugs: Keep a per-CPU IA32_SPEC_CTRL value
x86/bugs: Add AMD retbleed= boot parameter
* x86/bugs: Report AMD retbleed vulnerability
drivers/base/cpu.c
include/linux/cpu.h
x86/cpufeatures: Move RETPOLINE flags to word 11
x86/entry: Remove skip_r11rcx
* x86/cpu: Add a steppings field to struct x86_cpu_id
include/linux/mod_devicetable.h
x86/cpu: Add consistent CPU match macros
* x86/devicetable: Move x86 specific macro out of generic code
include/linux/mod_devicetable.h
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"
include/linux/mod_devicetable.h
Merge 4.14.296 into android-4.14-stable
Linux 4.14.296
thermal: intel_powerclamp: Use first online CPU as control_cpu
* inet: fully convert sk->sk_rx_dst to RCU rules
include/net/sock.h
net/ipv4/af_inet.c
net/ipv4/tcp.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/udp.c
net/ipv6/tcp_ipv6.c
net/ipv6/udp.c
efi: libstub: drop pointless get_memory_map() call
md: Replace snprintf with scnprintf
* ext4: continue to expand file system when the target size doesn't reach
fs/ext4/resize.c
net/ieee802154: don't warn zero-sized raw_sendmsg()
net: ieee802154: return -EINVAL for unknown addr type
perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc
usb: idmouse: fix an uninit-value in idmouse_open
* Revert "usb: storage: Add quirk for Samsung Fit flash"
drivers/usb/storage/unusual_devs.h
usb: musb: Fix musb_gadget.c rxstate overflow bug
* usb: host: xhci: Fix potential memory leak in xhci_alloc_stream_info()
drivers/usb/host/xhci-mem.c
md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d
HID: roccat: Fix use-after-free in roccat_read()
nbd: Fix hung when signal interrupts nbd_start_device_ioctl()
scsi: 3w-9xxx: Avoid disabling device if failing to enable it
media: cx88: Fix a null-ptr-deref bug in buffer_prepare()
ARM: dts: imx6sl: add missing properties for sram
ARM: dts: imx6qp: add missing properties for sram
ARM: dts: imx6dl: add missing properties for sram
ARM: dts: imx6q: add missing properties for sram
ARM: dts: imx7d-sdb: config the max pressure for tsc2046
drm/amdgpu: fix initial connector audio value
platform/x86: msi-laptop: Change DMI match / alias strings to fix module autoloading
drm/vc4: vec: Fix timings for VEC modes
* drm: Prevent drm_copy_field() to attempt copying a NULL pointer
drivers/gpu/drm/drm_ioctl.c
* drm: Use size_t type for len variable in drm_copy_field()
drivers/gpu/drm/drm_ioctl.c
* r8152: Rate limit overflow messages
drivers/net/usb/r8152.c
* Bluetooth: L2CAP: Fix user-after-free
net/bluetooth/l2cap_core.c
* net: If sock is dead don't access sock's sk_wq in sk_stream_wait_memory
net/core/stream.c
wifi: rt2x00: correctly set BBP register 86 for MT7620
wifi: rt2x00: set SoC wmac clock register
wifi: rt2x00: set correct TX_SW_CFG1 MAC register for MT7620
wifi: rt2x00: don't run Rt5592 IQ calibration on MT7620
can: bcm: check the result of can_send() in bcm_can_tx()
* Bluetooth: hci_sysfs: Fix attempting to call device_add multiple times
net/bluetooth/hci_sysfs.c
* Bluetooth: L2CAP: initialize delayed works at l2cap_chan_create()
net/bluetooth/l2cap_core.c
wifi: brcmfmac: fix use-after-free bug in brcmf_netdev_start_xmit()
* xfrm: Update ipcomp_scratches with NULL when freed
net/xfrm/xfrm_ipcomp.c
wifi: ath9k: avoid uninit memory read in ath9k_htc_rx_msg()
* tcp: annotate data-race around tcp_md5sig_pool_populated
net/ipv4/tcp.c
openvswitch: Fix overreporting of drops in dropwatch
openvswitch: Fix double reporting of drops in dropwatch
wifi: brcmfmac: fix invalid address access when enabling SCAN log level
NFSD: Return nfserr_serverfault if splice_ok but buf->pages have data
thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to avoid crash
powercap: intel_rapl: fix UBSAN shift-out-of-bounds issue
MIPS: BCM47XX: Cast memcmp() of function to (void *)
ACPI: video: Add Toshiba Satellite/Portege Z830 quirk
* f2fs: fix race condition on setting FI_NO_EXTENT flag
fs/f2fs/extent_cache.c
crypto: cavium - prevent integer overflow loading firmware
* iommu/iova: Fix module config properly
include/linux/iova.h
iommu/omap: Fix buffer overflow in debugfs
powerpc: Fix SPE Power ISA properties for e500v1 platforms
powerpc/powernv: add missing of_node_put() in opal_export_attrs()
powerpc/pci_dn: Add missing of_node_put()
powerpc/sysdev/fsl_msi: Add missing of_node_put()
powerpc/math_emu/efp: Include module.h
mailbox: bcm-ferxrm-mailbox: Fix error check for dma_map_sg
clk: ti: dra7-atl: Fix reference leak in of_dra7_atl_clk_probe
clk: bcm2835: fix bcm2835_clock_rate_from_divisor declaration
* spmi: pmic-arb: correct duplicate APID to PPID mapping logic
drivers/spmi/spmi-pmic-arb.c
dmaengine: ioat: stop mod_timer from resurrecting deleted timer in __cleanup()
mfd: sm501: Add check for platform_driver_register()
mfd: lp8788: Fix an error handling path in lp8788_irq_init() and lp8788_irq_init()
mfd: lp8788: Fix an error handling path in lp8788_probe()
mfd: fsl-imx25: Fix an error handling path in mx25_tsadc_setup_irq()
mfd: intel_soc_pmic: Fix an error handling path in intel_soc_pmic_i2c_probe()
fsi: core: Check error number after calling ida_simple_get
serial: 8250: Fix restoring termios speed after suspend
firmware: google: Test spinlock on panic path to avoid lockups
phy: qualcomm: call clk_disable_unprepare in the error handling
drivers: serial: jsm: fix some leaks in probe
usb: gadget: function: fix dangling pnp_string in f_printer.c
* xhci: Don't show warning for reinit on known broken suspend
drivers/usb/host/xhci.c
md/raid5: Ensure stripe_fill happens on non-read IO with journal
ata: fix ata_id_has_dipm()
ata: fix ata_id_has_ncq_autosense()
ata: fix ata_id_has_devslp()
ata: fix ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting()
* dyndbg: let query-modname override actual module name
lib/dynamic_debug.c
* dyndbg: fix module.dyndbg handling
include/linux/dynamic_debug.h
RDMA/rxe: Fix the error caused by qp->sk
RDMA/rxe: Fix "kernel NULL pointer dereference" error
media: xilinx: vipp: Fix refcount leak in xvip_graph_dma_init
tty: xilinx_uartps: Fix the ignore_status
media: exynos4-is: fimc-is: Add of_node_put() when breaking out of loop
HSI: omap_ssi_port: Fix dma_map_sg error check
HSI: omap_ssi: Fix refcount leak in ssi_probe
clk: tegra20: Fix refcount leak in tegra20_clock_init
clk: tegra: Fix refcount leak in tegra114_clock_init
clk: tegra: Fix refcount leak in tegra210_clock_init
clk: oxnas: Hold reference returned by of_get_parent()
iio: ABI: Fix wrong format of differential capacitance channel ABI.
* iio: inkern: only release the device node when done with it
drivers/iio/inkern.c
iio: adc: at91-sama5d2_adc: fix AT91_SAMA5D2_MR_TRACKTIM_MAX
ARM: dts: exynos: fix polarity of VBUS GPIO of Origen
ARM: Drop CMDLINE_* dependency on ATAGS
ARM: dts: kirkwood: lsxl: remove first ethernet port
ARM: dts: kirkwood: lsxl: fix serial line
ARM: dts: turris-omnia: Fix mpp26 pin name and comment
* soc: qcom: smem_state: Add refcounting for the 'state->of_node'
drivers/soc/qcom/smem_state.c
soc: qcom: smsm: Fix refcount leak bugs in qcom_smsm_probe()
memory: of: Fix refcount leak bug in of_get_ddr_timings()
mmc: wmt-sdmmc: Fix an error handling path in wmt_mci_probe()
ALSA: dmaengine: increment buffer pointer atomically
ASoC: eureka-tlv320: Hold reference returned from of_find_xxx API
mmc: au1xmmc: Fix an error handling path in au1xmmc_probe()
drm/bridge: megachips: Fix a null pointer dereference bug
platform/x86: msi-laptop: Fix resource cleanup
platform/x86: msi-laptop: Fix old-ec check for backlight registering
* drm/mipi-dsi: Detach devices when removing the host
drivers/gpu/drm/drm_mipi_dsi.c
bnx2x: fix potential memory leak in bnx2x_tpa_stop()
net: rds: don't hold sock lock when cancelling work from rds_tcp_reset_callbacks()
* tcp: fix tcp_cwnd_validate() to not forget is_cwnd_limited
include/linux/tcp.h
include/net/tcp.h
net/ipv4/tcp.c
net/ipv4/tcp_output.c
mISDN: fix use-after-free bugs in l1oip timer handlers
vhost/vsock: Use kvmalloc/kvfree for larger packets.
spi: s3c64xx: Fix large transfers with DMA
netfilter: nft_fib: Fix for rpath check with VRF devices
spi/omap100k:Fix PM disable depth imbalance in omap1_spi100k_probe
net: fs_enet: Fix wrong check in do_pd_setup
wifi: rtl8xxxu: gen2: Fix mistake in path B IQ calibration
wifi: rtl8xxxu: Fix skb misuse in TX queue selection
spi: qup: add missing clk_disable_unprepare on error in spi_qup_pm_resume_runtime()
spi: qup: add missing clk_disable_unprepare on error in spi_qup_resume()
wifi: rtl8xxxu: tighten bounds checking in rtl8xxxu_read_efuse()
wifi: mac80211: allow bw change during channel switch in mesh
wifi: ath10k: add peer map clean up for peer delete in ath10k_sta_state()
sh: machvec: Use char[] for section boundaries
selinux: use "grep -E" instead of "egrep"
gcov: support GCC 12.1 and newer compilers
KVM: nVMX: Unconditionally purge queued/injected events on nested "exit"
KVM: x86/emulator: Fix handing of POP SS to correctly set interruptibility
* ring-buffer: Fix race between reset page and reading page
kernel/trace/ring_buffer.c
* ring-buffer: Check pending waiters when doing wake ups as well
kernel/trace/ring_buffer.c
* ring-buffer: Allow splice to read previous partially read pages
kernel/trace/ring_buffer.c
ftrace: Properly unset FTRACE_HASH_FL_MOD
livepatch: fix race between fork and KLP transition
* ext4: place buffer head allocation before handle start
fs/ext4/inode.c
* ext4: make ext4_lazyinit_thread freezable
fs/ext4/super.c
* ext4: fix null-ptr-deref in ext4_write_info
fs/ext4/super.c
* ext4: avoid crash when inline data creation follows DIO write
fs/ext4/file.c
nilfs2: fix lockdep warnings during disk space reclamation
nilfs2: fix lockdep warnings in page operations for btree nodes
nilfs2: fix use-after-free bug of struct nilfs_root
fbdev: smscufx: Fix use-after-free in ufx_ops_open()
* PCI: Sanitise firmware BAR assignments behind a PCI-PCI bridge
drivers/pci/setup-res.c
UM: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK
parisc: fbdev/stifb: Align graphics memory size to 4MB
* Revert "fs: check FMODE_LSEEK to control internal pipe splicing"
fs/splice.c
regulator: qcom_rpm: Fix circular deferral regression
* quota: Check next/prev free block number after reading from quota file
fs/quota/quota_tree.c
* HID: multitouch: Add memory barriers
drivers/hid/hid-multitouch.c
fs: dlm: handle -EBUSY first in lock arg validation
fs: dlm: fix race between test_bit() and queue_work()
iio: dac: ad5593r: Fix i2c read protocol requirements
* ALSA: usb-audio: Fix NULL dererence at error path
sound/usb/endpoint.c
* ALSA: usb-audio: Fix potential memory leaks
sound/usb/endpoint.c
* ALSA: rawmidi: Drop register_mutex in snd_rawmidi_free()
sound/core/rawmidi.c
ALSA: oss: Fix potential deadlock at unregistration
* random: use expired timer rather than wq for mixing fast pool
drivers/char/random.c
* Input: xpad - fix wireless 360 controller breaking after suspend
drivers/input/joystick/xpad.c
* Input: xpad - add supported devices as contributed on github
drivers/input/joystick/xpad.c
wifi: mac80211_hwsim: avoid mac80211 warning on bad rate
* random: avoid reading two cache lines on irq randomness
drivers/char/random.c
* random: restore O_NONBLOCK support
drivers/char/mem.c
drivers/char/random.c
USB: serial: qcserial: add new usb-id for Dell branded EM7455
* scsi: stex: Properly zero out the passthrough command structure
include/scsi/scsi_cmnd.h
ALSA: hda: Fix position reporting on Poulsbo
* random: clamp credited irq bits to maximum mixed
drivers/char/random.c
ceph: don't truncate file in atomic_open
nilfs2: replace WARN_ONs by nilfs_error for checkpoint acquisition failure
nilfs2: fix leak of nilfs_root in case of writer thread creation failure
nilfs2: fix NULL pointer dereference at nilfs_bmap_lookup_at_level()
* netfilter: nf_queue: fix socket leak
net/netfilter/nf_queue.c
* rpmsg: qcom: glink: replace strncpy() with strscpy_pad()
drivers/rpmsg/qcom_glink_native.c
mmc: core: Terminate infinite loop in SD-UHS voltage switch
mmc: core: Replace with already defined values for readability
USB: serial: ftdi_sio: fix 300 bps rate for SIO
usb: mon: make mmapped memory read only
um: Cleanup compiler warning in arch/x86/um/tls_32.c
um: Cleanup syscall_handler_t cast in syscalls_32.h
net/ieee802154: fix uninit value bug in dgram_sendmsg
ARM: dts: fix Moxa SDIO 'compatible', remove 'sdhci' misnomer
dmaengine: xilinx_dma: Report error in case of dma_set_mask_and_coherent API failure
dmaengine: xilinx_dma: cleanup for fetching xlnx,num-fstores property
* fs: fix UAF/GPF bug in nilfs_mdt_destroy
fs/inode.c
ARM: fix function graph tracer and unwinder dependencies
* i2c: dev: prevent ZERO_SIZE_PTR deref in i2cdev_ioctl_rdwr()
drivers/i2c/i2c-dev.c
* Makefile.extrawarn: Move -Wcast-function-type-strict to W=1
scripts/Makefile.extrawarn
clk: iproc: Do not rely on node name for correct PLL setup
clk: iproc: Minor tidy up of iproc pll data structures
selftests: Fix the if conditions of in test_extra_filter()
nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices
nvme: add new line after variable declatation
* usbnet: Fix memory leak in usbnet_disconnect()
drivers/net/usb/usbnet.c
Input: melfas_mip4 - fix return value check in mip4_probe()
Revert "drm: bridge: analogix/dp: add panel prepare/unprepare in suspend/resume time"
soc: sunxi: sram: Fix debugfs info for A64 SRAM C
soc: sunxi: sram: Actually claim SRAM regions
* mm/migrate_device.c: flush TLB while holding PTL
mm/migrate.c
* mm: prevent page_frag_alloc() from corrupting the memory
mm/page_alloc.c
* mm/page_alloc: fix race condition between build_all_zonelists and page allocation
mm/page_alloc.c
mmc: moxart: fix 4-bit bus width and remove 8-bit bus width
ntfs: fix BUG_ON in ntfs_lookup_inode_by_name()
net: usb: qmi_wwan: Add new usb-id for Dell branded EM7455
uas: ignore UAS for Thinkplus chips
usb-storage: Add Hiksemi USB3-FW to IGNORE_UAS
uas: add no-uas quirk for Hiksemi usb_disk
* ANDROID: kbuild: Wrap zero trivial-auto-var-init enablement flag with cc-option
Makefile
* UPSTREAM: f2fs: guarantee to write dirty data when enabling checkpoint back
fs/f2fs/file.c
fs/f2fs/super.c
Bug: 260299968
Change-Id: I3d8686e6dfa612ff0de4a72686637be0ce678aa6
Signed-off-by: Wilson Sung <wilsonsung@google.com>
Signed-off-by: JohnnLee <johnnlee@google.com>
756 lines
20 KiB
C
756 lines
20 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 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;
|
|
};
|
|
|
|
/* 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 */
|
|
};
|
|
|
|
/* gpr */
|
|
#define GPR_NAME_SIZE 32
|
|
#define GPR_MODULE_PREFIX "gpr:"
|
|
|
|
struct gpr_device_id {
|
|
char name[GPR_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_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,
|
|
};
|
|
|
|
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 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 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];
|
|
};
|
|
|
|
#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;
|
|
};
|
|
|
|
|
|
|
|
|
|
/* 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
|
|
*/
|
|
struct typec_device_id {
|
|
__u16 svid;
|
|
__u8 mode;
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
#endif /* LINUX_MOD_DEVICETABLE_H */
|