From nobody Fri Jan 9 21:25:43 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4dnvvX1Ybsz6MPD8 for ; Fri, 09 Jan 2026 21:25:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dnvvW6Sstz3XyM for ; Fri, 09 Jan 2026 21:25:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1767993943; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=E2vDI7mjeHoqUoHH7p+tn4Q8UU95D6U/AHpVAahaxis=; b=c1ZOzj4l9Heg6RWzH3iyEf1yTYq5tl8DuOA9If/oQ1I/h8rMvI5cxcv2h0w377SEZPDDNa gtQBm9H1jYV4eAz7JKVIO94DMA4qirzRcAESlJ2bF8a123Peo4bGC9Px+HPRV9O4bx00VQ EnD/ypo1d/6IGJLl6veXvWZHXDjTNYnJKH2zz+hhrIBG1LtTtDvC4hJAmacw/ctvOjyYSm aPWo3UAg/CnJuq2ZoEWWmaKsEaAlxp369ELHeM/AEcu7Sdl69ZniL1A2pXe4CWc0xCjhtx GXqziJYhNrW60mmFSHg1kBtyFceTh3pjR+YrW+lCTNPIf9+LFFGLjKQ97//3qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1767993943; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=E2vDI7mjeHoqUoHH7p+tn4Q8UU95D6U/AHpVAahaxis=; b=EK51oOwCPeWZRpr/302cjdBxHmRE9YYloZPH0Us4xVKP5PFxgtd1ca6/jyWQ3ZCwOqYxF6 QCsghSdv4kIb/ebc51KXGxOZBu2E+SPhOU73/tQUG7TdhwE73Gs7QPzCdDZkIm3njVlaEd y8pOKp+hS6dHzKP5WqYHX34OsOBfCjnBlF1WRMNTUQr6GEntzITXUL9XP6tLvzvTFi/jEg ZpUXsdDBYTX/GAXgsGxDJL9RbDC6CKR3wtAHzQZQlZuPntTfvuAj1Noogt3ufZ642csIYN +4Twz05iGuOSKOVQz1Wc8vBA5r2UMi3MZsDaqFuABBD0bNVEgEexRfQCLlEtlw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1767993943; a=rsa-sha256; cv=none; b=ENbQ4RHD+pQupi1fphZW0+rvX8Xx6Z8VNMpyKDZ4rZklof8szwSYtsY4vvVRO+98kl8cOY 3m7Egd4uK1k2xLVKiPpuCNW1F4DnwYIOWy0CNkuQaMtDIw4ea2EBTaz7MVHjbMaLFE5Tef XgNEZGE1WQMA/OzbFNQOl9oWc2JAzdRE6sQqwOchUIHKHLJZzpw7MSg8+w9rvFh/C59VmK ZNFDasvZmEgOoTS9itnhHJXnVNr+z+O5MI1ciI/5WFC/omO5/Tf3+PUU7Ib9raUkcWrgqM pbW2riZkRF3GVaNiUrzUDOaERNIcToV4BIlirc+BHpPPA5AghkmRlch4e4CUmQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dnvvW52Y8z9dd for ; Fri, 09 Jan 2026 21:25:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id ea0b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 09 Jan 2026 21:25:43 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Alex S From: Warner Losh Subject: git: d5e5fed1edfc - main - linux: add hidraw ioctl handler List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d5e5fed1edfc3828f594fa8727d1c62c36b54e16 Auto-Submitted: auto-generated Date: Fri, 09 Jan 2026 21:25:43 +0000 Message-Id: <69617257.ea0b.156c9f4a@gitrepo.freebsd.org> The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=d5e5fed1edfc3828f594fa8727d1c62c36b54e16 commit d5e5fed1edfc3828f594fa8727d1c62c36b54e16 Author: Alex S AuthorDate: 2025-12-31 09:11:53 +0000 Commit: Warner Losh CommitDate: 2026-01-09 21:18:16 +0000 linux: add hidraw ioctl handler First step towards getting the Linux version of SDL with HIDAPI gamepad drivers to work. Not quite complte as SDL expects to find some information in sysfs as well. Signed-off-by: Alex S Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1938 --- sys/compat/linux/linux_ioctl.c | 51 ++++++++++++++++++++++++++++++++++++++++++ sys/compat/linux/linux_ioctl.h | 19 ++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/sys/compat/linux/linux_ioctl.c b/sys/compat/linux/linux_ioctl.c index f6c239b08ac2..d2fa0331026b 100644 --- a/sys/compat/linux/linux_ioctl.c +++ b/sys/compat/linux/linux_ioctl.c @@ -58,6 +58,7 @@ #include #include +#include #include #ifdef COMPAT_LINUX32 @@ -113,6 +114,7 @@ DEFINE_LINUX_IOCTL_SET(kcov, KCOV); #ifndef COMPAT_LINUX32 DEFINE_LINUX_IOCTL_SET(nvme, NVME); #endif +DEFINE_LINUX_IOCTL_SET(hidraw, HIDRAW); #undef DEFINE_LINUX_IOCTL_SET @@ -3637,6 +3639,55 @@ linux_ioctl_nvme(struct thread *td, struct linux_ioctl_args *args) } #endif +static int +linux_ioctl_hidraw(struct thread *td, struct linux_ioctl_args *args) +{ + int len = (args->cmd & 0x3fff0000) >> 16; + if (len > 8192) + return (EINVAL); + + switch (args->cmd & 0xffff) { + case LINUX_HIDIOCGRDESCSIZE: + args->cmd = HIDIOCGRDESCSIZE; + break; + case LINUX_HIDIOCGRDESC: + args->cmd = HIDIOCGRDESC; + break; + case LINUX_HIDIOCGRAWINFO: + args->cmd = HIDIOCGRAWINFO; + break; + case LINUX_HIDIOCGRAWNAME: + args->cmd = HIDIOCGRAWNAME(len); + break; + case LINUX_HIDIOCGRAWPHYS: + args->cmd = HIDIOCGRAWPHYS(len); + break; + case LINUX_HIDIOCSFEATURE: + args->cmd = HIDIOCSFEATURE(len); + break; + case LINUX_HIDIOCGFEATURE: + args->cmd = HIDIOCGFEATURE(len); + break; + case LINUX_HIDIOCGRAWUNIQ: + args->cmd = HIDIOCGRAWUNIQ(len); + break; + case LINUX_HIDIOCSINPUT: + args->cmd = HIDIOCSINPUT(len); + break; + case LINUX_HIDIOCGINPUT: + args->cmd = HIDIOCGINPUT(len); + break; + case LINUX_HIDIOCSOUTPUT: + args->cmd = HIDIOCSOUTPUT(len); + break; + case LINUX_HIDIOCGOUTPUT: + args->cmd = HIDIOCGOUTPUT(len); + break; + } + + return (sys_ioctl(td, (struct ioctl_args *)args)); +} + /* * main ioctl syscall function */ diff --git a/sys/compat/linux/linux_ioctl.h b/sys/compat/linux/linux_ioctl.h index d01a30538981..116a4e676228 100644 --- a/sys/compat/linux/linux_ioctl.h +++ b/sys/compat/linux/linux_ioctl.h @@ -806,6 +806,25 @@ #define LINUX_IOCTL_NVME_MIN LINUX_NVME_IOCTL_ID #define LINUX_IOCTL_NVME_MAX LINUX_NVME_IOCTL_RESCAN +/* + * hidraw + */ +#define LINUX_HIDIOCGRDESCSIZE 0x4801 +#define LINUX_HIDIOCGRDESC 0x4802 +#define LINUX_HIDIOCGRAWINFO 0x4803 +#define LINUX_HIDIOCGRAWNAME 0x4804 +#define LINUX_HIDIOCGRAWPHYS 0x4805 +#define LINUX_HIDIOCSFEATURE 0x4806 +#define LINUX_HIDIOCGFEATURE 0x4807 +#define LINUX_HIDIOCGRAWUNIQ 0x4808 +#define LINUX_HIDIOCSINPUT 0x4809 +#define LINUX_HIDIOCGINPUT 0x480A +#define LINUX_HIDIOCSOUTPUT 0x480B +#define LINUX_HIDIOCGOUTPUT 0x480C + +#define LINUX_IOCTL_HIDRAW_MIN LINUX_HIDIOCGRDESCSIZE +#define LINUX_IOCTL_HIDRAW_MAX LINUX_HIDIOCGOUTPUT + /* * Pluggable ioctl handlers */