Linux Input/HID development
 help / color / mirror / Atom feed
* Samsung NP900X3E: Sometime non-working keyboard (`atkbd serio0: Failed to enable keyboard on isa0060/serio0`)
From: Paul Menzel @ 2026-04-18 18:17 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, LKML, Hans de Goede

[-- Attachment #1: Type: text/plain, Size: 895 bytes --]

Dear Linux folks,


Trying Linux on an older Samsung Series 9 Ultrabook NP900X3E [1], the 
keyboard always works in GRUB, and sometimes it does not in Linux, so I 
am unable to enter the LUKS passphrase. In that case, Linux logs:

     atkbd serio0: Failed to deactivate keyboard on isa0060/serio0
     atkbd serio0: Failed to enable keyboard on isa0060/serio0

As Ctrl + Alt + Del does not work, I have to hold the power button for 
ten(?) seconds to power off the device, and then try again. In my 
experience it takes up to three tries, but of course sometimes it also 
works from the beginning.

As the drive is encrypted, I do not have full Linux logs from the 
failure case. Please find the output of `dmesg` with Linux 
6.19.10+deb14-amd64 attached for the success case.


Kind regards,

Paul


[1]: 
https://www.samsung.com/us/business/support/owners/product/series-9-ultrabook-np900x3e/

[-- Attachment #2: 20260402--linux-6.19.10+deb14-amd64--messages.txt --]
[-- Type: text/plain, Size: 69106 bytes --]

[    0.000000] Linux version 6.19.10+deb14-amd64 (debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-15 (Debian 15.2.0-16) 15.2.0, GNU ld (GNU Binutils for Debian) 2.46) #1 SMP PREEMPT_DYNAMIC Debian 6.19.10-1 (2026-03-27)
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.19.10+deb14-amd64 root=UUID=b46a4afc-bd06-4cad-853f-b83ef92fae8d ro quiet
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009cfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d000-0x00000000000bffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000201fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020200000-0x0000000040003fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000040004000-0x0000000040004fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000040005000-0x00000000b8e6cfff] usable
[    0.000000] BIOS-e820: [mem 0x00000000b8e6d000-0x00000000b906efff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000b906f000-0x00000000c93eefff] usable
[    0.000000] BIOS-e820: [mem 0x00000000c93ef000-0x00000000daeeefff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000daeef000-0x00000000daf9efff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000daf9f000-0x00000000daffefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000dafff000-0x00000000daffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000db000000-0x00000000df9fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f80f8000-0x00000000f80f8fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000011f5fffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] APIC: Static calls initialized
[    0.000000] efi: EFI v2.3.1 by Phoenix Technologies Ltd.
[    0.000000] efi: ACPI=0xdaffe000 ACPI 2.0=0xdaffe014 SMBIOS=0xdac66000 INITRD=0xb9916d18 
[    0.000000] efi: Not removing mem49: MMIO range=[0xf80f8000-0xf80f8fff] (4KB) from e820 map
[    0.000000] efi: Not removing mem50: MMIO range=[0xfed1c000-0xfed1ffff] (16KB) from e820 map
[    0.000000] secureboot: Secure boot disabled
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: SAMSUNG ELECTRONICS CO., LTD. 900X3C/900X3D/900X3E/900X4C/900X4D/NP900X3E-A06DE, BIOS P06ABK 03/09/2013
[    0.000000] DMI: Memory slots populated: 1/4
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.000000] tsc: Detected 2494.086 MHz processor
[    0.000049] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000053] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000065] last_pfn = 0x11f600 max_arch_pfn = 0x400000000
[    0.000073] MTRR map: 8 entries (3 fixed + 5 variable; max 23), built from 10 variable MTRRs
[    0.000076] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
[    0.000568] last_pfn = 0xdb000 max_arch_pfn = 0x400000000
[    0.017125] RAMDISK: [mem 0xb103c000-0xb463dfff]
[    0.017688] ACPI: Early table checksum verification disabled
[    0.017692] ACPI: RSDP 0x00000000DAFFE014 000024 (v02 SECCSD)
[    0.017699] ACPI: XSDT 0x00000000DAFFE170 00009C (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017707] ACPI: FACP 0x00000000DAFEE000 00010C (v05 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017715] ACPI: DSDT 0x00000000DAFF1000 0097F2 (v02 SECCSD IVB-CPT  00000000 INTL 20061109)
[    0.017721] ACPI: FACS 0x00000000DAF7B000 000040
[    0.017725] ACPI: SLIC 0x00000000DAFFD000 000176 (v01 SECCSD LH43STAR 00000002 PTL  00000001)
[    0.017730] ACPI: SSDT 0x00000000DAFFB000 001068 (v01 SECCSD PtidDevc 00001000 INTL 20061109)
[    0.017735] ACPI: ASF! 0x00000000DAFF0000 0000A5 (v32 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017740] ACPI: HPET 0x00000000DAFED000 000038 (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017744] ACPI: APIC 0x00000000DAFEC000 000098 (v03 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017749] ACPI: MCFG 0x00000000DAFEB000 00003C (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017754] ACPI: FPDT 0x00000000DAFEA000 000064 (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017759] ACPI: SSDT 0x00000000DAFE9000 0009E7 (v01 PmRef  Cpu0Ist  00003000 INTL 20061109)
[    0.017764] ACPI: SSDT 0x00000000DAFE8000 000B60 (v01 PmRef  CpuPm    00003000 INTL 20061109)
[    0.017769] ACPI: UEFI 0x00000000DAFE7000 000042 (v01 PTL    COMBUF   00000001 PTL  00000001)
[    0.017773] ACPI: MSDM 0x00000000DAF78000 000055 (v03 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017778] ACPI: UEFI 0x00000000DAFE6000 00003E (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017783] ACPI: UEFI 0x00000000DAFE5000 00022E (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017788] ACPI: BGRT 0x00000000DAFE4000 000038 (v00 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.017791] ACPI: Reserving FACP table memory at [mem 0xdafee000-0xdafee10b]
[    0.017794] ACPI: Reserving DSDT table memory at [mem 0xdaff1000-0xdaffa7f1]
[    0.017795] ACPI: Reserving FACS table memory at [mem 0xdaf7b000-0xdaf7b03f]
[    0.017796] ACPI: Reserving SLIC table memory at [mem 0xdaffd000-0xdaffd175]
[    0.017798] ACPI: Reserving SSDT table memory at [mem 0xdaffb000-0xdaffc067]
[    0.017799] ACPI: Reserving ASF! table memory at [mem 0xdaff0000-0xdaff00a4]
[    0.017800] ACPI: Reserving HPET table memory at [mem 0xdafed000-0xdafed037]
[    0.017801] ACPI: Reserving APIC table memory at [mem 0xdafec000-0xdafec097]
[    0.017803] ACPI: Reserving MCFG table memory at [mem 0xdafeb000-0xdafeb03b]
[    0.017804] ACPI: Reserving FPDT table memory at [mem 0xdafea000-0xdafea063]
[    0.017805] ACPI: Reserving SSDT table memory at [mem 0xdafe9000-0xdafe99e6]
[    0.017806] ACPI: Reserving SSDT table memory at [mem 0xdafe8000-0xdafe8b5f]
[    0.017808] ACPI: Reserving UEFI table memory at [mem 0xdafe7000-0xdafe7041]
[    0.017809] ACPI: Reserving MSDM table memory at [mem 0xdaf78000-0xdaf78054]
[    0.017810] ACPI: Reserving UEFI table memory at [mem 0xdafe6000-0xdafe603d]
[    0.017812] ACPI: Reserving UEFI table memory at [mem 0xdafe5000-0xdafe522d]
[    0.017813] ACPI: Reserving BGRT table memory at [mem 0xdafe4000-0xdafe4037]
[    0.017984] No NUMA configuration found
[    0.017985] Faking a node at [mem 0x0000000000000000-0x000000011f5fffff]
[    0.018003] NODE_DATA(0) allocated [mem 0x11f5d5500-0x11f5fffff]
[    0.018430] Zone ranges:
[    0.018431]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.018434]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.018436]   Normal   [mem 0x0000000100000000-0x000000011f5fffff]
[    0.018438]   Device   empty
[    0.018439] Movable zone start for each node
[    0.018443] Early memory node ranges
[    0.018444]   node   0: [mem 0x0000000000001000-0x000000000009cfff]
[    0.018446]   node   0: [mem 0x0000000000100000-0x000000001fffffff]
[    0.018448]   node   0: [mem 0x0000000020200000-0x0000000040003fff]
[    0.018449]   node   0: [mem 0x0000000040005000-0x00000000b8e6cfff]
[    0.018451]   node   0: [mem 0x00000000b906f000-0x00000000c93eefff]
[    0.018452]   node   0: [mem 0x00000000dafff000-0x00000000daffffff]
[    0.018454]   node   0: [mem 0x0000000100000000-0x000000011f5fffff]
[    0.018456] Initmem setup node 0 [mem 0x0000000000001000-0x000000011f5fffff]
[    0.018465] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.018499] On node 0, zone DMA: 99 pages in unavailable ranges
[    0.022062] On node 0, zone DMA32: 512 pages in unavailable ranges
[    0.029379] On node 0, zone DMA32: 1 pages in unavailable ranges
[    0.030374] On node 0, zone DMA32: 514 pages in unavailable ranges
[    0.030990] On node 0, zone DMA32: 39952 pages in unavailable ranges
[    0.031810] On node 0, zone Normal: 20480 pages in unavailable ranges
[    0.031858] On node 0, zone Normal: 2560 pages in unavailable ranges
[    0.031868] Reserving Intel graphics memory at [mem 0xdba00000-0xdf9fffff]
[    0.032019] ACPI: PM-Timer IO Port: 0x408
[    0.032033] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.032035] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.032048] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
[    0.032052] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.032055] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.032062] ACPI: Using ACPI (MADT) for SMP configuration information
[    0.032064] ACPI: HPET id: 0x8086a301 base: 0xfed00000
[    0.032078] e820: update [mem 0xbc7f6000-0xbc821fff] usable ==> reserved
[    0.032095] TSC deadline timer available
[    0.032100] CPU topo: Max. logical packages:   1
[    0.032102] CPU topo: Max. logical nodes:      1
[    0.032103] CPU topo: Num. nodes per package:  1
[    0.032107] CPU topo: Max. logical dies:       1
[    0.032108] CPU topo: Max. dies per package:   1
[    0.032115] CPU topo: Max. threads per core:   2
[    0.032117] CPU topo: Num. cores per package:     2
[    0.032118] CPU topo: Num. threads per package:   4
[    0.032118] CPU topo: Allowing 4 present CPUs plus 0 hotplug CPUs
[    0.032144] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.032147] PM: hibernation: Registered nosave memory: [mem 0x0009d000-0x000fffff]
[    0.032150] PM: hibernation: Registered nosave memory: [mem 0x20000000-0x201fffff]
[    0.032152] PM: hibernation: Registered nosave memory: [mem 0x40004000-0x40004fff]
[    0.032155] PM: hibernation: Registered nosave memory: [mem 0xb8e6d000-0xb906efff]
[    0.032158] PM: hibernation: Registered nosave memory: [mem 0xbc7f6000-0xbc821fff]
[    0.032160] PM: hibernation: Registered nosave memory: [mem 0xc93ef000-0xdaffefff]
[    0.032163] PM: hibernation: Registered nosave memory: [mem 0xdb000000-0xffffffff]
[    0.032166] [mem 0xdfa00000-0xf80f7fff] available for PCI devices
[    0.032168] Booting paravirtualized kernel on bare hardware
[    0.032171] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[    0.041683] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[    0.042217] percpu: Embedded 62 pages/cpu s217088 r8192 d28672 u524288
[    0.042228] pcpu-alloc: s217088 r8192 d28672 u524288 alloc=1*2097152
[    0.042232] pcpu-alloc: [0] 0 1 2 3 
[    0.042263] Kernel command line: BOOT_IMAGE=/vmlinuz-6.19.10+deb14-amd64 root=UUID=b46a4afc-bd06-4cad-853f-b83ef92fae8d ro quiet
[    0.042335] random: crng init done
[    0.042336] printk: log buffer data + meta data: 131072 + 458752 = 589824 bytes
[    0.043139] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.043631] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.043746] software IO TLB: area num 4.
[    0.075948] Fallback order for Node 0: 0 
[    0.075957] Built 1 zonelists, mobility grouping on.  Total pages: 951689
[    0.075959] Policy zone: Normal
[    0.075975] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[    0.093686] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.093729] Kernel/User page tables isolation: enabled
[    0.106425] ftrace: allocating 48556 entries in 192 pages
[    0.106430] ftrace: allocated 192 pages with 2 groups
[    0.107254] Dynamic Preempt: lazy
[    0.107321] rcu: Preemptible hierarchical RCU implementation.
[    0.107322] rcu: 	RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=4.
[    0.107324] 	Trampoline variant of Tasks RCU enabled.
[    0.107325] 	Rude variant of Tasks RCU enabled.
[    0.107326] 	Tracing variant of Tasks RCU enabled.
[    0.107327] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.107328] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.107342] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.107345] RCU Tasks Rude: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.107347] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.116776] NR_IRQS: 524544, nr_irqs: 456, preallocated irqs: 16
[    0.117023] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.117130] Console: colour dummy device 80x25
[    0.117134] printk: legacy console [tty0] enabled
[    0.117202] ACPI: Core revision 20250807
[    0.117340] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484882848 ns
[    0.117361] APIC: Switch to symmetric I/O mode setup
[    0.117436] x2apic: IRQ remapping doesn't support X2APIC mode
[    0.117873] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.137363] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x23f3674fddb, max_idle_ns: 440795320195 ns
[    0.137371] Calibrating delay loop (skipped), value calculated using timer frequency.. 4988.17 BogoMIPS (lpj=9976344)
[    0.137409] CPU0: Thermal monitoring enabled (TM1)
[    0.137446] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 8
[    0.137449] Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32, 1GB 0
[    0.137453] process: using mwait in idle threads
[    0.137456] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.137464] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
[    0.137466] SRBDS: Vulnerable: No microcode
[    0.137468] Spectre V2 : Mitigation: Retpolines
[    0.137470] Spectre V2 : User space: Mitigation: STIBP via prctl
[    0.137471] MDS: Mitigation: Clear CPU buffers
[    0.137473] VMSCAPE: Mitigation: IBPB before exit to userspace
[    0.137474] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[    0.137476] Spectre V2 : Spectre v2 / SpectreRSB: Filling RSB on context switch and VMEXIT
[    0.137477] Spectre V2 : Enabling Restricted Speculation for firmware calls
[    0.137480] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[    0.137489] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.137492] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.137494] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.137496] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.137498] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.181258] Freeing SMP alternatives memory: 44K
[    0.181272] pid_max: default: 32768 minimum: 301
[    0.181422] landlock: Up and running.
[    0.181424] Yama: disabled by default; enable with sysctl kernel.yama.*
[    0.181549] AppArmor: AppArmor initialized
[    0.181579] TOMOYO Linux initialized
[    0.181830] LSM support for eBPF active
[    0.181916] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.181926] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.183921] smpboot: CPU0: Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz (family: 0x6, model: 0x3a, stepping: 0x9)
[    0.184277] Performance Events: PEBS fmt1+, IvyBridge events, 16-deep LBR, full-width counters, Intel PMU driver.
[    0.184304] ... version:                   3
[    0.184305] ... bit width:                 48
[    0.184307] ... generic counters:          4
[    0.184308] ... generic bitmap:            000000000000000f
[    0.184310] ... fixed-purpose counters:    3
[    0.184311] ... fixed-purpose bitmap:      0000000000000007
[    0.184312] ... value mask:                0000ffffffffffff
[    0.184314] ... max period:                00007fffffffffff
[    0.184315] ... global_ctrl mask:          000000070000000f
[    0.184639] signal: max sigframe size: 1776
[    0.184667] Estimated ratio of average max frequency by base frequency (times 1024): 1187
[    0.185706] rcu: Hierarchical SRCU implementation.
[    0.185710] rcu: 	Max phase no-delay instances is 1000.
[    0.185803] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.186485] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[    0.186575] smp: Bringing up secondary CPUs ...
[    0.186772] smpboot: x86: Booting SMP configuration:
[    0.186774] .... node  #0, CPUs:      #2 #1 #3
[    0.191373] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.
[    0.191373] VMSCAPE: SMT on, STIBP is required for full protection. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/vmscape.html for more details.
[    0.193427] smp: Brought up 1 node, 4 CPUs
[    0.193427] smpboot: Total of 4 processors activated (19952.68 BogoMIPS)
[    0.195176] node 0 deferred pages initialised in 0ms
[    0.195176] Memory: 3502152K/3806756K available (17878K kernel code, 3350K rwdata, 13048K rodata, 4476K init, 5524K bss, 297520K reserved, 0K cma-reserved)
[    0.195176] devtmpfs: initialized
[    0.195176] x86/mm: Memory block size: 128MB
[    0.197723] ACPI: PM: Registering ACPI NVS region [mem 0xdaeef000-0xdaf9efff] (720896 bytes)
[    0.197723] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.197723] posixtimers hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    0.197723] futex hash table entries: 1024 (65536 bytes on 1 NUMA nodes, total 64 KiB, linear).
[    0.198313] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.198535] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[    0.198588] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.198642] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.198659] audit: initializing netlink subsys (disabled)
[    0.198691] audit: type=2000 audit(1775143038.000:1): state=initialized audit_enabled=0 res=1
[    0.198691] thermal_sys: Registered thermal governor 'fair_share'
[    0.198691] thermal_sys: Registered thermal governor 'bang_bang'
[    0.198691] thermal_sys: Registered thermal governor 'step_wise'
[    0.198691] thermal_sys: Registered thermal governor 'user_space'
[    0.198691] thermal_sys: Registered thermal governor 'power_allocator'
[    0.198691] cpuidle: using governor ladder
[    0.198691] cpuidle: using governor menu
[    0.204928] efi: Freeing EFI boot services memory: 52928K
[    0.204935] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.205083] PCI: ECAM [mem 0xf8000000-0xfbffffff] (base 0xf8000000) for domain 0000 [bus 00-3f]
[    0.205092] PCI: not using ECAM ([mem 0xf8000000-0xfbffffff] not reserved)
[    0.205095] PCI: Using configuration type 1 for base access
[    0.205171] core: PMU erratum BJ122, BV98, HSD29 worked around, HT is on
[    0.205219] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.205558] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.205558] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[    0.205895] ACPI: Added _OSI(Module Device)
[    0.205900] ACPI: Added _OSI(Processor Device)
[    0.205903] ACPI: Added _OSI(Processor Aggregator Device)
[    0.217610] ACPI: 4 ACPI AML tables successfully acquired and loaded
[    0.225860] ACPI: Dynamic OEM Table Load:
[    0.225876] ACPI: SSDT 0xFFFF8F11C08E7000 000784 (v01 PmRef  Cpu0Cst  00003001 INTL 20061109)
[    0.226941] ACPI: Dynamic OEM Table Load:
[    0.226954] ACPI: SSDT 0xFFFF8F11C1021C00 000303 (v01 PmRef  ApIst    00003000 INTL 20061109)
[    0.229699] ACPI: Dynamic OEM Table Load:
[    0.229710] ACPI: SSDT 0xFFFF8F11C0A8FA00 000119 (v01 PmRef  ApCst    00003000 INTL 20061109)
[    0.231232] ACPI: EC: EC started
[    0.231236] ACPI: EC: interrupt blocked
[    0.633449] ACPI: EC: EC_CMD/EC_SC=0x66, EC_DATA=0x62
[    0.633454] ACPI: \_SB_.PCI0.LPCB.H_EC: Boot DSDT EC used to handle transactions
[    0.633457] ACPI: Interpreter enabled
[    0.633487] ACPI: PM: (supports S0 S3 S4 S5)
[    0.633489] ACPI: Using IOAPIC for interrupt routing
[    0.633529] PCI: ECAM [mem 0xf8000000-0xfbffffff] (base 0xf8000000) for domain 0000 [bus 00-3f]
[    0.633896] PCI: ECAM [mem 0xf8000000-0xfbffffff] reserved as ACPI motherboard resource
[    0.633913] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.633916] PCI: Using E820 reservations for host bridge windows
[    0.634132] ACPI: Enabled 9 GPEs in block 00 to 3F
[    0.642023] ACPI: \_TZ_.FN00: New power resource
[    0.642123] ACPI: \_TZ_.FN01: New power resource
[    0.642219] ACPI: \_TZ_.FN02: New power resource
[    0.642318] ACPI: \_TZ_.FN03: New power resource
[    0.642411] ACPI: \_TZ_.FN04: New power resource
[    0.643127] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-3e])
[    0.643137] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[    0.643234] acpi PNP0A08:00: _OSC: OS requested [PCIeHotplug SHPCHotplug PME AER PCIeCapability LTR]
[    0.643237] acpi PNP0A08:00: _OSC: platform willing to grant [PCIeHotplug SHPCHotplug PME AER PCIeCapability LTR]
[    0.643240] acpi PNP0A08:00: _OSC: platform retains control of PCIe features (AE_ERROR)
[    0.643777] PCI host bridge to bus 0000:00
[    0.643783] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
[    0.643787] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.643791] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000dffff window]
[    0.643793] pci_bus 0000:00: root bus resource [mem 0xdfa00000-0xfeafffff window]
[    0.643796] pci_bus 0000:00: root bus resource [bus 00-3e]
[    0.643814] pci 0000:00:00.0: [8086:0154] type 00 class 0x060000 conventional PCI endpoint
[    0.643920] pci 0000:00:02.0: [8086:0166] type 00 class 0x030000 conventional PCI endpoint
[    0.643942] pci 0000:00:02.0: BAR 0 [mem 0xf0000000-0xf03fffff 64bit]
[    0.643946] pci 0000:00:02.0: BAR 2 [mem 0xe0000000-0xefffffff 64bit pref]
[    0.643949] pci 0000:00:02.0: BAR 4 [io  0x3000-0x303f]
[    0.643962] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.644104] pci 0000:00:16.0: [8086:1e3a] type 00 class 0x078000 conventional PCI endpoint
[    0.644149] pci 0000:00:16.0: BAR 0 [mem 0xf0705000-0xf070500f 64bit]
[    0.644193] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[    0.644295] pci 0000:00:1b.0: [8086:1e20] type 00 class 0x040300 PCIe Root Complex Integrated Endpoint
[    0.644339] pci 0000:00:1b.0: BAR 0 [mem 0xf0700000-0xf0703fff 64bit]
[    0.644404] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.644546] pci 0000:00:1c.0: [8086:1e10] type 01 class 0x060400 PCIe Root Port
[    0.644580] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.644591] pci 0000:00:1c.0:   bridge window [mem 0xf0600000-0xf06fffff]
[    0.644674] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.644816] pci 0000:00:1c.3: [8086:1e16] type 01 class 0x060400 PCIe Root Port
[    0.644848] pci 0000:00:1c.3: PCI bridge to [bus 02]
[    0.644855] pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
[    0.644870] pci 0000:00:1c.3:   bridge window [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.644942] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[    0.645087] pci 0000:00:1c.4: [8086:1e18] type 01 class 0x060400 PCIe Root Port
[    0.645134] pci 0000:00:1c.4: PCI bridge to [bus 03]
[    0.645145] pci 0000:00:1c.4:   bridge window [mem 0xf0500000-0xf05fffff]
[    0.645266] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
[    0.645419] pci 0000:00:1d.0: [8086:1e26] type 00 class 0x0c0320 conventional PCI endpoint
[    0.645469] pci 0000:00:1d.0: BAR 0 [mem 0xf0709000-0xf07093ff]
[    0.645524] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.645652] pci 0000:00:1f.0: [8086:1e5d] type 00 class 0x060100 conventional PCI endpoint
[    0.645869] pci 0000:00:1f.2: [8086:1e03] type 00 class 0x010601 conventional PCI endpoint
[    0.645909] pci 0000:00:1f.2: BAR 0 [io  0x3088-0x308f]
[    0.645913] pci 0000:00:1f.2: BAR 1 [io  0x3094-0x3097]
[    0.645917] pci 0000:00:1f.2: BAR 2 [io  0x3080-0x3087]
[    0.645921] pci 0000:00:1f.2: BAR 3 [io  0x3090-0x3093]
[    0.645925] pci 0000:00:1f.2: BAR 4 [io  0x3060-0x307f]
[    0.645929] pci 0000:00:1f.2: BAR 5 [mem 0xf0708000-0xf07087ff]
[    0.645972] pci 0000:00:1f.2: PME# supported from D3hot
[    0.646075] pci 0000:00:1f.3: [8086:1e22] type 00 class 0x0c0500 conventional PCI endpoint
[    0.646118] pci 0000:00:1f.3: BAR 0 [mem 0xf0704000-0xf07040ff 64bit]
[    0.646125] pci 0000:00:1f.3: BAR 4 [io  0xefa0-0xefbf]
[    0.646516] pci 0000:01:00.0: [8086:088e] type 00 class 0x028000 PCIe Endpoint
[    0.646915] pci 0000:01:00.0: BAR 0 [mem 0xf0600000-0xf0601fff 64bit]
[    0.647569] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    0.648373] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.648566] pci 0000:02:00.0: [10ec:8168] type 00 class 0x020000 PCIe Endpoint
[    0.648828] pci 0000:02:00.0: BAR 0 [io  0x2000-0x20ff]
[    0.648852] pci 0000:02:00.0: BAR 2 [mem 0xf0404000-0xf0404fff 64bit pref]
[    0.648868] pci 0000:02:00.0: BAR 4 [mem 0xf0400000-0xf0403fff 64bit pref]
[    0.649326] pci 0000:02:00.0: supports D1 D2
[    0.649329] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.649914] pci 0000:00:1c.3: PCI bridge to [bus 02]
[    0.650110] pci 0000:03:00.0: [1912:0015] type 00 class 0x0c0330 PCIe Endpoint
[    0.650241] pci 0000:03:00.0: BAR 0 [mem 0xf0500000-0xf0501fff 64bit]
[    0.650445] pci 0000:03:00.0: PME# supported from D0 D3hot D3cold
[    0.650754] pci 0000:00:1c.4: PCI bridge to [bus 03]
[    0.652959] ACPI: PCI: Interrupt link LNKA configured for IRQ 0
[    0.652963] ACPI: PCI: Interrupt link LNKA disabled
[    0.653023] ACPI: PCI: Interrupt link LNKB configured for IRQ 0
[    0.653025] ACPI: PCI: Interrupt link LNKB disabled
[    0.653082] ACPI: PCI: Interrupt link LNKC configured for IRQ 0
[    0.653085] ACPI: PCI: Interrupt link LNKC disabled
[    0.653140] ACPI: PCI: Interrupt link LNKD configured for IRQ 0
[    0.653142] ACPI: PCI: Interrupt link LNKD disabled
[    0.653197] ACPI: PCI: Interrupt link LNKE configured for IRQ 0
[    0.653200] ACPI: PCI: Interrupt link LNKE disabled
[    0.653254] ACPI: PCI: Interrupt link LNKF configured for IRQ 0
[    0.653257] ACPI: PCI: Interrupt link LNKF disabled
[    0.653311] ACPI: PCI: Interrupt link LNKG configured for IRQ 0
[    0.653314] ACPI: PCI: Interrupt link LNKG disabled
[    0.653368] ACPI: PCI: Interrupt link LNKH configured for IRQ 0
[    0.653372] ACPI: PCI: Interrupt link LNKH disabled
[    0.654228] ACPI: EC: interrupt unblocked
[    0.654231] ACPI: EC: event unblocked
[    0.654245] ACPI: EC: 0 stale EC events cleared
[    0.654245] ACPI: EC: EC_CMD/EC_SC=0x66, EC_DATA=0x62
[    0.654245] ACPI: EC: GPE=0x17
[    0.654245] ACPI: \_SB_.PCI0.LPCB.H_EC: Boot DSDT EC initialization complete
[    0.654245] ACPI: \_SB_.PCI0.LPCB.H_EC: EC: Used to handle transactions and events
[    0.654245] iommu: Default domain type: Translated
[    0.654245] iommu: DMA domain TLB invalidation policy: lazy mode
[    0.654245] pps_core: LinuxPPS API ver. 1 registered
[    0.654245] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.654245] PTP clock support registered
[    0.654245] EDAC MC: Ver: 3.0.0
[    0.654245] efivars: Registered efivars operations
[    0.654245] NetLabel: Initializing
[    0.654245] NetLabel:  domain hash size = 128
[    0.654245] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.654245] NetLabel:  unlabeled traffic allowed by default
[    0.654245] PCI: Using ACPI for IRQ routing
[    0.654245] PCI: pci_cache_line_size set to 64 bytes
[    0.654245] e820: reserve RAM buffer [mem 0x0009d000-0x0009ffff]
[    0.654245] e820: reserve RAM buffer [mem 0x40004000-0x43ffffff]
[    0.654245] e820: reserve RAM buffer [mem 0xb8e6d000-0xbbffffff]
[    0.654245] e820: reserve RAM buffer [mem 0xbc7f6000-0xbfffffff]
[    0.654245] e820: reserve RAM buffer [mem 0xc93ef000-0xcbffffff]
[    0.654245] e820: reserve RAM buffer [mem 0xdb000000-0xdbffffff]
[    0.654245] e820: reserve RAM buffer [mem 0x11f600000-0x11fffffff]
[    0.657415] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[    0.657415] pci 0000:00:02.0: vgaarb: bridge control possible
[    0.657415] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.657415] vgaarb: loaded
[    0.657510] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.657528] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[    0.659599] clocksource: Switched to clocksource tsc-early
[    0.659624] VFS: Disk quotas dquot_6.6.0
[    0.659624] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.659624] AppArmor: AppArmor Filesystem Enabled
[    0.659624] pnp: PnP ACPI init
[    0.659624] system 00:00: [io  0x0680-0x069f] has been reserved
[    0.659624] system 00:00: [io  0x1000-0x100f] has been reserved
[    0.659624] system 00:00: [io  0x5000-0x5003] has been reserved
[    0.659624] system 00:00: [io  0xffff] has been reserved
[    0.659624] system 00:00: [io  0x0400-0x0453] has been reserved
[    0.659624] system 00:00: [io  0x0458-0x047f] has been reserved
[    0.659624] system 00:00: [io  0x0500-0x057f] has been reserved
[    0.659624] system 00:00: [io  0x0a00-0x0a0f] has been reserved
[    0.659624] system 00:00: [io  0x164e-0x164f] has been reserved
[    0.659624] system 00:00: [io  0x5000-0x500f] could not be reserved
[    0.659647] system 00:04: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.659652] system 00:04: [mem 0xfed10000-0xfed17fff] has been reserved
[    0.659655] system 00:04: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.659658] system 00:04: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.659661] system 00:04: [mem 0xf8000000-0xfbffffff] could not be reserved
[    0.659664] system 00:04: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.659666] system 00:04: [mem 0xfed90000-0xfed93fff] has been reserved
[    0.659669] system 00:04: [mem 0xfed45000-0xfed8ffff] has been reserved
[    0.659672] system 00:04: [mem 0xff000000-0xffffffff] has been reserved
[    0.659675] system 00:04: [mem 0xfee00000-0xfeefffff] has been reserved
[    0.659678] system 00:04: [mem 0xfffff000-0xffffffff] has been reserved
[    0.660054] pnp: PnP ACPI: found 5 devices
[    0.667067] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.667156] NET: Registered PF_INET protocol family
[    0.667232] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.686843] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    0.686876] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.686904] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.687046] TCP bind hash table entries: 32768 (order: 8, 1048576 bytes, linear)
[    0.687236] TCP: Hash tables configured (established 32768 bind 32768)
[    0.687319] MPTCP token hash table entries: 4096 (order: 5, 98304 bytes, linear)
[    0.687365] UDP hash table entries: 2048 (order: 5, 131072 bytes, linear)
[    0.687405] UDP-Lite hash table entries: 2048 (order: 5, 131072 bytes, linear)
[    0.687480] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.687490] NET: Registered PF_XDP protocol family
[    0.687511] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.687522] pci 0000:00:1c.0:   bridge window [mem 0xf0600000-0xf06fffff]
[    0.687534] pci 0000:00:1c.3: PCI bridge to [bus 02]
[    0.687539] pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
[    0.687548] pci 0000:00:1c.3:   bridge window [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.687557] pci 0000:00:1c.4: PCI bridge to [bus 03]
[    0.687565] pci 0000:00:1c.4:   bridge window [mem 0xf0500000-0xf05fffff]
[    0.687579] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
[    0.687582] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
[    0.687584] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000dffff window]
[    0.687586] pci_bus 0000:00: resource 7 [mem 0xdfa00000-0xfeafffff window]
[    0.687589] pci_bus 0000:01: resource 1 [mem 0xf0600000-0xf06fffff]
[    0.687591] pci_bus 0000:02: resource 0 [io  0x2000-0x2fff]
[    0.687593] pci_bus 0000:02: resource 2 [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.687596] pci_bus 0000:03: resource 1 [mem 0xf0500000-0xf05fffff]
[    0.688197] PCI: CLS 64 bytes, default 64
[    0.688223] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.688225] software IO TLB: mapped [mem 0x00000000c5033000-0x00000000c9033000] (64MB)
[    0.688338] Trying to unpack rootfs image as initramfs...
[    0.731124] Initialise system trusted keyrings
[    0.731151] Key type blacklist registered
[    0.731307] workingset: timestamp_bits=36 max_order=20 bucket_order=0
[    0.731699] fuse: init (API version 7.45)
[    0.732060] integrity: Platform Keyring initialized
[    0.732067] integrity: Machine keyring initialized
[    0.779587] Key type asymmetric registered
[    0.779597] Asymmetric key parser 'x509' registered
[    0.780338] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
[    0.780468] io scheduler mq-deadline registered
[    0.793399] ledtrig-cpu: registered to indicate activity on CPUs
[    0.798727] thermal LNXTHERM:00: registered as thermal_zone0
[    0.798735] ACPI: thermal: Thermal Zone [TZ00] (42 C)
[    0.799038] thermal LNXTHERM:01: registered as thermal_zone1
[    0.799042] ACPI: thermal: Thermal Zone [TZ01] (30 C)
[    0.799297] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.800186] Linux agpgart interface v0.103
[    0.801852] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:EPAD] at 0x60,0x64 irq 1,12
[    0.807210] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.807224] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.807408] mousedev: PS/2 mouse device common for all mice
[    0.807755] rtc_cmos 00:01: registered as rtc0
[    0.807792] rtc_cmos 00:01: setting system clock to 2026-04-02T15:17:19 UTC (1775143039)
[    0.807835] rtc_cmos 00:01: alarms up to one month, y3k, 242 bytes nvram, hpet irqs
[    0.812389] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    0.817462] intel_pstate: Intel P-state driver initializing
[    0.819847] efifb: probing for efifb
[    0.819921] efifb: framebuffer at 0xe0000000, using 8100k, total 8100k
[    0.819932] efifb: mode is 1920x1080x32, linelength=7680, pages=1
[    0.819941] efifb: scrolling: redraw
[    0.819945] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.820244] Console: switching to colour frame buffer device 240x67
[    0.822278] fb0: EFI VGA frame buffer device
[    0.822519] NET: Registered PF_INET6 protocol family
[    0.822930] Segment Routing with IPv6
[    0.822933] RPL Segment Routing with IPv6
[    0.822944] In-situ OAM (IOAM) with IPv6
[    0.822969] mip6: Mobile IPv6
[    0.822973] NET: Registered PF_PACKET protocol family
[    0.823035] mpls_gso: MPLS GSO support
[    0.825493] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.829417] microcode: Current revision: 0x00000021
[    0.829421] microcode: Updated early from: 0x00000017
[    0.833414] IPI shorthand broadcast: enabled
[    0.836425] sched_clock: Marking stable (833077473, 310531)->(861382755, -27994751)
[    0.836755] registered taskstats version 1
[    0.837043] Loading compiled-in X.509 certificates
[    0.886806] Freeing initrd memory: 55304K
[    0.928164] Loaded X.509 cert 'Build time autogenerated kernel key: b2fa1c83d2a702a480e50634270fb636ee930080'
[    0.930161] Demotion targets for Node 0: null
[    0.930532] Key type .fscrypt registered
[    0.930538] Key type fscrypt-provisioning registered
[    0.945101] Key type encrypted registered
[    0.945109] AppArmor: AppArmor sha256 policy hashing enabled
[    0.945113] ima: No TPM chip found, activating TPM-bypass!
[    0.945116] ima: Allocated hash algorithm: sha256
[    0.945406] ima: No architecture policies found
[    0.945442] evm: Initialising EVM extended attributes:
[    0.945445] evm: security.selinux
[    0.945447] evm: security.SMACK64 (disabled)
[    0.945449] evm: security.SMACK64EXEC (disabled)
[    0.945451] evm: security.SMACK64TRANSMUTE (disabled)
[    0.945452] evm: security.SMACK64MMAP (disabled)
[    0.945454] evm: security.apparmor
[    0.945455] evm: security.ima
[    0.945457] evm: security.capability
[    0.945459] evm: HMAC attrs: 0x1
[    0.946008] integrity: Loading X.509 certificate: UEFI:db
[    0.946055] integrity: Loaded X.509 cert ': 3d5bb49f5d3b7b9741b5cf19e3a82ced'
[    0.946059] integrity: Loading X.509 certificate: UEFI:db
[    0.946100] integrity: Loaded X.509 cert 'Microsoft Corporation UEFI CA 2011: 13adbf4309bd82709c8cd54f316ed522988a1bd4'
[    0.946103] integrity: Loading X.509 certificate: UEFI:db
[    0.946134] integrity: Loaded X.509 cert 'Microsoft Windows Production PCA 2011: a92902398e16c49778cd90f99e4f9ae17c55af53'
[    0.967123] RAS: Correctable Errors collector initialized.
[    0.974048] clk: Disabling unused clocks
[    0.974053] PM: genpd: Disabling unused power domains
[    0.975862] Freeing unused decrypted memory: 2028K
[    0.976556] Freeing unused kernel image (initmem) memory: 4476K
[    0.976643] Write protecting the kernel read-only data: 32768k
[    0.976908] Freeing unused kernel image (text/rodata gap) memory: 552K
[    0.977202] Freeing unused kernel image (rodata/data gap) memory: 1288K
[    1.024921] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    1.024924] x86/mm: Checking user space page tables
[    1.070708] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    1.070714] Run /init as init process
[    1.070716]   with arguments:
[    1.070717]     /init
[    1.070718]   with environment:
[    1.070719]     HOME=/
[    1.070720]     TERM=linux
[    1.434905] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042F conflicts with OpRegion 0x0000000000000400-0x000000000000047F (\PMIO) (20250807/utaddress-204)
[    1.434918] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    1.434923] ACPI Warning: SystemIO range 0x0000000000000540-0x000000000000054F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20250807/utaddress-204)
[    1.434929] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    1.434931] ACPI Warning: SystemIO range 0x0000000000000530-0x000000000000053F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20250807/utaddress-204)
[    1.434937] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    1.434939] ACPI Warning: SystemIO range 0x0000000000000500-0x000000000000052F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20250807/utaddress-204)
[    1.434944] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    1.434945] lpc_ich: Resource conflict(s) found affecting gpio_ich
[    1.444002] i801_smbus 0000:00:1f.3: SMBus using PCI interrupt
[    1.471885] SCSI subsystem initialized
[    1.496431] r8169 0000:02:00.0: can't disable ASPM; OS doesn't have ASPM control
[    1.498410] ACPI: bus type USB registered
[    1.498456] usbcore: registered new interface driver usbfs
[    1.498474] usbcore: registered new interface driver hub
[    1.498492] usbcore: registered new device driver usb
[    1.533019] libata version 3.00 loaded.
[    1.548760] ACPI: battery: Slot [BAT1] (battery present)
[    1.559113] ehci-pci 0000:00:1d.0: EHCI Host Controller
[    1.559127] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 1
[    1.559144] ehci-pci 0000:00:1d.0: debug port 2
[    1.563090] ehci-pci 0000:00:1d.0: irq 23, io mem 0xf0709000
[    1.565695] r8169 0000:02:00.0 eth0: RTL8168evl/8111evl, 18:67:b0:2c:15:1b, XID 2c9, IRQ 24
[    1.565701] r8169 0000:02:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[    1.572365] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    1.572477] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.19
[    1.572483] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.572486] usb usb1: Product: EHCI Host Controller
[    1.572489] usb usb1: Manufacturer: Linux 6.19.10+deb14-amd64 ehci_hcd
[    1.572492] usb usb1: SerialNumber: 0000:00:1d.0
[    1.572793] hub 1-0:1.0: USB hub found
[    1.572810] hub 1-0:1.0: 3 ports detected
[    1.580710] xhci-pci-renesas 0000:03:00.0: firmware: failed to load renesas_usb_fw.mem (-2)
[    1.580733] xhci-pci-renesas 0000:03:00.0: firmware: failed to load renesas_usb_fw.mem (-2)
[    1.580750] xhci-pci-renesas 0000:03:00.0: firmware: failed to load renesas_usb_fw.mem (-2)
[    1.580756] xhci-pci-renesas 0000:03:00.0: failed to load firmware renesas_usb_fw.mem, fallback to ROM
[    1.580929] xhci-pci-renesas 0000:03:00.0: xHCI Host Controller
[    1.580942] xhci-pci-renesas 0000:03:00.0: new USB bus registered, assigned bus number 2
[    1.586220] xhci-pci-renesas 0000:03:00.0: hcc params 0x014051c7 hci version 0x100 quirks 0x0000000100000090
[    1.586625] xhci-pci-renesas 0000:03:00.0: xHCI Host Controller
[    1.586634] xhci-pci-renesas 0000:03:00.0: new USB bus registered, assigned bus number 3
[    1.586640] xhci-pci-renesas 0000:03:00.0: Host supports USB 3.0 SuperSpeed
[    1.589857] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.19
[    1.589860] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.589862] usb usb2: Product: xHCI Host Controller
[    1.589864] usb usb2: Manufacturer: Linux 6.19.10+deb14-amd64 xhci-hcd
[    1.589865] usb usb2: SerialNumber: 0000:03:00.0
[    1.590028] hub 2-0:1.0: USB hub found
[    1.590228] hub 2-0:1.0: 2 ports detected
[    1.590444] usb usb3: We don't know the algorithms for LPM for this host, disabling LPM.
[    1.590477] usb usb3: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.19
[    1.590479] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.590481] usb usb3: Product: xHCI Host Controller
[    1.590482] usb usb3: Manufacturer: Linux 6.19.10+deb14-amd64 xhci-hcd
[    1.590483] usb usb3: SerialNumber: 0000:03:00.0
[    1.591221] hub 3-0:1.0: USB hub found
[    1.591288] hub 3-0:1.0: 2 ports detected
[    1.591468] ahci 0000:00:1f.2: AHCI vers 0001.0300, 32 command slots, 6 Gbps, SATA mode
[    1.591474] ahci 0000:00:1f.2: 1/6 ports implemented (port mask 0x1)
[    1.591477] ahci 0000:00:1f.2: flags: 64bit ncq pm led clo pio slum part ems apst 
[    1.592865] scsi host0: ahci
[    1.593052] scsi host1: ahci
[    1.593177] scsi host2: ahci
[    1.593300] scsi host3: ahci
[    1.593432] scsi host4: ahci
[    1.593554] scsi host5: ahci
[    1.593604] ata1: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708100 irq 30 lpm-pol 3
[    1.593606] ata2: DUMMY
[    1.593607] ata3: DUMMY
[    1.593608] ata4: DUMMY
[    1.593609] ata5: DUMMY
[    1.593610] ata6: DUMMY
[    1.606788] r8169 0000:02:00.0 enp2s0: renamed from eth0
[    1.720382] tsc: Refined TSC clocksource calibration: 2494.333 MHz
[    1.720422] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x23f45085418, max_idle_ns: 440795285711 ns
[    1.720490] clocksource: Switched to clocksource tsc
[    1.820395] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    1.903401] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    1.904372] ata1.00: ATA-9: SAMSUNG MZMTD512HAGL-000, DXT41K0Q, max UDMA/133
[    1.905305] ata1.00: NCQ Send/Recv Log not supported
[    1.905320] ata1.00: 1000215216 sectors, multi 16: LBA48 NCQ (depth 32), AA
[    1.905653] ata1.00: Features: Dev-Sleep DIPM
[    1.906385] ata1.00: Invalid log directory version 0x0000
[    1.906398] ata1.00: NCQ Send/Recv Log not supported
[    1.906701] ata1.00: configured for UDMA/133
[    1.917330] scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG MZMTD512 1K0Q PQ: 0 ANSI: 5
[    1.924354] iTCO_vendor_support: vendor-support=0
[    1.933451] iTCO_wdt iTCO_wdt.1.auto: Found a Panther Point TCO device (Version=2, TCOBASE=0x0460)
[    1.933603] iTCO_wdt iTCO_wdt.1.auto: initialized. heartbeat=30 sec (nowayout=0)
[    1.934780] sd 0:0:0:0: [sda] 1000215216 512-byte logical blocks: (512 GB/477 GiB)
[    1.934801] sd 0:0:0:0: [sda] Write Protect is off
[    1.934805] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.934834] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.934886] sd 0:0:0:0: [sda] Preferred minimum I/O size 512 bytes
[    1.964684] usb 1-1: New USB device found, idVendor=8087, idProduct=0024, bcdDevice= 0.00
[    1.964689] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    1.964942] hub 1-1:1.0: USB hub found
[    1.965027] hub 1-1:1.0: 6 ports detected
[    2.003757]  sda: sda1 sda2 sda3 sda4
[    2.003954] sd 0:0:0:0: [sda] Attached SCSI disk
[    2.089941] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[    2.089981] device-mapper: uevent: version 1.0.3
[    2.090131] device-mapper: ioctl: 4.50.0-ioctl (2025-04-28) initialised: dm-devel@lists.linux.dev
[    2.244397] usb 1-1.5: new full-speed USB device number 3 using ehci-pci
[    2.258384] psmouse serio1: elantech: assuming hardware version 4 (with firmware version 0x575f03)
[    2.272738] psmouse serio1: elantech: Synaptics capabilities query result 0x40, 0x14, 0x0d.
[    2.288969] psmouse serio1: elantech: Elan sample query result 0a, 03, 87
[    2.345313] usb 1-1.5: New USB device found, idVendor=8087, idProduct=07da, bcdDevice=78.69
[    2.345330] usb 1-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.370432] input: ETPS/2 Elantech Touchpad as /devices/platform/i8042/serio1/input/input2
[    2.420396] usb 1-1.6: new high-speed USB device number 4 using ehci-pci
[    2.841148] usb 1-1.6: New USB device found, idVendor=2232, idProduct=1024, bcdDevice= 0.21
[    2.841165] usb 1-1.6: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    2.841172] usb 1-1.6: Product: Webcam SC-13HDL11624N
[    2.841177] usb 1-1.6: Manufacturer: Namugaÿ 
[   29.620831] EXT4-fs (dm-0): orphan cleanup on readonly fs
[   29.621294] EXT4-fs (dm-0): mounted filesystem b46a4afc-bd06-4cad-853f-b83ef92fae8d ro with ordered data mode. Quota mode: none.
[   29.706123] Not activating Mandatory Access Control as /sbin/tomoyo-init does not exist.
[   29.953842] systemd[1]: Inserted module 'autofs4'
[   30.384250] systemd[1]: systemd 260.1-1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF -XKBCOMMON -UTMP +LIBARCHIVE)
[   30.384281] systemd[1]: Detected architecture x86-64.
[   30.404667] systemd[1]: Hostname set to <dove>.
[   30.640464] systemd[1]: bpf-restrict-fs: LSM BPF program attached
[   30.917475] systemd[1]: Queued start job for default target graphical.target.
[   30.951007] systemd[1]: Created slice system-cups.slice - CUPS Slice.
[   30.951724] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
[   30.952400] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
[   30.953018] systemd[1]: Created slice system-systemd\x2dfsck.slice - Slice /system/systemd-fsck.
[   30.953437] systemd[1]: Created slice user.slice - User and Session Slice.
[   30.953562] systemd[1]: Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch.
[   30.953651] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
[   30.954400] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
[   30.954458] systemd[1]: Expecting device dev-disk-by\x2ddiskseq-1\x2dpart4.device - /dev/disk/by-diskseq/1-part4...
[   30.954481] systemd[1]: Expecting device dev-disk-by\x2duuid-5823\x2d9F86.device - /dev/disk/by-uuid/5823-9F86...
[   30.954497] systemd[1]: Expecting device dev-sda2.device - /dev/sda2...
[   30.954546] systemd[1]: Reached target imports.target - Image Downloads.
[   30.954603] systemd[1]: Reached target nss-user-lookup.target - User and Group Name Lookups.
[   30.954635] systemd[1]: Reached target remote-fs.target - Remote File Systems.
[   30.954667] systemd[1]: Reached target slices.target - Slice Units.
[   30.957260] systemd[1]: Listening on systemd-ask-password.socket - Query the User Interactively for a Password.
[   30.959927] systemd[1]: Listening on systemd-coredump.socket - Process Core Dump Socket.
[   30.961705] systemd[1]: Listening on systemd-creds.socket - Credential Encryption/Decryption.
[   30.964143] systemd[1]: Listening on systemd-factory-reset.socket - Factory Reset Management.
[   30.964403] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).
[   30.964614] systemd[1]: Listening on systemd-journald.socket - Journal Sockets.
[   30.967499] systemd[1]: Listening on systemd-mute-console.socket - Console Output Muting Service Socket.
[   30.967779] systemd[1]: Listening on systemd-oomd.socket - Userspace Out-Of-Memory (OOM) Killer Socket.
[   30.968668] systemd[1]: systemd-pcrextend.socket - TPM PCR Measurements skipped, unmet condition check ConditionSecurity=measured-uki
[   30.968726] systemd[1]: systemd-pcrlock.socket - Make TPM PCR Policy skipped, unmet condition check ConditionSecurity=measured-uki
[   30.968938] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.
[   30.969076] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
[   30.969266] systemd[1]: Listening on systemd-udevd-varlink.socket - udev Varlink Socket.
[   30.969449] systemd[1]: Listening on systemd-userdbd.socket - User Database Manager Socket.
[   30.971636] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[   30.972931] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...
[   30.974150] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System...
[   30.975013] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System...
[   30.981979] systemd[1]: Starting keyboard-setup.service - Set the console keyboard layout...
[   30.983557] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...
[   30.985256] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
[   30.988459] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
[   30.992585] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
[   30.992670] systemd[1]: modprobe@fuse.service - Load Kernel Module fuse skipped, unmet condition check ConditionKernelModuleLoaded=!fuse
[   30.995620] systemd[1]: Mounting sys-fs-fuse-connections.mount - FUSE Control File System...
[   30.995781] systemd[1]: systemd-fsck-root.service - File System Check on Root Device skipped, unmet condition check ConditionPathExists=!/run/initramfs/fsck-root
[   30.995842] systemd[1]: systemd-hibernate-clear.service - Clear Stale Hibernate Storage Info skipped, unmet condition check ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67
[   30.999102] systemd[1]: Starting systemd-journald.service - Journal Service...
[   31.012810] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...
[   31.012864] systemd[1]: systemd-pcrmachine.service - TPM PCR Machine ID Measurement skipped, unmet condition check ConditionSecurity=measured-uki
[   31.012942] systemd[1]: systemd-pcrproduct.service - TPM NvPCR Product ID Measurement skipped, unmet condition check ConditionSecurity=measured-uki
[   31.016460] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...
[   31.016555] systemd[1]: systemd-tpm2-setup-early.service - Early TPM SRK Setup skipped, unmet condition check ConditionSecurity=measured-uki
[   31.019841] pstore: Using crash dump compression: deflate
[   31.021354] systemd[1]: Starting systemd-udev-load-credentials.service - Load udev Rules from Credentials...
[   31.026870] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
[   31.035961] systemd[1]: Finished kmod-static-nodes.service - Create List of Static Device Nodes.
[   31.049255] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[   31.049577] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.
[   31.056983] pstore: Registered efi_pstore as persistent store backend
[   31.071757] systemd[1]: Mounting sys-kernel-config.mount - Kernel Configuration File System...
[   31.073248] systemd[1]: Starting systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully...
[   31.073798] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[   31.074089] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
[   31.092269] i2c_dev: i2c /dev entries driver
[   31.102184] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System.
[   31.102412] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System.
[   31.102587] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System.
[   31.102767] systemd[1]: Mounted sys-fs-fuse-connections.mount - FUSE Control File System.
[   31.102940] systemd[1]: Mounted sys-kernel-config.mount - Kernel Configuration File System.
[   31.104102] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[   31.105290] systemd-journald[634]: Collecting audit messages is disabled.
[   31.112955] systemd[1]: Finished keyboard-setup.service - Set the console keyboard layout.
[   31.121267] ppdev: user-space parallel port driver
[   31.127103] EXT4-fs (dm-0): re-mounted b46a4afc-bd06-4cad-853f-b83ef92fae8d r/w.
[   31.140830] systemd[1]: Finished systemd-remount-fs.service - Remount Root and Kernel File Systems.
[   31.144405] systemd[1]: Finished systemd-udev-load-credentials.service - Load udev Rules from Credentials.
[   31.148533] systemd[1]: systemd-hwdb-update.service - Rebuild Hardware Database skipped, unmet condition check ConditionNeedsUpdate=/etc
[   31.148606] systemd[1]: systemd-pstore.service - Platform Persistent Storage Archival skipped, unmet condition check ConditionDirectoryNotEmpty=/sys/fs/pstore
[   31.149910] systemd[1]: Starting systemd-random-seed.service - Load/Save OS Random Seed...
[   31.149943] systemd[1]: systemd-tpm2-setup.service - TPM SRK Setup skipped, unmet condition check ConditionSecurity=measured-uki
[   31.149970] systemd[1]: systemd-pcrnvdone.service - TPM PCR NvPCR Initialization Separator skipped, unmet condition check ConditionSecurity=measured-uki
[   31.159958] ACPI: bus type drm_connector registered
[   31.161216] systemd[1]: modprobe@drm.service: Deactivated successfully.
[   31.162924] lp: driver loaded but no devices found
[   31.174791] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.
[   31.175449] systemd[1]: Finished systemd-modules-load.service - Load Kernel Modules.
[   31.176094] systemd[1]: Finished systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully.
[   31.177806] systemd[1]: Starting systemd-sysctl.service - Apply Kernel Variables...
[   31.177880] systemd[1]: systemd-sysusers.service - Create System Users skipped, no trigger condition checks were met.
[   31.185346] systemd[1]: Starting systemd-journalctl.socket - Journal Log Access Socket...
[   31.192469] systemd[1]: Starting systemd-timesyncd.service - Network Time Synchronization...
[   31.193933] systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...
[   31.194831] systemd[1]: Listening on systemd-journalctl.socket - Journal Log Access Socket.
[   31.203611] systemd[1]: Started systemd-journald.service - Journal Service.
[   31.910803] systemd-journald[634]: Received client request to flush runtime journal.
[   32.730383] sd 0:0:0:0: Attached scsi generic sg0 type 0
[   32.834998] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input3
[   32.849276] ACPI: AC: AC Adapter [ADP1] (on-line)
[   32.870376] ACPI: button: Lid Switch [LID0]
[   32.870464] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input4
[   32.896359] ACPI: button: Power Button [PWRB]
[   32.900394] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input5
[   32.942924] ACPI: button: Power Button [PWRF]
[   33.071439] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[   33.082659] Loaded X.509 cert 'benh@debian.org: 577e021cb980e0e820821ba7b54b4961b8b4fadf'
[   33.082889] Loaded X.509 cert 'romain.perier@gmail.com: 3abbc6ec146e09d1b6016ab9d6cf71dd233f0328'
[   33.083089] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[   33.083284] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
[   33.159213] iwlwifi 0000:01:00.0: can't disable ASPM; OS doesn't have ASPM control
[   33.168683] iwlwifi 0000:01:00.0: Detected crf-id 0xa5a5a5a1, cnv-id 0xa5a5a5a1 wfpm id 0xa5a5a5a1
[   33.168726] iwlwifi 0000:01:00.0: PCI dev 088e/4060, rev=0xb0, rfid=0xd55555d5
[   33.168732] iwlwifi 0000:01:00.0: Detected Intel(R) Centrino(R) Advanced-N 6235 AGN
[   33.182517] iwlwifi 0000:01:00.0: loaded firmware version 18.168.6.1 6000g2b-6.ucode op_mode iwldvm
[   33.489651] mc: Linux media interface: v0.10
[   33.508501] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEBUG disabled
[   33.508507] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEBUGFS disabled
[   33.508510] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled
[   33.508512] iwlwifi 0000:01:00.0: Detected Intel(R) Centrino(R) Advanced-N 6235 AGN, REV=0xB0
[   33.514484] input: PC Speaker as /devices/platform/pcspkr/input/input6
[   33.578466] RAPL PMU: API unit is 2^-32 Joules, 3 fixed counters, 163840 ms ovfl timer
[   33.578477] RAPL PMU: hw unit of domain pp0-core 2^-16 Joules
[   33.578480] RAPL PMU: hw unit of domain package 2^-16 Joules
[   33.578481] RAPL PMU: hw unit of domain pp1-gpu 2^-16 Joules
[   33.580780] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs'
[   33.722993] iwlwifi 0000:01:00.0 wlp1s0: renamed from wlan0
[   33.745461] Adding 8387904k swap on /dev/sda4.  Priority:-1 extents:1 across:8387904k SS
[   34.193484] videodev: Linux video capture interface: v2.00
[   34.201996] i915 0000:00:02.0: [drm] Found ivybridge (device ID 0166) integrated display version 7.00 stepping N/A
[   34.234001] Bluetooth: Core ver 2.22
[   34.234031] NET: Registered PF_BLUETOOTH protocol family
[   34.234034] Bluetooth: HCI device and connection manager initialized
[   34.234039] Bluetooth: HCI socket layer initialized
[   34.234043] Bluetooth: L2CAP socket layer initialized
[   34.234049] Bluetooth: SCO socket layer initialized
[   34.241229] Console: switching to colour dummy device 80x25
[   34.241275] i915 0000:00:02.0: vgaarb: deactivate vga console
[   34.295462] EXT4-fs (sda2): mounted filesystem d8deeb42-11f1-4f2d-8dac-d8c6bd0c1152 r/w with ordered data mode. Quota mode: none.
[   34.346603] i915 0000:00:02.0: [drm] Skipping intel_backlight registration
[   34.348440] i915 0000:00:02.0: [drm] Registered 3 planes with drm panic
[   34.376372] [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 0
[   34.376912] ACPI: video: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[   34.377282] acpi device:39: registered as cooling_device9
[   34.377394] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input7
[   34.378308] uvcvideo 1-1.6:1.0: Found UVC 1.00 device Webcam SC-13HDL11624N (2232:1024)
[   34.386335] usbcore: registered new interface driver btusb
[   34.388201] Bluetooth: hci0: unexpected event for opcode 0x0000
[   34.397587] fbcon: i915drmfb (fb0) is primary device
[   34.456281] intel_rapl_common: Found RAPL domain package
[   34.456285] intel_rapl_common: Found RAPL domain core
[   34.456286] intel_rapl_common: Found RAPL domain uncore
[   34.456293] intel_rapl_common: package-0:package:long_term locked by BIOS
[   34.456295] intel_rapl_common: package-0:package:short_term locked by BIOS
[   34.456297] intel_rapl_common: package-0:core:long_term locked by BIOS
[   34.456299] intel_rapl_common: package-0:uncore:long_term locked by BIOS
[   34.492976] usbcore: registered new interface driver uvcvideo
[   35.511742] Console: switching to colour frame buffer device 240x67
[   35.511779] snd_hda_intel 0000:00:1b.0: bound 0000:00:02.0 (ops intel_audio_component_bind_ops [i915])
[   35.533017] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[   35.598276] snd_hda_codec_alc269 hdaudioC0D0: autoconfig for ALC269VC: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[   35.598285] snd_hda_codec_alc269 hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[   35.598288] snd_hda_codec_alc269 hdaudioC0D0:    hp_outs=1 (0x15/0x0/0x0/0x0/0x0)
[   35.598291] snd_hda_codec_alc269 hdaudioC0D0:    mono: mono_out=0x0
[   35.598293] snd_hda_codec_alc269 hdaudioC0D0:    inputs:
[   35.598295] snd_hda_codec_alc269 hdaudioC0D0:      Internal Mic=0x12
[   35.598297] snd_hda_codec_alc269 hdaudioC0D0:      Mic=0x18
[   35.634244] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8
[   35.634309] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9
[   35.634363] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[   35.728542] audit: type=1400 audit(1775143074.416:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="1password" pid=848 comm="apparmor_parser"
[   35.728588] audit: type=1400 audit(1775143074.416:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name=4D6F6E676F444220436F6D70617373 pid=850 comm="apparmor_parser"
[   35.728817] audit: type=1400 audit(1775143074.416:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="QtWebEngineProcess" pid=851 comm="apparmor_parser"
[   35.728823] audit: type=1400 audit(1775143074.416:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="Discord" pid=849 comm="apparmor_parser"
[   35.731064] audit: type=1400 audit(1775143074.416:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="balena-etcher" pid=853 comm="apparmor_parser"
[   35.731104] audit: type=1400 audit(1775143074.416:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="brave" pid=854 comm="apparmor_parser"
[   35.731841] audit: type=1400 audit(1775143074.416:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="buildah" pid=855 comm="apparmor_parser"
[   35.733304] audit: type=1400 audit(1775143074.420:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="cam" pid=857 comm="apparmor_parser"
[   35.733638] audit: type=1400 audit(1775143074.420:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="busybox" pid=856 comm="apparmor_parser"
[   35.733939] audit: type=1400 audit(1775143074.420:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="ch-checkns" pid=858 comm="apparmor_parser"
[   36.174009] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   36.174017] Bluetooth: BNEP filters: protocol multicast
[   36.174023] Bluetooth: BNEP socket layer initialized
[   36.183630] Bluetooth: MGMT ver 1.23
[   36.199388] NET: Registered PF_ALG protocol family
[   36.438935] NET: Registered PF_QIPCRTR protocol family
[   36.477719] RTL8211E Gigabit Ethernet r8169-0-200:00: attached PHY driver (mii_bus:phy_addr=r8169-0-200:00, irq=MAC)
[   36.675092] r8169 0000:02:00.0 enp2s0: Link is Down
[   36.693160] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[   36.990719] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[   37.113880] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[   37.420794] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[   37.763485] Initializing XFRM netlink socket
[   37.801351] IPsec XFRM device driver
[   38.812915] Bluetooth: RFCOMM TTY layer initialized
[   38.812928] Bluetooth: RFCOMM socket layer initialized
[   38.812935] Bluetooth: RFCOMM ver 1.11
[   40.746143] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[   41.042874] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[   41.148380] wlp1s0: authenticate with 94:64:24:4d:d7:f2 (local address=c8:f7:33:e2:38:12)
[   41.148397] wlp1s0: send auth to 94:64:24:4d:d7:f2 (try 1/3)
[   41.252010] wlp1s0: authenticated
[   41.252343] wlp1s0: associate with 94:64:24:4d:d7:f2 (try 1/3)
[   41.259934] wlp1s0: RX AssocResp from 94:64:24:4d:d7:f2 (capab=0x1 status=0 aid=1)
[   41.277984] wlp1s0: associated
[   43.351689] rfkill: input handler disabled
[   50.269668] rfkill: input handler enabled
[   52.394547] rfkill: input handler disabled
[  496.792074] wlp1s0: deauthenticating from 94:64:24:4d:d7:f2 by local choice (Reason: 3=DEAUTH_LEAVING)
[  496.943623] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[  497.245903] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[  497.979040] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[  498.291170] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[  527.023990] PM: suspend entry (deep)
[  527.067955] Filesystems sync: 0.043 seconds
[  527.070969] Freezing user space processes
[  527.072397] Freezing user space processes completed (elapsed 0.001 seconds)
[  527.072401] OOM killer disabled.
[  527.072403] Freezing remaining freezable tasks
[  527.073669] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
[  527.073689] printk: Suspending console(s) (use no_console_suspend to debug)
[  527.155918] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[  527.159004] ata1.00: Entering standby power mode
[  527.614228] ACPI: EC: interrupt blocked
[  527.638242] ACPI: PM: Preparing to enter system sleep state S3
[  527.639176] ACPI: EC: event blocked
[  527.639180] ACPI: EC: EC stopped
[  527.639182] ACPI: PM: Saving platform NVS memory
[  527.639283] Disabling non-boot CPUs ...
[  527.640987] smpboot: CPU 3 is now offline
[  527.642819] smpboot: CPU 2 is now offline
[  527.645294] smpboot: CPU 1 is now offline
[  527.647237] ACPI: PM: Low-level resume complete
[  527.647265] ACPI: EC: EC started
[  527.647266] ACPI: PM: Restoring platform NVS memory
[  527.647626] Enabling non-boot CPUs ...
[  527.647665] smpboot: Booting Node 0 Processor 1 APIC 0x1
[  527.651149] CPU1 is up
[  527.651180] smpboot: Booting Node 0 Processor 2 APIC 0x2
[  527.654732] CPU2 is up
[  527.654761] smpboot: Booting Node 0 Processor 3 APIC 0x3
[  527.657801] CPU3 is up
[  527.659605] ACPI: PM: Waking up from system sleep state S3
[  527.662332] ACPI: EC: interrupt unblocked
[  527.665250] ACPI: EC: event unblocked
[  527.665773] usb usb2: root hub lost power or was reset
[  527.665777] usb usb3: root hub lost power or was reset
[  527.665924] ACPI: EC: 0 stale EC events cleared
[  527.676244] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[  527.739996] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[  527.929409] usb 1-1.6: reset high-speed USB device number 4 using ehci-pci
[  527.981178] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[  528.050270] iwlwifi 0000:01:00.0: Radio type=0x2-0x1-0x0
[  528.186162] ata1.00: NCQ Send/Recv Log not supported
[  528.186525] sd 0:0:0:0: [sda] Starting disk
[  528.187046] ata1.00: NCQ Send/Recv Log not supported
[  528.187278] ata1.00: configured for UDMA/133
[  528.269463] usb 1-1.5: reset full-speed USB device number 3 using ehci-pci
[  528.370243] OOM killer enabled.
[  528.370248] Restarting tasks: Starting
[  528.371730] Bluetooth: hci0: unexpected event for opcode 0x0000
[  528.376260] Restarting tasks: Done
[  528.376270] efivarfs: resyncing variable state
[  528.419799] efivarfs: finished resyncing variable state
[  528.419822] random: crng reseeded on system resumption
[  528.434073] video LNXVIDEO:00: Restoring backlight state
[  528.434186] PM: suspend exit
[  528.555999] Bluetooth: MGMT ver 1.23
[  528.620978] RTL8211E Gigabit Ethernet r8169-0-200:00: attached PHY driver (mii_bus:phy_addr=r8169-0-200:00, irq=MAC)
[  528.816114] r8169 0000:02:00.0 enp2s0: Link is Down
[  531.961411] wlp1s0: authenticate with 94:64:24:4d:d7:f2 (local address=c8:f7:33:e2:38:12)
[  531.961419] wlp1s0: send auth to 94:64:24:4d:d7:f2 (try 1/3)
[  531.962495] wlp1s0: authenticated
[  531.965291] wlp1s0: associate with 94:64:24:4d:d7:f2 (try 1/3)
[  531.970893] wlp1s0: RX AssocResp from 94:64:24:4d:d7:f2 (capab=0x1 status=0 aid=1)
[  531.989963] wlp1s0: associated

^ permalink raw reply

* Re: [PATCH 5/7] iio: light: HID: Replace method prox_adjust_channel_bit_mask()
From: David Lechner @ 2026-04-18 16:34 UTC (permalink / raw)
  To: Natália Salvino André, andy, bentiss, jic23, jikos,
	nuno.sa, srinivas.pandruvada
  Cc: Pietro Di Consolo Gregorio, linux-iio, linux-input
In-Reply-To: <20260417225959.16688-6-natalia.andre@ime.usp.br>

On 4/17/26 5:58 PM, Natália Salvino André wrote:
> Replace method prox_adjust_channel_bit_mask()
> with helper method hid_sensor_adjust_channel_bit_mask().
> 
> Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
> Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
> Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
> ---
>  drivers/iio/light/hid-sensor-prox.c | 13 +------------
>  1 file changed, 1 insertion(+), 12 deletions(-)
> 
> diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-sensor-prox.c
> index efa904a70d0e..61f4627cffab 100644
> --- a/drivers/iio/light/hid-sensor-prox.c
> +++ b/drivers/iio/light/hid-sensor-prox.c
> @@ -67,17 +67,6 @@ static const struct iio_chan_spec prox_channels[] = {
>  	PROX_CHANNEL(false, 0),
>  };
>  
> -/* Adjust channel real bits based on report descriptor */
> -static void prox_adjust_channel_bit_mask(struct iio_chan_spec *channels,
> -					int channel, int size)
> -{
> -	channels[channel].scan_type.sign = 's';
> -	/* Real storage bits will change based on the report desc. */
> -	channels[channel].scan_type.realbits = size * 8;
> -	/* Maximum size of a sample to capture is u32 */
> -	channels[channel].scan_type.storagebits = sizeof(u32) * 8;
> -}
> -
>  /* Channel read_raw handler */
>  static int prox_read_raw(struct iio_dev *indio_dev,
>  			      struct iio_chan_spec const *chan,
> @@ -250,7 +239,7 @@ static int prox_parse_report(struct platform_device *pdev,
>  		st->scan_mask[0] |= BIT(index);
>  		channels[index] = prox_channels[i];
>  		channels[index].scan_index = index;
> -		prox_adjust_channel_bit_mask(channels, index,
> +		hid_sensor_adjust_channel_bit_mask(channels, index,
>  					     st->prox_attr[index].size);

Make sure to fix the alignment with `(`. Check the other patches too.

If it makes the line too long, just use one tab indent more than the previous line.

>  		dev_dbg(&pdev->dev, "prox %x:%x\n", st->prox_attr[index].index,
>  			st->prox_attr[index].report_id);


^ permalink raw reply

* Re: [PATCH 1/7] iio: HID: Add helper method hid_sensor_adjust_channel_bit_mask()
From: David Lechner @ 2026-04-18 16:32 UTC (permalink / raw)
  To: Natália Salvino André, andy, bentiss, jic23, jikos,
	nuno.sa, srinivas.pandruvada
  Cc: Pietro Di Consolo Gregorio, linux-iio, linux-input
In-Reply-To: <20260417225959.16688-2-natalia.andre@ime.usp.br>

On 4/17/26 5:58 PM, Natália Salvino André wrote:
> Add helper method to deduplicate code in HID sensors.
> 
> Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
> Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
> Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
> ---
>  .../iio/common/hid-sensors/hid-sensor-attributes.c    | 11 +++++++++++
>  include/linux/hid-sensor-hub.h                        |  3 +++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> index c115a72832b2..12728cfa5d44 100644
> --- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> +++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> @@ -589,6 +589,17 @@ int hid_sensor_parse_common_attributes(struct hid_sensor_hub_device *hsdev,
>  }
>  EXPORT_SYMBOL_NS(hid_sensor_parse_common_attributes, "IIO_HID");
>  
> +void hid_sensor_adjust_channel_bit_mask(struct iio_chan_spec *channels,
> +					int channel, int size)
> +{
> +	channels[channel].scan_type.sign = 's';

We recently renamed the `sign` field to `format`, so it would be nice
to use the new name in new code. (If it is already used in this file,
make a precursor patch to do the rename of existing ones first.)

> +	/* Real storage bits will change based on the report desc. */
> +	channels[channel].scan_type.realbits = size * 8;

There is a BITS_PER_BYTE macro that would make sense here.

> +	/* Maximum size of a sample to capture is u32 */
> +	channels[channel].scan_type.storagebits = sizeof(u32) * 8;

and here.

> +}
> +EXPORT_SYMBOL_NS(hid_sensor_adjust_channel_bit_mask, "IIO_HID");
> +
>  MODULE_AUTHOR("Srinivas Pandruvada <srinivas.pandruvada@intel.com>");
>  MODULE_DESCRIPTION("HID Sensor common attribute processing");
>  MODULE_LICENSE("GPL");
> diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h
> index e71056553108..6523d46c63e0 100644
> --- a/include/linux/hid-sensor-hub.h
> +++ b/include/linux/hid-sensor-hub.h
> @@ -281,4 +281,7 @@ bool hid_sensor_batch_mode_supported(struct hid_sensor_common *st);
>  int hid_sensor_set_report_latency(struct hid_sensor_common *st, int latency);
>  int hid_sensor_get_report_latency(struct hid_sensor_common *st);
>  
> +void hid_sensor_adjust_channel_bit_mask(struct iio_chan_spec *channels,
> +					int channel, int size);
> +
>  #endif


^ permalink raw reply

* Re: [PATCH] HID: usbhid: sanitize hid->uniq against non-printable bytes
From: Greg KH @ 2026-04-18  7:14 UTC (permalink / raw)
  To: Taylor Hewetson
  Cc: Jiri Kosina, Benjamin Tissoires, linux-usb, linux-input,
	linux-kernel
In-Reply-To: <20260418025823.21767-1-taylor@exponent.digital>

On Sat, Apr 18, 2026 at 02:58:23PM +1200, Taylor Hewetson wrote:
> Some USB HID devices (observed on ASUS ROG Azoth via its 2.4GHz
> dongle, USB ID 0b05:1a85) report an iSerialNumber string whose
> USB string descriptor declares a longer length than the actual
> serial, leaving uninitialized firmware memory - including control
> characters such as 0x18 - appended to the returned string.
> 
> These non-printable bytes propagate into hid->uniq, which in turn
> populates /sys/class/input/inputN/uniq. Downstream userspace
> components (systemd sd-device property_is_valid(), and by extension
> mutter input enumeration on GNOME Wayland sessions) reject devices
> with control characters in their uniq, rendering otherwise-
> functional input devices unusable in graphical sessions despite
> the kernel input layer correctly translating keypresses.
> 
> Truncate hid->uniq at the first byte outside the printable ASCII
> range (0x20..0x7e) after the serial is read.

Why aren't we doing this in the USB core instead of forcing all users of
this to do it instead?

thanks,

greg k-h

^ permalink raw reply

* [PATCH v3 2/2] input: misc: Add PixArt PAJ7620 gesture sensor driver
From: Harpreet Saini @ 2026-04-18  6:22 UTC (permalink / raw)
  To: Rob Herring, linux-input, devicetree, linux-kernel
  Cc: Dmitry Torokhov, Krzysztof Kozlowski, Conor Dooley
In-Reply-To: <20260418062241.104697-1-sainiharpreet29@yahoo.com>

This driver adds support for the PixArt PAJ7620 gesture sensor.
It implements hand gesture recognition (up, down, left, right,
etc.) and reports them as standard input key events. The driver
includes power management support via Runtime PM.

Signed-off-by: Harpreet Saini <sainiharpreet29@yahoo.com>
---
 drivers/input/misc/Kconfig   |  12 ++
 drivers/input/misc/Makefile  |   1 +
 drivers/input/misc/paj7620.c | 338 +++++++++++++++++++++++++++++++++++
 3 files changed, 351 insertions(+)
 create mode 100644 drivers/input/misc/paj7620.c

diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 94a753fcb64f..de4206c297f2 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -453,6 +453,18 @@ config INPUT_KXTJ9
 	  To compile this driver as a module, choose M here: the module will
 	  be called kxtj9.
 
+config INPUT_PAJ7620
+	tristate "PixArt PAJ7620 Gesture Sensor"
+	depends on I2C
+	select REGMAP_I2C
+	help
+	  Say Y here if you want to support the PixArt PAJ7620 gesture
+	  sensor. This sensor supports 9 hand gestures and communicates
+	  over the I2C bus.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called paj7620.
+
 config INPUT_POWERMATE
 	tristate "Griffin PowerMate and Contour Jog support"
 	depends on USB_ARCH_HAS_HCD
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index 415fc4e2918b..dec8b8d0cdf4 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -67,6 +67,7 @@ obj-$(CONFIG_INPUT_PF1550_ONKEY)	+= pf1550-onkey.o
 obj-$(CONFIG_INPUT_PM8941_PWRKEY)	+= pm8941-pwrkey.o
 obj-$(CONFIG_INPUT_PM8XXX_VIBRATOR)	+= pm8xxx-vibrator.o
 obj-$(CONFIG_INPUT_PMIC8XXX_PWRKEY)	+= pmic8xxx-pwrkey.o
+obj-$(CONFIG_INPUT_PAJ7620) 		+= paj7620.o
 obj-$(CONFIG_INPUT_POWERMATE)		+= powermate.o
 obj-$(CONFIG_INPUT_PWM_BEEPER)		+= pwm-beeper.o
 obj-$(CONFIG_INPUT_PWM_VIBRA)		+= pwm-vibra.o
diff --git a/drivers/input/misc/paj7620.c b/drivers/input/misc/paj7620.c
new file mode 100644
index 000000000000..8738c174bcc1
--- /dev/null
+++ b/drivers/input/misc/paj7620.c
@@ -0,0 +1,338 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * PixArt PAJ7620 Gesture Sensor - Input driver
+ *
+ * Copyright (C) 2026 Harpreet Saini <sainiharpreet29@yahoo.com>
+ */
+
+#include <linux/delay.h>
+#include <linux/i2c.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/pm_runtime.h>
+#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
+
+/* Registers */
+#define PAJ7620_REG_BANK_SEL        0xEF
+#define PAJ7620_REG_GES_RESULT1     0x43
+#define PAJ7620_REG_GES_RESULT2     0x44
+#define PAJ7620_REG_SLEEP_BANK0     0x65
+#define PAJ7620_REG_SLEEP_BANK1     0x05
+#define PAJ7620_REG_AUTO_STANDBY    0x073
+
+/* Gesture bits */
+#define PAJ_UP           BIT(0)
+#define PAJ_DOWN         BIT(1)
+#define PAJ_LEFT         BIT(2)
+#define PAJ_RIGHT        BIT(3)
+#define PAJ_FORWARD      BIT(4)
+#define PAJ_BACKWARD     BIT(5)
+#define PAJ_CLOCKWISE    BIT(6)
+#define PAJ_ANTICLOCK    BIT(7)
+#define PAJ_WAVE         BIT(8)
+#define PAJ_MAX_GESTURES 9
+
+struct paj7620_data {
+	struct i2c_client *client;
+	struct regmap *regmap;
+	struct input_dev *idev;
+	struct regulator_bulk_data supplies[3];
+	u32 keymap[PAJ_MAX_GESTURES];
+};
+
+/*
+ * The following arrays contain undocumented register sequences required to
+ * initialize the sensor's internal DSP and gesture engine.
+ * These were derived from vendor reference code and verified via testing.
+ */
+static const struct reg_sequence init_register[] = {
+	{ 0xEF, 0x00 }, { 0x37, 0x07 }, { 0x38, 0x17 }, { 0x39, 0x06 },
+	{ 0x41, 0x00 }, { 0x42, 0x00 }, { 0x46, 0x2D }, { 0x47, 0x0F },
+	{ 0x48, 0x3C }, { 0x49, 0x00 }, { 0x4A, 0x1E }, { 0x4C, 0x20 },
+	{ 0x51, 0x10 }, { 0x5E, 0x10 }, { 0x60, 0x27 }, { 0x80, 0x42 },
+	{ 0x81, 0x44 }, { 0x82, 0x04 }, { 0x8B, 0x01 }, { 0x90, 0x06 },
+	{ 0x95, 0x0A }, { 0x96, 0x0C }, { 0x97, 0x05 }, { 0x9A, 0x14 },
+	{ 0x9C, 0x3F }, { 0xA5, 0x19 }, { 0xCC, 0x19 }, { 0xCD, 0x0B },
+	{ 0xCE, 0x13 }, { 0xCF, 0x64 }, { 0xD0, 0x21 }, { 0xEF, 0x01 },
+	{ 0x02, 0x0F }, { 0x03, 0x10 }, { 0x04, 0x02 }, { 0x25, 0x01 },
+	{ 0x27, 0x39 }, { 0x28, 0x7F }, { 0x29, 0x08 }, { 0x3E, 0xFF },
+	{ 0x5E, 0x3D }, { 0x65, 0x96 }, { 0x67, 0x97 }, { 0x69, 0xCD },
+	{ 0x6A, 0x01 }, { 0x6D, 0x2C }, { 0x6E, 0x01 }, { 0x72, 0x01 },
+	{ 0x73, 0x35 }, { 0x74, 0x00 }, { 0x77, 0x01 },
+};
+
+/*
+ * Specific configuration overrides required to enable the internal
+ * 8-gesture state machine.
+ */
+static const struct reg_sequence init_gesture_array[] = {
+	{ 0xEF, 0x00 }, { 0x41, 0x00 }, { 0x42, 0x00 }, { 0xEF, 0x00 },
+	{ 0x48, 0x3C }, { 0x49, 0x00 }, { 0x51, 0x10 }, { 0x83, 0x20 },
+	{ 0x9F, 0xF9 }, { 0xEF, 0x01 }, { 0x01, 0x1E }, { 0x02, 0x0F },
+	{ 0x03, 0x10 }, { 0x04, 0x02 }, { 0x41, 0x40 }, { 0x43, 0x30 },
+	{ 0x65, 0x96 }, { 0x66, 0x00 }, { 0x67, 0x97 }, { 0x68, 0x01 },
+	{ 0x69, 0xCD }, { 0x6A, 0x01 }, { 0x6B, 0xB0 }, { 0x6C, 0x04 },
+	{ 0x6D, 0x2C }, { 0x6E, 0x01 }, { 0x74, 0x00 }, { 0xEF, 0x00 },
+	{ 0x41, 0xFF }, { 0x42, 0x01 },
+};
+
+static const struct reg_sequence paj7620_suspend_regs[] = {
+	{ PAJ7620_REG_BANK_SEL, 0x00 },
+	{ PAJ7620_REG_SLEEP_BANK0, 0x01 },
+	{ PAJ7620_REG_BANK_SEL, 0x01 },
+	{ PAJ7620_REG_SLEEP_BANK1, 0x01 },
+};
+
+static void paj7620_report_keys(struct paj7620_data *data, int gesture)
+{
+	int i;
+
+	for (i = 0; i < PAJ_MAX_GESTURES; i++) {
+		if (gesture & BIT(i)) {
+			int key = data->keymap[i];
+
+			input_report_key(data->idev, key, 1);
+			input_sync(data->idev);
+			input_report_key(data->idev, key, 0);
+			input_sync(data->idev);
+		}
+	}
+}
+
+static irqreturn_t paj7620_irq_thread(int irq, void *ptr)
+{
+	struct paj7620_data *data = ptr;
+	unsigned int g1, g2;
+	int error;
+
+	/* 2. RUNTIME PM: Force awake to read registers */
+	pm_runtime_get_sync(&data->client->dev);
+
+	regmap_write(data->regmap, PAJ7620_REG_BANK_SEL, 0);
+	error = regmap_read(data->regmap, PAJ7620_REG_GES_RESULT1, &g1);
+	error |= regmap_read(data->regmap, PAJ7620_REG_GES_RESULT2, &g2);
+
+	if (!error && (g1 || g2))
+		paj7620_report_keys(data, (g2 << 8) | g1);
+
+	pm_runtime_mark_last_busy(&data->client->dev);
+	pm_runtime_put_autosuspend(&data->client->dev);
+
+	return IRQ_HANDLED;
+}
+
+static int paj7620_init(struct paj7620_data *data)
+{
+	int state = 0, error, i;
+
+	/* 1. Wake-up sequence: Read register 0x00 until it returns 0x20 */
+	for (i = 0; i < 10; i++) {
+		error = regmap_read(data->regmap, 0x00, &state);
+		if (error >= 0 && state == 0x20)
+			break;
+		usleep_range(1000, 2000);
+	}
+
+	if (state != 0x20) {
+		dev_err(&data->client->dev, "Sensor wake-up failed (0x%02x)\n", state);
+		return -ENODEV;
+	}
+
+	/* 2. Blast full register array into PAJ7620 instantly */
+	error = regmap_multi_reg_write(data->regmap, init_register,
+				       ARRAY_SIZE(init_register));
+	if (error < 0) {
+		dev_err(&data->client->dev, "Multi-reg write failed (%d)\n", error);
+		return error;
+	}
+
+	error = regmap_write(data->regmap, PAJ7620_REG_BANK_SEL, 0x00);
+	if (error < 0)
+		return error;
+
+	error = regmap_multi_reg_write(data->regmap, init_gesture_array,
+				       ARRAY_SIZE(init_gesture_array));
+	if (error < 0) {
+		dev_err(&data->client->dev, "Multi-reg write failed (%d)\n", error);
+		return error;
+	}
+
+	return 0;
+}
+
+static int paj7620_input_open(struct input_dev *idev)
+{
+	int error;
+	struct paj7620_data *data = input_get_drvdata(idev);
+
+	error = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies);
+	if (error)
+		return error;
+
+	error = paj7620_init(data);
+	if (error) {
+		regulator_bulk_disable(ARRAY_SIZE(data->supplies), data->supplies);
+		return error;
+	}
+
+	return 0;
+}
+
+static void paj7620_input_close(struct input_dev *idev)
+{
+	struct paj7620_data *data = input_get_drvdata(idev);
+
+	regmap_multi_reg_write(data->regmap, paj7620_suspend_regs,
+			       ARRAY_SIZE(paj7620_suspend_regs));
+
+	regulator_bulk_disable(ARRAY_SIZE(data->supplies), data->supplies);
+}
+
+static int paj7620_runtime_suspend(struct device *dev)
+{
+	int error;
+	struct paj7620_data *data = dev_get_drvdata(dev);
+
+	error = regmap_write(data->regmap, PAJ7620_REG_BANK_SEL, 0x01);
+	if (error)
+		return error;
+
+	error = regmap_write(data->regmap, PAJ7620_REG_AUTO_STANDBY, 0x30);
+	if (error)
+		return error;
+
+	return 0;
+}
+
+static int paj7620_runtime_resume(struct device *dev)
+{
+	int error;
+	struct paj7620_data *data = dev_get_drvdata(dev);
+
+	error = regmap_write(data->regmap, PAJ7620_REG_BANK_SEL, 0x01);
+	if (error)
+		return error;
+
+	error = regmap_write(data->regmap, PAJ7620_REG_AUTO_STANDBY, 0x00);
+	if (error)
+		return error;
+
+	error = regmap_write(data->regmap, PAJ7620_REG_BANK_SEL, 0x00);
+	if (error)
+		return error;
+
+	usleep_range(1000, 2000);	// Stabilization delay (1ms minimum)
+	return 0;
+}
+
+static const struct dev_pm_ops paj7620_pm_ops = {
+	SET_RUNTIME_PM_OPS(paj7620_runtime_suspend, paj7620_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume)
+};
+
+static const struct regmap_config paj7620_reg_config = {
+	.reg_bits = 8, .val_bits = 8, .max_register = 0xEF,
+};
+
+static void paj7620_disable_pm(void *dev)
+{
+	pm_runtime_disable(dev);
+	pm_runtime_dont_use_autosuspend(dev);
+}
+
+static int paj7620_probe(struct i2c_client *client)
+{
+	struct paj7620_data *data;
+	int error, i;
+
+	data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
+
+	data->client = client;
+	i2c_set_clientdata(client, data);
+
+	data->supplies[0].supply = "vdd";
+	data->supplies[1].supply = "vbus";
+	data->supplies[2].supply = "vled";
+
+	error = devm_regulator_bulk_get(&client->dev, ARRAY_SIZE(data->supplies), data->supplies);
+	if (error)
+		return dev_err_probe(&client->dev, error, "Failed to get regulators\n");
+
+	error = device_property_read_u32_array(&client->dev, "linux,keycodes",
+					       data->keymap, ARRAY_SIZE(data->keymap));
+
+	if (error) {
+		data->keymap[0] = KEY_UP;
+		data->keymap[1] = KEY_DOWN;
+		data->keymap[2] = KEY_LEFT;
+		data->keymap[3] = KEY_RIGHT;
+		data->keymap[4] = KEY_ENTER;
+		data->keymap[5] = KEY_BACK;
+		data->keymap[6] = KEY_NEXT;
+		data->keymap[7] = KEY_PREVIOUS;
+		data->keymap[8] = KEY_MENU;
+	}
+
+	data->regmap = devm_regmap_init_i2c(client, &paj7620_reg_config);
+	if (IS_ERR(data->regmap))
+		return PTR_ERR(data->regmap);
+
+	data->idev = devm_input_allocate_device(&client->dev);
+	if (!data->idev)
+		return -ENOMEM;
+
+	data->idev->name = "PAJ7620 Gesture Sensor";
+	data->idev->id.bustype = BUS_I2C;
+	data->idev->open = paj7620_input_open;
+	data->idev->close = paj7620_input_close;
+	data->idev->keycode = data->keymap;
+	data->idev->keycodemax = ARRAY_SIZE(data->keymap);
+	data->idev->keycodesize = sizeof(u32);
+
+	for (i = 0; i < ARRAY_SIZE(data->keymap); i++)
+		input_set_capability(data->idev, EV_KEY, data->keymap[i]);
+
+	input_set_drvdata(data->idev, data);
+
+	error = input_register_device(data->idev);
+	if (error)
+		return error;
+
+	pm_runtime_set_active(&client->dev);
+	pm_runtime_enable(&client->dev);
+	pm_runtime_set_autosuspend_delay(&client->dev, 2000);
+	pm_runtime_use_autosuspend(&client->dev);
+
+	error = devm_add_action_or_reset(&client->dev, paj7620_disable_pm, &client->dev);
+	if (error)
+		return error;
+
+	return devm_request_threaded_irq(&client->dev, client->irq,
+									 NULL, paj7620_irq_thread,
+									 IRQF_ONESHOT, "paj7620",
+									 data);
+}
+
+static const struct of_device_id paj7620_of_match[] = {
+	{ .compatible = "pixart,paj7620" },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, paj7620_of_match);
+
+static struct i2c_driver paj7620_driver = {
+	.driver = {
+		.name = "paj7620",
+		.of_match_table = paj7620_of_match,
+		.pm = &paj7620_pm_ops,
+	},
+	.probe = paj7620_probe,
+};
+module_i2c_driver(paj7620_driver);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Harpreet Saini");
+MODULE_DESCRIPTION("PAJ7620 Gesture Input Driver");
-- 
2.43.0


^ permalink raw reply related

* [PATCH v3 0/2] Add PixArt PAJ7620 gesture sensor support
From: Harpreet Saini @ 2026-04-18  6:22 UTC (permalink / raw)
  To: Rob Herring, linux-input, devicetree, linux-kernel
  Cc: Dmitry Torokhov, Krzysztof Kozlowski, Conor Dooley
In-Reply-To: <20260418062241.104697-1-sainiharpreet29.ref@yahoo.com>

This series adds support for the PixArt PAJ7620 gesture sensor.
The first patch provides the DT bindings, and the second patch
implements the input driver.

Changes in v3:
- Moved sensor power-up and paj7620_init() to input open/close 
  callbacks
- Implemented dynamic keymap support via 'linux,keycodes' DT property
  and enabled userspace adjustment via EVIOCSKEYCODE.
- Updated YAML bindings to include mandatory vdd, vbus, and vled
  supplies.
- Added gpio-controller properties to YAML for hardware completeness.
- Verified with dt_binding_check and checkpatch.pl --strict.

Harpreet Saini (2):
  dt-bindings: input: Add PixArt PAJ7620 gesture sensor
  input: misc: Add PixArt PAJ7620 gesture sensor driver

 .../bindings/input/pixart,paj7620.yaml        |  79 ++++
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 drivers/input/misc/Kconfig                    |  12 +
 drivers/input/misc/Makefile                   |   1 +
 drivers/input/misc/paj7620.c                  | 338 ++++++++++++++++++
 5 files changed, 432 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/
 pixart,paj7620.yaml
 create mode 100644 drivers/input/misc/paj7620.c

-- 
2.43.0


^ permalink raw reply

* [PATCH v3 1/2] dt-bindings: input: Add PixArt PAJ7620 gesture sensor
From: Harpreet Saini @ 2026-04-18  6:22 UTC (permalink / raw)
  To: Rob Herring, linux-input, devicetree, linux-kernel
  Cc: Dmitry Torokhov, Krzysztof Kozlowski, Conor Dooley
In-Reply-To: <20260418062241.104697-1-sainiharpreet29@yahoo.com>

Add Device Tree bindings for Pixart PAJ7620 gesture sensor.
The sensor supports 9 hand gestures via I2C interface.

The binding include mandatory power supplies (vdd, vbus, vled)
and optional GPIO controller properties to describe the hardware's
ability to repurpose SPI pins opeating in I2C mode.

Signed-off-by: Harpreet Saini <sainiharpreet29@yahoo.com>
---
 .../bindings/input/pixart,paj7620.yaml        | 79 +++++++++++++++++++
 .../devicetree/bindings/vendor-prefixes.yaml  |  2 +
 2 files changed, 81 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/pixart,paj7620.yaml

diff --git a/Documentation/devicetree/bindings/input/pixart,paj7620.yaml b/Documentation/devicetree/bindings/input/pixart,paj7620.yaml
new file mode 100644
index 000000000000..ad051cf641a6
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/pixart,paj7620.yaml
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/pixart,paj7620.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: PixArt PAJ7620 Gesture Sensor
+
+maintainers:
+  - Harpreet Saini <sainiharpreet29@yahoo.com>
+
+description: |
+  The PixArt PAJ7620 is a gesture recognition sensor with an integrated
+  infrared LED and CMOS array. It communicates over an I2C interface and
+  provides gesture data via a dedicated interrupt pin.
+
+properties:
+  compatible:
+    const: pixart,paj7620
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  vdd-supply:
+    description: Main power supply.
+
+  vbus-supply:
+    description: I/O and I2C bus power supply.
+
+  vled-supply:
+    description: Power for the integrated IR LED.
+
+  linux,keycodes:
+    minItems: 9
+    maxItems: 9
+    description: |
+      List of keycodes mapping to the 9 supported gestures.
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 2
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - vdd-supply
+  - vbus-supply
+  - vled-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/input/input.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        gesture@73 {
+            compatible = "pixart,paj7620";
+            reg = <0x73>;
+            interrupt-parent = <&gpio>;
+            interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+            vdd-supply = <&reg_3v3>;
+            vbus-supply = <&reg_1v8>;
+            vled-supply = <&reg_3v3>;
+            linux,keycodes = <KEY_UP KEY_DOWN KEY_LEFT KEY_RIGHT
+                             KEY_ENTER KEY_BACK KEY_NEXT KEY_PREVIOUS
+                             KEY_MENU>;
+            gpio-controller;
+            #gpio-cells = <2>;
+        };
+    };
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index ee7fd3cfe203..d73a0bf62b62 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -1273,6 +1273,8 @@ patternProperties:
     description: Pine64
   "^pineriver,.*":
     description: Shenzhen PineRiver Designs Co., Ltd.
+  "^pixart,.*":
+    description: PixArt Imaging Inc.
   "^pixcir,.*":
     description: PIXCIR MICROELECTRONICS Co., Ltd
   "^plantower,.*":
-- 
2.43.0


^ permalink raw reply related

* [PATCH] HID: usbhid: sanitize hid->uniq against non-printable bytes
From: Taylor Hewetson @ 2026-04-18  2:58 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: linux-usb, linux-input, linux-kernel, Taylor Hewetson

Some USB HID devices (observed on ASUS ROG Azoth via its 2.4GHz
dongle, USB ID 0b05:1a85) report an iSerialNumber string whose
USB string descriptor declares a longer length than the actual
serial, leaving uninitialized firmware memory - including control
characters such as 0x18 - appended to the returned string.

These non-printable bytes propagate into hid->uniq, which in turn
populates /sys/class/input/inputN/uniq. Downstream userspace
components (systemd sd-device property_is_valid(), and by extension
mutter input enumeration on GNOME Wayland sessions) reject devices
with control characters in their uniq, rendering otherwise-
functional input devices unusable in graphical sessions despite
the kernel input layer correctly translating keypresses.

Truncate hid->uniq at the first byte outside the printable ASCII
range (0x20..0x7e) after the serial is read.

Signed-off-by: Taylor Hewetson <taylor@exponent.digital>
---
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -1427,8 +1427,17 @@
 		snprintf(hid->phys + len, sizeof(hid->phys) - len,
 			 "%d", intf->altsetting[0].desc.bInterfaceNumber);
 
-	if (usb_string(dev, dev->descriptor.iSerialNumber, hid->uniq, 64) <= 0)
+	if (usb_string(dev, dev->descriptor.iSerialNumber, hid->uniq, 64) <= 0) {
 		hid->uniq[0] = 0;
+	} else {
+		size_t i;
+		for (i = 0; i < sizeof(hid->uniq) && hid->uniq[i]; i++) {
+			if (hid->uniq[i] < 0x20 || hid->uniq[i] > 0x7e) {
+				hid->uniq[i] = 0;
+				break;
+			}
+		}
+	}
 
 	usbhid = kzalloc(sizeof(*usbhid), GFP_KERNEL);
 	if (usbhid == NULL) {

^ permalink raw reply

* [PATCH 7/7] iio: pressure: HID: Replace method press_adjust_channel_bit_mask()
From: Natália Salvino André @ 2026-04-17 22:58 UTC (permalink / raw)
  To: andy, bentiss, dlechner, jic23, jikos, nuno.sa,
	srinivas.pandruvada
  Cc: Natália Salvino André, Pietro Di Consolo Gregorio,
	linux-iio, linux-input
In-Reply-To: <20260417225959.16688-1-natalia.andre@ime.usp.br>

Replace method press_adjust_channel_bit_mask()
with helper method hid_sensor_adjust_channel_bit_mask().

Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
---
 drivers/iio/pressure/hid-sensor-press.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/iio/pressure/hid-sensor-press.c b/drivers/iio/pressure/hid-sensor-press.c
index 5f1d6abda3e4..3d609436a85a 100644
--- a/drivers/iio/pressure/hid-sensor-press.c
+++ b/drivers/iio/pressure/hid-sensor-press.c
@@ -53,17 +53,6 @@ static const struct iio_chan_spec press_channels[] = {
 
 };
 
-/* Adjust channel real bits based on report descriptor */
-static void press_adjust_channel_bit_mask(struct iio_chan_spec *channels,
-					int channel, int size)
-{
-	channels[channel].scan_type.sign = 's';
-	/* Real storage bits will change based on the report desc. */
-	channels[channel].scan_type.realbits = size * 8;
-	/* Maximum size of a sample to capture is u32 */
-	channels[channel].scan_type.storagebits = sizeof(u32) * 8;
-}
-
 /* Channel read_raw handler */
 static int press_read_raw(struct iio_dev *indio_dev,
 			      struct iio_chan_spec const *chan,
@@ -225,7 +214,7 @@ static int press_parse_report(struct platform_device *pdev,
 			&st->press_attr);
 	if (ret < 0)
 		return ret;
-	press_adjust_channel_bit_mask(channels, CHANNEL_SCAN_INDEX_PRESSURE,
+	hid_sensor_adjust_channel_bit_mask(channels, CHANNEL_SCAN_INDEX_PRESSURE,
 					st->press_attr.size);
 
 	dev_dbg(&pdev->dev, "press %x:%x\n", st->press_attr.index,
-- 
2.51.0


^ permalink raw reply related

* [PATCH 6/7] iio: magnetometer: HID: Replace method magn_3d_adjust_channel_bit_mask()
From: Natália Salvino André @ 2026-04-17 22:58 UTC (permalink / raw)
  To: andy, bentiss, dlechner, jic23, jikos, nuno.sa,
	srinivas.pandruvada
  Cc: Natália Salvino André, Pietro Di Consolo Gregorio,
	linux-iio, linux-input
In-Reply-To: <20260417225959.16688-1-natalia.andre@ime.usp.br>

Replace method magn_3d_adjust_channel_bit_mask()
with helper method hid_sensor_adjust_channel_bit_mask().

Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
---
 drivers/iio/magnetometer/hid-sensor-magn-3d.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/iio/magnetometer/hid-sensor-magn-3d.c b/drivers/iio/magnetometer/hid-sensor-magn-3d.c
index c673f9323e47..48a968b3aebb 100644
--- a/drivers/iio/magnetometer/hid-sensor-magn-3d.c
+++ b/drivers/iio/magnetometer/hid-sensor-magn-3d.c
@@ -132,17 +132,6 @@ static const struct iio_chan_spec magn_3d_channels[] = {
 	IIO_CHAN_SOFT_TIMESTAMP(7)
 };
 
-/* Adjust channel real bits based on report descriptor */
-static void magn_3d_adjust_channel_bit_mask(struct iio_chan_spec *channels,
-						int channel, int size)
-{
-	channels[channel].scan_type.sign = 's';
-	/* Real storage bits will change based on the report desc. */
-	channels[channel].scan_type.realbits = size * 8;
-	/* Maximum size of a sample to capture is u32 */
-	channels[channel].scan_type.storagebits = sizeof(u32) * 8;
-}
-
 /* Channel read_raw handler */
 static int magn_3d_read_raw(struct iio_dev *indio_dev,
 			      struct iio_chan_spec const *chan,
@@ -418,7 +407,7 @@ static int magn_3d_parse_report(struct platform_device *pdev,
 			if (i != CHANNEL_SCAN_INDEX_TIMESTAMP) {
 				/* Set magn_val_addr to iio value address */
 				st->magn_val_addr[i] = &st->iio_vals[*chan_count];
-				magn_3d_adjust_channel_bit_mask(_channels,
+				hid_sensor_adjust_channel_bit_mask(_channels,
 								*chan_count,
 								st->magn[i].size);
 			}
-- 
2.51.0


^ permalink raw reply related

* [PATCH 5/7] iio: light: HID: Replace method prox_adjust_channel_bit_mask()
From: Natália Salvino André @ 2026-04-17 22:58 UTC (permalink / raw)
  To: andy, bentiss, dlechner, jic23, jikos, nuno.sa,
	srinivas.pandruvada
  Cc: Natália Salvino André, Pietro Di Consolo Gregorio,
	linux-iio, linux-input
In-Reply-To: <20260417225959.16688-1-natalia.andre@ime.usp.br>

Replace method prox_adjust_channel_bit_mask()
with helper method hid_sensor_adjust_channel_bit_mask().

Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
---
 drivers/iio/light/hid-sensor-prox.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-sensor-prox.c
index efa904a70d0e..61f4627cffab 100644
--- a/drivers/iio/light/hid-sensor-prox.c
+++ b/drivers/iio/light/hid-sensor-prox.c
@@ -67,17 +67,6 @@ static const struct iio_chan_spec prox_channels[] = {
 	PROX_CHANNEL(false, 0),
 };
 
-/* Adjust channel real bits based on report descriptor */
-static void prox_adjust_channel_bit_mask(struct iio_chan_spec *channels,
-					int channel, int size)
-{
-	channels[channel].scan_type.sign = 's';
-	/* Real storage bits will change based on the report desc. */
-	channels[channel].scan_type.realbits = size * 8;
-	/* Maximum size of a sample to capture is u32 */
-	channels[channel].scan_type.storagebits = sizeof(u32) * 8;
-}
-
 /* Channel read_raw handler */
 static int prox_read_raw(struct iio_dev *indio_dev,
 			      struct iio_chan_spec const *chan,
@@ -250,7 +239,7 @@ static int prox_parse_report(struct platform_device *pdev,
 		st->scan_mask[0] |= BIT(index);
 		channels[index] = prox_channels[i];
 		channels[index].scan_index = index;
-		prox_adjust_channel_bit_mask(channels, index,
+		hid_sensor_adjust_channel_bit_mask(channels, index,
 					     st->prox_attr[index].size);
 		dev_dbg(&pdev->dev, "prox %x:%x\n", st->prox_attr[index].index,
 			st->prox_attr[index].report_id);
-- 
2.51.0


^ permalink raw reply related

* [PATCH 4/7] iio: light: HID: Replace method als_adjust_channel_bit_mask()
From: Natália Salvino André @ 2026-04-17 22:58 UTC (permalink / raw)
  To: andy, bentiss, dlechner, jic23, jikos, nuno.sa,
	srinivas.pandruvada
  Cc: Natália Salvino André, Pietro Di Consolo Gregorio,
	linux-iio, linux-input
In-Reply-To: <20260417225959.16688-1-natalia.andre@ime.usp.br>

Replace method als_adjust_channel_bit_mask()
with helper method hid_sensor_adjust_channel_bit_mask().

Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
---
 drivers/iio/light/hid-sensor-als.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index 384572844162..16ef9a37aeae 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -117,17 +117,6 @@ static const struct iio_chan_spec als_channels[] = {
 	IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP)
 };
 
-/* Adjust channel real bits based on report descriptor */
-static void als_adjust_channel_bit_mask(struct iio_chan_spec *channels,
-					int channel, int size)
-{
-	channels[channel].scan_type.sign = 's';
-	/* Real storage bits will change based on the report desc. */
-	channels[channel].scan_type.realbits = size * 8;
-	/* Maximum size of a sample to capture is u32 */
-	channels[channel].scan_type.storagebits = sizeof(u32) * 8;
-}
-
 /* Channel read_raw handler */
 static int als_read_raw(struct iio_dev *indio_dev,
 			      struct iio_chan_spec const *chan,
@@ -335,7 +324,7 @@ static int als_parse_report(struct platform_device *pdev,
 
 		channels[index] = als_channels[i];
 		st->als_scan_mask[0] |= BIT(i);
-		als_adjust_channel_bit_mask(channels, index, st->als[i].size);
+		hid_sensor_adjust_channel_bit_mask(channels, index, st->als[i].size);
 		++index;
 
 		dev_dbg(&pdev->dev, "als %x:%x\n", st->als[i].index,
-- 
2.51.0


^ permalink raw reply related

* [PATCH 3/7] iio: gyro: HID: Replace method gyro_3d_adjust_channel_bit_mask()
From: Natália Salvino André @ 2026-04-17 22:58 UTC (permalink / raw)
  To: andy, bentiss, dlechner, jic23, jikos, nuno.sa,
	srinivas.pandruvada
  Cc: Natália Salvino André, Pietro Di Consolo Gregorio,
	linux-iio, linux-input
In-Reply-To: <20260417225959.16688-1-natalia.andre@ime.usp.br>

Replace method gyro_3d_adjust_channel_bit_mask()
with helper method hid_sensor_adjust_channel_bit_mask().

Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
---
 drivers/iio/gyro/hid-sensor-gyro-3d.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c
index c340cc899a7c..15704e05ad32 100644
--- a/drivers/iio/gyro/hid-sensor-gyro-3d.c
+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c
@@ -82,17 +82,6 @@ static const struct iio_chan_spec gyro_3d_channels[] = {
 	IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP)
 };
 
-/* Adjust channel real bits based on report descriptor */
-static void gyro_3d_adjust_channel_bit_mask(struct iio_chan_spec *channels,
-						int channel, int size)
-{
-	channels[channel].scan_type.sign = 's';
-	/* Real storage bits will change based on the report desc. */
-	channels[channel].scan_type.realbits = size * 8;
-	/* Maximum size of a sample to capture is u32 */
-	channels[channel].scan_type.storagebits = sizeof(u32) * 8;
-}
-
 /* Channel read_raw handler */
 static int gyro_3d_read_raw(struct iio_dev *indio_dev,
 			      struct iio_chan_spec const *chan,
@@ -258,7 +247,7 @@ static int gyro_3d_parse_report(struct platform_device *pdev,
 				&st->gyro[CHANNEL_SCAN_INDEX_X + i]);
 		if (ret < 0)
 			break;
-		gyro_3d_adjust_channel_bit_mask(channels,
+		hid_sensor_adjust_channel_bit_mask(channels,
 				CHANNEL_SCAN_INDEX_X + i,
 				st->gyro[CHANNEL_SCAN_INDEX_X + i].size);
 	}
-- 
2.51.0


^ permalink raw reply related

* [PATCH 2/7] iio: accel: HID: Replace method accel_3d_adjust_channel_bit_mask()
From: Natália Salvino André @ 2026-04-17 22:58 UTC (permalink / raw)
  To: andy, bentiss, dlechner, jic23, jikos, nuno.sa,
	srinivas.pandruvada
  Cc: Natália Salvino André, Pietro Di Consolo Gregorio,
	linux-iio, linux-input
In-Reply-To: <20260417225959.16688-1-natalia.andre@ime.usp.br>

Replace method accel_3d_adjust_channel_bit_mask()
with helper method hid_sensor_adjust_channel_bit_mask().

Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
---
 drivers/iio/accel/hid-sensor-accel-3d.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c
index 2ff591b3458f..75f93b52a926 100644
--- a/drivers/iio/accel/hid-sensor-accel-3d.c
+++ b/drivers/iio/accel/hid-sensor-accel-3d.c
@@ -119,17 +119,6 @@ static const struct iio_chan_spec gravity_channels[] = {
 	IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP),
 };
 
-/* Adjust channel real bits based on report descriptor */
-static void accel_3d_adjust_channel_bit_mask(struct iio_chan_spec *channels,
-						int channel, int size)
-{
-	channels[channel].scan_type.sign = 's';
-	/* Real storage bits will change based on the report desc. */
-	channels[channel].scan_type.realbits = size * 8;
-	/* Maximum size of a sample to capture is u32 */
-	channels[channel].scan_type.storagebits = sizeof(u32) * 8;
-}
-
 /* Channel read_raw handler */
 static int accel_3d_read_raw(struct iio_dev *indio_dev,
 			      struct iio_chan_spec const *chan,
@@ -307,7 +296,7 @@ static int accel_3d_parse_report(struct platform_device *pdev,
 				&st->accel[CHANNEL_SCAN_INDEX_X + i]);
 		if (ret < 0)
 			break;
-		accel_3d_adjust_channel_bit_mask(channels,
+		hid_sensor_adjust_channel_bit_mask(channels,
 				CHANNEL_SCAN_INDEX_X + i,
 				st->accel[CHANNEL_SCAN_INDEX_X + i].size);
 	}
-- 
2.51.0


^ permalink raw reply related

* [PATCH 1/7] iio: HID: Add helper method hid_sensor_adjust_channel_bit_mask()
From: Natália Salvino André @ 2026-04-17 22:58 UTC (permalink / raw)
  To: andy, bentiss, dlechner, jic23, jikos, nuno.sa,
	srinivas.pandruvada
  Cc: Natália Salvino André, Pietro Di Consolo Gregorio,
	linux-iio, linux-input
In-Reply-To: <20260417225959.16688-1-natalia.andre@ime.usp.br>

Add helper method to deduplicate code in HID sensors.

Signed-off-by: Natália Salvino André <natalia.andre@ime.usp.br>
Co-developed-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
Signed-off-by: Pietro Di Consolo Gregorio <pietro.gregorio@usp.br>
---
 .../iio/common/hid-sensors/hid-sensor-attributes.c    | 11 +++++++++++
 include/linux/hid-sensor-hub.h                        |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
index c115a72832b2..12728cfa5d44 100644
--- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
+++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
@@ -589,6 +589,17 @@ int hid_sensor_parse_common_attributes(struct hid_sensor_hub_device *hsdev,
 }
 EXPORT_SYMBOL_NS(hid_sensor_parse_common_attributes, "IIO_HID");
 
+void hid_sensor_adjust_channel_bit_mask(struct iio_chan_spec *channels,
+					int channel, int size)
+{
+	channels[channel].scan_type.sign = 's';
+	/* Real storage bits will change based on the report desc. */
+	channels[channel].scan_type.realbits = size * 8;
+	/* Maximum size of a sample to capture is u32 */
+	channels[channel].scan_type.storagebits = sizeof(u32) * 8;
+}
+EXPORT_SYMBOL_NS(hid_sensor_adjust_channel_bit_mask, "IIO_HID");
+
 MODULE_AUTHOR("Srinivas Pandruvada <srinivas.pandruvada@intel.com>");
 MODULE_DESCRIPTION("HID Sensor common attribute processing");
 MODULE_LICENSE("GPL");
diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h
index e71056553108..6523d46c63e0 100644
--- a/include/linux/hid-sensor-hub.h
+++ b/include/linux/hid-sensor-hub.h
@@ -281,4 +281,7 @@ bool hid_sensor_batch_mode_supported(struct hid_sensor_common *st);
 int hid_sensor_set_report_latency(struct hid_sensor_common *st, int latency);
 int hid_sensor_get_report_latency(struct hid_sensor_common *st);
 
+void hid_sensor_adjust_channel_bit_mask(struct iio_chan_spec *channels,
+					int channel, int size);
+
 #endif
-- 
2.51.0


^ permalink raw reply related

* [PATCH 0/7] iio: HID: Add helper method hid_sensor_adjust_channel_bit_mask()
From: Natália Salvino André @ 2026-04-17 22:58 UTC (permalink / raw)
  To: andy, bentiss, dlechner, jic23, jikos, nuno.sa,
	srinivas.pandruvada
  Cc: Natália Salvino André, linux-iio, linux-input

This patch series introduces a generic helper function to handle channel bit mask adjustments 
for HID sensors. Currently, multiple drivers implement identical logic for this task

Natália Salvino André (7):
  iio: HID: Add helper method hid_sensor_adjust_channel_bit_mask()
  iio: accel: HID: Replace method accel_3d_adjust_channel_bit_mask()
  iio: gyro: HID: Replace method gyro_3d_adjust_channel_bit_mask()
  iio: light: HID: Replace method als_adjust_channel_bit_mask()
  iio: light: HID: Replace method prox_adjust_channel_bit_mask()
  iio: magnetometer: HID: Replace method
    magn_3d_adjust_channel_bit_mask()
  iio: pressure: HID: Replace method press_adjust_channel_bit_mask()

 drivers/iio/accel/hid-sensor-accel-3d.c             | 13 +------------
 .../iio/common/hid-sensors/hid-sensor-attributes.c  | 11 +++++++++++
 drivers/iio/gyro/hid-sensor-gyro-3d.c               | 13 +------------
 drivers/iio/light/hid-sensor-als.c                  | 13 +------------
 drivers/iio/light/hid-sensor-prox.c                 | 13 +------------
 drivers/iio/magnetometer/hid-sensor-magn-3d.c       | 13 +------------
 drivers/iio/pressure/hid-sensor-press.c             | 13 +------------
 include/linux/hid-sensor-hub.h                      |  3 +++
 8 files changed, 20 insertions(+), 72 deletions(-)

-- 
2.51.0


^ permalink raw reply

* Re: [PATCH v4 2/6] dt-bindings: input: cpcap-pwrbutton: convert to DT schema
From: Rob Herring (Arm) @ 2026-04-17 21:53 UTC (permalink / raw)
  To: Svyatoslav Ryhel
  Cc: Tony Lindgren, Pavel Machek, devicetree, David Lechner,
	linux-kernel, Conor Dooley, Dmitry Torokhov, Lee Jones,
	linux-input, linux-leds, Krzysztof Kozlowski
In-Reply-To: <20260417071106.21984-3-clamor95@gmail.com>


On Fri, 17 Apr 2026 10:11:02 +0300, Svyatoslav Ryhel wrote:
> Convert power button devicetree bindings for the Motorola CPCAP MFD from
> TXT to YAML format. This patch does not change any functionality; the
> bindings remain the same.
> 
> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
> ---
>  .../bindings/input/cpcap-pwrbutton.txt        | 20 ------------
>  .../input/motorola,cpcap-pwrbutton.yaml       | 32 +++++++++++++++++++
>  2 files changed, 32 insertions(+), 20 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/input/cpcap-pwrbutton.txt
>  create mode 100644 Documentation/devicetree/bindings/input/motorola,cpcap-pwrbutton.yaml
> 

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:


doc reference errors (make refcheckdocs):
Warning: Documentation/devicetree/bindings/input/motorola,cpcap-pwrbutton.yaml references a file that doesn't exist: Documentation/devicetree/bindings/mfd/motorola,cpcap.yaml
Warning: Documentation/devicetree/bindings/mfd/motorola-cpcap.txt references a file that doesn't exist: Documentation/devicetree/bindings/input/cpcap-pwrbutton.txt
Documentation/devicetree/bindings/input/motorola,cpcap-pwrbutton.yaml: Documentation/devicetree/bindings/mfd/motorola,cpcap.yaml
Documentation/devicetree/bindings/mfd/motorola-cpcap.txt: Documentation/devicetree/bindings/input/cpcap-pwrbutton.txt

See https://patchwork.kernel.org/project/devicetree/patch/20260417071106.21984-3-clamor95@gmail.com

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.


^ permalink raw reply

* Re: [PATCH v4 1/6] dt-bindings: leds: leds-cpcap: convert to DT schema
From: Rob Herring (Arm) @ 2026-04-17 21:53 UTC (permalink / raw)
  To: Svyatoslav Ryhel
  Cc: devicetree, Krzysztof Kozlowski, linux-input, Lee Jones,
	Dmitry Torokhov, Conor Dooley, David Lechner, Pavel Machek,
	Tony Lindgren, linux-leds, linux-kernel
In-Reply-To: <20260417071106.21984-2-clamor95@gmail.com>


On Fri, 17 Apr 2026 10:11:01 +0300, Svyatoslav Ryhel wrote:
> Convert LEDs devicetree bindings for the Motorola CPCAP MFD from TXT to
> YAML format. This patch does not change any functionality; the bindings
> remain the same.
> 
> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
> ---
>  .../devicetree/bindings/leds/leds-cpcap.txt   | 29 -------------
>  .../bindings/leds/motorola,cpcap-leds.yaml    | 42 +++++++++++++++++++
>  2 files changed, 42 insertions(+), 29 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/leds/leds-cpcap.txt
>  create mode 100644 Documentation/devicetree/bindings/leds/motorola,cpcap-leds.yaml
> 

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:


doc reference errors (make refcheckdocs):
Warning: Documentation/devicetree/bindings/leds/motorola,cpcap-leds.yaml references a file that doesn't exist: Documentation/devicetree/bindings/mfd/motorola,cpcap.yaml
Warning: Documentation/devicetree/bindings/mfd/motorola-cpcap.txt references a file that doesn't exist: Documentation/devicetree/bindings/leds/leds-cpcap.txt
Documentation/devicetree/bindings/leds/motorola,cpcap-leds.yaml: Documentation/devicetree/bindings/mfd/motorola,cpcap.yaml
Documentation/devicetree/bindings/mfd/motorola-cpcap.txt: Documentation/devicetree/bindings/leds/leds-cpcap.txt

See https://patchwork.kernel.org/project/devicetree/patch/20260417071106.21984-2-clamor95@gmail.com

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.


^ permalink raw reply

* Re: [PATCH v2 2/2] input: misc: Add PixArt PAJ7620 gesture sensor driver
From: Dmitry Torokhov @ 2026-04-17 21:24 UTC (permalink / raw)
  To: Harpreet Saini
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, David Lechner,
	devicetree, linux-input, linux-kernel
In-Reply-To: <20260417052527.62535-3-sainiharpreet29@yahoo.com>

Hi Harpreet,

On Fri, Apr 17, 2026 at 01:25:27AM -0400, Harpreet Saini wrote:
> This driver adds support for the PixArt PAJ7620 gesture sensor.
> It implements hand gesture recognition (up, down, left, right,
> etc.) and reports them as standard input key events. The driver
> includes power management support via Runtime PM.

Sashiko has identified a number of valid concerns, please address them.

Also consider:

- moving powering up and down the chip into open()/close() for input
  device
- getting keymap from device properties and allowing adjusting it from
  userspace vi EVIOCSKEYCODE
- no capitals in type names
- use 'error' instead of 'ret' for variables holding only error code
  or 0.

Thanks.

-- 
Dmitry

^ permalink raw reply

* [PATCH] HID: playstation: Clamp num_touch_reports
From: T.J. Mercier @ 2026-04-17 15:47 UTC (permalink / raw)
  To: roderick.colenbrander, linux-input, Jiri Kosina,
	Benjamin Tissoires
  Cc: T.J. Mercier, stable, Xingyu Jin, Roderick Colenbrander,
	linux-kernel

A device would never lie about the number of touch reports would it?

If it does the loop in dualshock4_parse_report will read off the end of
the touch_reports array, up to about 2 KiB for the maximum number of 256
loop iteraions. The data that is read is emitted via evdev if the
DS4_TOUCH_POINT_INACTIVE bit happens to be set. Protect against this by
clamping the num_touch_reports value provided by the device to the
maximum size of the touch_reports array.

Fixes: 752038248808 ("HID: playstation: add DualShock4 touchpad support.")
Cc: stable@vger.kernel.org
Reported-by: Xingyu Jin <xingyuj@google.com>
Signed-off-by: T.J. Mercier <tjmercier@google.com>
---
 drivers/hid/hid-playstation.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/hid/hid-playstation.c b/drivers/hid/hid-playstation.c
index 3c0db8f93c82..8d06ddff356a 100644
--- a/drivers/hid/hid-playstation.c
+++ b/drivers/hid/hid-playstation.c
@@ -2378,7 +2378,8 @@ static int dualshock4_parse_report(struct ps_device *ps_dev, struct hid_report *
 			(struct dualshock4_input_report_usb *)data;
 
 		ds4_report = &usb->common;
-		num_touch_reports = usb->num_touch_reports;
+		num_touch_reports = min_t(u8, usb->num_touch_reports,
+					  ARRAY_SIZE(usb->touch_reports));
 		touch_reports = usb->touch_reports;
 	} else if (hdev->bus == BUS_BLUETOOTH && report->id == DS4_INPUT_REPORT_BT &&
 		   size == DS4_INPUT_REPORT_BT_SIZE) {
@@ -2392,7 +2393,8 @@ static int dualshock4_parse_report(struct ps_device *ps_dev, struct hid_report *
 		}
 
 		ds4_report = &bt->common;
-		num_touch_reports = bt->num_touch_reports;
+		num_touch_reports = min_t(u8, bt->num_touch_reports,
+					  ARRAY_SIZE(bt->touch_reports));
 		touch_reports = bt->touch_reports;
 	} else if (hdev->bus == BUS_BLUETOOTH &&
 		   report->id == DS4_INPUT_REPORT_BT_MINIMAL &&

base-commit: 3cd8b194bf3428dfa53120fee47e827a7c495815
-- 
2.54.0.rc1.513.gad8abe7a5a-goog


^ permalink raw reply related

* Re: [PATCH] iio: magnetometer: hid-sensor-magn-3d: prefer 'unsigned int'
From: Joshua Crofts @ 2026-04-17 11:40 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: jikos, jic23, srinivas.pandruvada, dlechner, nuno.sa, andy,
	linux-input, linux-iio, linux-kernel
In-Reply-To: <aeIajr-NaBGdhvK9@ashevche-desk.local>

On Fri, 17 Apr 2026 at 13:33, Andy Shevchenko
<andriy.shevchenko@intel.com> wrote:
> Please, use the same types as defined in the respective data structure.
> https://elixir.bootlin.com/linux/v7.0/source/include/linux/hid-sensor-hub.h#L87

Fair enough, I'll send a version using u32 tomorrow.

-- 
Kind regards

CJD

^ permalink raw reply

* Re: [PATCH] iio: magnetometer: hid-sensor-magn-3d: prefer 'unsigned int'
From: Andy Shevchenko @ 2026-04-17 11:33 UTC (permalink / raw)
  To: Joshua Crofts
  Cc: jikos, jic23, srinivas.pandruvada, dlechner, nuno.sa, andy,
	linux-input, linux-iio, linux-kernel
In-Reply-To: <20260417112808.1280-1-joshua.crofts1@gmail.com>

On Fri, Apr 17, 2026 at 11:28:08AM +0000, Joshua Crofts wrote:
> Use 'unsigned int' instead of bare 'unsigned' to resolve checkpatch.pl
> warnings and adhere to kernel coding style.
> 
> No functional change.

Please, use the same types as defined in the respective data structure.
https://elixir.bootlin.com/linux/v7.0/source/include/linux/hid-sensor-hub.h#L87

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply

* [PATCH] iio: magnetometer: hid-sensor-magn-3d: prefer 'unsigned int'
From: Joshua Crofts @ 2026-04-17 11:28 UTC (permalink / raw)
  To: jikos, jic23, srinivas.pandruvada
  Cc: dlechner, nuno.sa, andy, linux-input, linux-iio, linux-kernel,
	Joshua Crofts

Use 'unsigned int' instead of bare 'unsigned' to resolve checkpatch.pl
warnings and adhere to kernel coding style.

No functional change.

Signed-off-by: Joshua Crofts <joshua.crofts1@gmail.com>
---
 drivers/iio/magnetometer/hid-sensor-magn-3d.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/magnetometer/hid-sensor-magn-3d.c b/drivers/iio/magnetometer/hid-sensor-magn-3d.c
index c673f9323e..67550f16a9 100644
--- a/drivers/iio/magnetometer/hid-sensor-magn-3d.c
+++ b/drivers/iio/magnetometer/hid-sensor-magn-3d.c
@@ -280,7 +280,7 @@ static const struct iio_info magn_3d_info = {
 
 /* Callback handler to send event after all samples are received and captured */
 static int magn_3d_proc_event(struct hid_sensor_hub_device *hsdev,
-				unsigned usage_id,
+				unsigned int usage_id,
 				void *priv)
 {
 	struct iio_dev *indio_dev = platform_get_drvdata(priv);
@@ -302,7 +302,7 @@ static int magn_3d_proc_event(struct hid_sensor_hub_device *hsdev,
 
 /* Capture samples in local storage */
 static int magn_3d_capture_sample(struct hid_sensor_hub_device *hsdev,
-				unsigned usage_id,
+				unsigned int usage_id,
 				size_t raw_len, char *raw_data,
 				void *priv)
 {
@@ -350,7 +350,7 @@ static int magn_3d_parse_report(struct platform_device *pdev,
 				struct hid_sensor_hub_device *hsdev,
 				struct iio_chan_spec **channels,
 				int *chan_count,
-				unsigned usage_id,
+				unsigned int usage_id,
 				struct magn_3d_state *st)
 {
 	int i;
-- 
2.47.3


^ permalink raw reply related

* Re: [PATCH v2 2/2] input: misc: Add PixArt PAJ7620 gesture sensor driver
From: Krzysztof Kozlowski @ 2026-04-17  9:39 UTC (permalink / raw)
  To: Harpreet Saini
  Cc: Dmitry Torokhov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	David Lechner, devicetree, linux-input, linux-kernel
In-Reply-To: <20260417052527.62535-3-sainiharpreet29@yahoo.com>

On Fri, Apr 17, 2026 at 01:25:27AM -0400, Harpreet Saini wrote:
> +
> +static int paj7620_init(struct paj7620_data *data)
> +{
> +	int state = 0, ret, i;
> +
> +	/* 1. Wake-up sequence: Read register 0x00 until it returns 0x20 */
> +	for (i = 0; i < 10; i++) {
> +		ret = regmap_read(data->regmap, 0x00, &state);
> +		if (ret >= 0 && state == 0x20)
> +			break;
> +		usleep_range(1000, 2000);
> +	}
> +
> +	if (state != 0x20) {
> +		dev_err(&data->client->dev, "Sensor wake-up failed (0x%02x)\n", state);
> +		return -ENODEV;
> +	}
> +
> +	/* 2. Blast full register array into PAJ7620 instantly */
> +	ret = regmap_multi_reg_write(data->regmap, Init_Register,
> +				     ARRAY_SIZE(Init_Register));
> +	if (ret < 0) {
> +		dev_err(&data->client->dev, "Multi-reg write failed (%d)\n", ret);
> +		return ret;
> +	}
> +
> +	ret = regmap_write(data->regmap, PAJ7620_REG_BANK_SEL, 0x00);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = regmap_multi_reg_write(data->regmap, Init_Gesture_Array,
> +				     ARRAY_SIZE(Init_Gesture_Array));
> +	if (ret < 0) {
> +		dev_err(&data->client->dev, "Multi-reg write failed (%d)\n", ret);
> +		return ret;
> +	}
> +
> +	dev_info(&data->client->dev, "Gesture Sensor Registers Initialized\n");

Drop, driver should be silent.

...

> +	data->client = client;
> +	i2c_set_clientdata(client, data);
> +
> +	data->supplies[0].supply = "vdd";
> +	data->supplies[1].supply = "vbus";
> +	data->supplies[2].supply = "vled";
> +
> +	ret = devm_regulator_bulk_get(&client->dev, ARRAY_SIZE(data->supplies), data->supplies);
> +	if (ret)
> +		return dev_err_probe(&client->dev, ret, "Failed to get regulators\n");
> +
> +	ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies);
> +	if (ret)
> +		return ret;
> +
> +	data->regmap = devm_regmap_init_i2c(client, &paj7620_reg_config);
> +	if (IS_ERR(data->regmap))
> +		return PTR_ERR(data->regmap);

Leaking regulator enable.

> +
> +	ret = paj7620_init(data);
> +	if (ret)
> +		goto err_reg;
> +
> +	data->idev = devm_input_allocate_device(&client->dev);
> +	if (!data->idev) {
> +		ret = -ENOMEM; goto err_reg;

Messed syntax/wrapped lines.

And you must not print error msg on ENOMEM error.

> +	}
> +
> +	data->idev->name = "PAJ7620 Gesture Sensor";
> +	data->idev->id.bustype = BUS_I2C;
> +
> +	input_set_capability(data->idev, EV_KEY, KEY_UP);
> +	input_set_capability(data->idev, EV_KEY, KEY_DOWN);
> +	input_set_capability(data->idev, EV_KEY, KEY_LEFT);
> +	input_set_capability(data->idev, EV_KEY, KEY_RIGHT);
> +	input_set_capability(data->idev, EV_KEY, KEY_ENTER);
> +	input_set_capability(data->idev, EV_KEY, KEY_BACK);
> +	input_set_capability(data->idev, EV_KEY, KEY_NEXT);
> +	input_set_capability(data->idev, EV_KEY, KEY_PREVIOUS);
> +	input_set_capability(data->idev, EV_KEY, KEY_MENU);
> +
> +	ret = input_register_device(data->idev);
> +	if (ret)
> +		goto err_reg;
> +
> +	pm_runtime_set_active(&client->dev);
> +	pm_runtime_enable(&client->dev);
> +	pm_runtime_set_autosuspend_delay(&client->dev, 2000);
> +	pm_runtime_use_autosuspend(&client->dev);
> +
> +	ret = devm_request_threaded_irq(&client->dev, client->irq, NULL,
> +					paj7620_irq_thread, IRQF_ONESHOT,
> +					"paj7620", data);
> +	if (ret)
> +		goto err_reg;
> +
> +	dev_info(&client->dev, "Gesture Sensor Initialized\n");

Pointless message, drop. Driver should be silent on success.


> +	return 0;
> +
> +err_reg:
> +	dev_err_probe(&client->dev, ret, "%s: failed with error %d\n", __func__, ret);

No, move it to individual errors, but only where applicable. For example
devm_request_threaded_irq() must not have it.

Neither devm_input_allocate_device.


> +	if (pm_runtime_enabled(&client->dev)) {
> +		pm_runtime_disable(&client->dev);
> +		pm_runtime_dont_use_autosuspend(&client->dev);
> +	}
> +	regulator_bulk_disable(ARRAY_SIZE(data->supplies), data->supplies);
> +	return ret;
> +}
> +
> +static void paj7620_remove(struct i2c_client *client)
> +{
> +	int ret;
> +	struct paj7620_data *data = i2c_get_clientdata(client);
> +
> +	pm_runtime_get_sync(&client->dev);
> +	pm_runtime_disable(&client->dev);
> +	pm_runtime_dont_use_autosuspend(&client->dev);
> +	pm_runtime_put_noidle(&client->dev);
> +
> +	ret = paj7620_power_down(data);
> +	if (ret)
> +		dev_err(&data->client->dev, "Sensor power down failed\n");
> +
> +	ret = regulator_bulk_disable(ARRAY_SIZE(data->supplies), data->supplies);
> +	if (ret)
> +		dev_err(&data->client->dev, "Sensor regulator disable failed\n");
> +}
> +
> +static const struct of_device_id paj7620_of_match[] = {
> +	{ .compatible = "pixart,paj7620" },
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(of, paj7620_of_match);
> +
> +static struct i2c_driver paj7620_driver = {
> +	.driver = {
> +		.name = "paj7620",
> +		.of_match_table = paj7620_of_match,
> +		.pm = &paj7620_pm_ops,
> +	},
> +	.probe = paj7620_probe,
> +	.remove = paj7620_remove,
> +};
> +module_i2c_driver(paj7620_driver);
> +
> +MODULE_LICENSE("GPL");
> +MODULE_AUTHOR("Harpreet Saini");
> +MODULE_DESCRIPTION("PAJ7620 Gesture Input Driver");
> -- 
> 2.43.0
> 

^ permalink raw reply

* Re: [PATCH v2 1/2] dt-bindings: input: Add PixArt PAJ7620 gesture sensor
From: Krzysztof Kozlowski @ 2026-04-17  9:34 UTC (permalink / raw)
  To: Harpreet Saini
  Cc: Dmitry Torokhov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	David Lechner, devicetree, linux-input, linux-kernel
In-Reply-To: <20260417052527.62535-2-sainiharpreet29@yahoo.com>

On Fri, Apr 17, 2026 at 01:25:26AM -0400, Harpreet Saini wrote:
> Signed-off-by: Harpreet Saini <sainiharpreet29@yahoo.com>
> ---
>  .../bindings/input/pixart,paj7620.yaml        | 70 +++++++++++++++++++
>  .../devicetree/bindings/vendor-prefixes.yaml  |  2 +
>  2 files changed, 72 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/input/pixart,paj7620.yaml
> 

Comments from v1 apply. Respond to the instead of ignoring.

> diff --git a/Documentation/devicetree/bindings/input/pixart,paj7620.yaml b/Documentation/devicetree/bindings/input/pixart,paj7620.yaml
> new file mode 100644
> index 000000000000..d4f58b712810
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/pixart,paj7620.yaml
> @@ -0,0 +1,70 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org
> +$schema: http://devicetree.org

There is no such syntax. Don't invent own coding style.

Best regards,
Krzysztof


^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox