diff --git a/repos/dde_linux/recipes/src/usb_hid_drv/content.mk b/repos/dde_linux/recipes/src/usb_hid_drv/content.mk new file mode 100644 index 0000000000..f7e4013edb --- /dev/null +++ b/repos/dde_linux/recipes/src/usb_hid_drv/content.mk @@ -0,0 +1,11 @@ +MIRROR_FROM_REP_DIR := src/drivers/usb_hid + +content: $(MIRROR_FROM_REP_DIR) +$(MIRROR_FROM_REP_DIR): + $(mirror_from_rep_dir) + +PORT_DIR := $(call port_dir,$(GENODE_DIR)/repos/dde_linux/ports/linux) + +content: LICENSE +LICENSE: + cp $(PORT_DIR)/src/linux/COPYING $@ diff --git a/repos/dde_linux/recipes/src/usb_hid_drv/hash b/repos/dde_linux/recipes/src/usb_hid_drv/hash new file mode 100644 index 0000000000..bab11d3b38 --- /dev/null +++ b/repos/dde_linux/recipes/src/usb_hid_drv/hash @@ -0,0 +1 @@ +2023-07-04-e 3ad103c64cb765420638f0dccaed76d7b702b7e5 diff --git a/repos/dde_linux/recipes/src/usb_hid_drv/used_apis b/repos/dde_linux/recipes/src/usb_hid_drv/used_apis new file mode 100644 index 0000000000..f8a20a9841 --- /dev/null +++ b/repos/dde_linux/recipes/src/usb_hid_drv/used_apis @@ -0,0 +1,8 @@ +base +event_session +genode_c_api +jitterentropy +os +report_session +usb_session +virt_linux diff --git a/repos/dde_linux/src/drivers/usb_hid/README b/repos/dde_linux/src/drivers/usb_hid/README new file mode 100644 index 0000000000..d2d304d001 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/README @@ -0,0 +1,29 @@ +USB HID driver +############## + +Supports keyboard and mouse connected via USB. It connects to one or multiple +USB sessions and reports input events to an event session. A run script can be +found under 'run/usb_hid_raw.run'. + +Configuration snippet: + +! +! +! +! + +When the use_report attribute is set, the HID driver will request a ROM called +"report" that is used to iterate over all devices provided by the USB host +controller driver (resp. a rom filter). In that mode the driver tries to +claim all HID devices (class 0x3) via dedicated USB sessions. + + +Keyboard LED handling +~~~~~~~~~~~~~~~~~~~~~ + +The state of the keyboard LEDs like capslock can be controlled by providing +a corresponding ROM to the driver and configure it appropriately: + +!... +! +!... diff --git a/repos/dde_linux/src/drivers/usb_hid/dep.list b/repos/dde_linux/src/drivers/usb_hid/dep.list new file mode 100644 index 0000000000..5d11304586 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/dep.list @@ -0,0 +1,1230 @@ +arch/arm64/include/asm/alternative.h +arch/arm64/include/asm/alternative-macros.h +arch/arm64/include/asm/archrandom.h +arch/arm64/include/asm/arch_timer.h +arch/arm64/include/asm/asm-bug.h +arch/arm64/include/asm/asm-extable.h +arch/arm64/include/asm/asm-offsets.h +arch/arm64/include/asm/assembler.h +arch/arm64/include/asm/atomic.h +arch/arm64/include/asm/atomic_ll_sc.h +arch/arm64/include/asm/barrier.h +arch/arm64/include/asm/bitops.h +arch/arm64/include/asm/boot.h +arch/arm64/include/asm/brk-imm.h +arch/arm64/include/asm/bug.h +arch/arm64/include/asm/cacheflush.h +arch/arm64/include/asm/cache.h +arch/arm64/include/asm/checksum.h +arch/arm64/include/asm/clocksource.h +arch/arm64/include/asm/cmpxchg.h +arch/arm64/include/asm/compat.h +arch/arm64/include/asm/compiler.h +arch/arm64/include/asm/cpufeature.h +arch/arm64/include/asm/cputype.h +arch/arm64/include/asm/debug-monitors.h +arch/arm64/include/asm/device.h +arch/arm64/include/asm/elf.h +arch/arm64/include/asm/esr.h +arch/arm64/include/asm/exec.h +arch/arm64/include/asm/extable.h +arch/arm64/include/asm/fpsimd.h +arch/arm64/include/asm/ftrace.h +arch/arm64/include/asm/gpr-num.h +arch/arm64/include/asm/hardirq.h +arch/arm64/include/asm/hw_breakpoint.h +arch/arm64/include/asm/hwcap.h +arch/arm64/include/asm/insn-def.h +arch/arm64/include/asm/insn.h +arch/arm64/include/asm/io.h +arch/arm64/include/asm/irq.h +arch/arm64/include/asm/irq_work.h +arch/arm64/include/asm/kasan.h +arch/arm64/include/asm/kernel-pgtable.h +arch/arm64/include/asm/kgdb.h +arch/arm64/include/asm/kprobes.h +arch/arm64/include/asm/kvm_arm.h +arch/arm64/include/asm/linkage.h +arch/arm64/include/asm/lse.h +arch/arm64/include/asm/mman.h +arch/arm64/include/asm/mmu_context.h +arch/arm64/include/asm/mmu.h +arch/arm64/include/asm/module.h +arch/arm64/include/asm/mte-def.h +arch/arm64/include/asm/mte.h +arch/arm64/include/asm/mte-kasan.h +arch/arm64/include/asm/page-def.h +arch/arm64/include/asm/percpu.h +arch/arm64/include/asm/pgtable-hwdef.h +arch/arm64/include/asm/pgtable-prot.h +arch/arm64/include/asm/pgtable-types.h +arch/arm64/include/asm/pointer_auth.h +arch/arm64/include/asm/preempt.h +arch/arm64/include/asm/processor.h +arch/arm64/include/asm/proc-fns.h +arch/arm64/include/asm/ptrace.h +arch/arm64/include/asm/rwonce.h +arch/arm64/include/asm/sections.h +arch/arm64/include/asm/shmparam.h +arch/arm64/include/asm/signal.h +arch/arm64/include/asm/smp.h +arch/arm64/include/asm/sparsemem.h +arch/arm64/include/asm/spectre.h +arch/arm64/include/asm/spinlock_types.h +arch/arm64/include/asm/stack_pointer.h +arch/arm64/include/asm/stat.h +arch/arm64/include/asm/string.h +arch/arm64/include/asm/syscall_wrapper.h +arch/arm64/include/asm/sysreg.h +arch/arm64/include/asm/thread_info.h +arch/arm64/include/asm/timex.h +arch/arm64/include/asm/tlbflush.h +arch/arm64/include/asm/topology.h +arch/arm64/include/asm/uaccess.h +arch/arm64/include/asm/unistd.h +arch/arm64/include/asm/vdso/clocksource.h +arch/arm64/include/asm/vdso/processor.h +arch/arm64/include/asm/virt.h +arch/arm64/include/asm/vmalloc.h +arch/arm64/include/asm/word-at-a-time.h +arch/arm64/include/uapi/asm/auxvec.h +arch/arm64/include/uapi/asm/bitsperlong.h +arch/arm64/include/uapi/asm/bpf_perf_event.h +arch/arm64/include/uapi/asm/byteorder.h +arch/arm64/include/uapi/asm/fcntl.h +arch/arm64/include/uapi/asm/hwcap.h +arch/arm64/include/uapi/asm/mman.h +arch/arm64/include/uapi/asm/param.h +arch/arm64/include/uapi/asm/perf_regs.h +arch/arm64/include/uapi/asm/posix_types.h +arch/arm64/include/uapi/asm/ptrace.h +arch/arm64/include/uapi/asm/sigcontext.h +arch/arm64/include/uapi/asm/signal.h +arch/arm64/include/uapi/asm/sve_context.h +arch/arm64/include/uapi/asm/unistd.h +arch/arm/include/asm/archrandom.h +arch/arm/include/asm/asm-offsets.h +arch/arm/include/asm/assembler.h +arch/arm/include/asm/atomic.h +arch/arm/include/asm/auxvec.h +arch/arm/include/asm/barrier.h +arch/arm/include/asm/bitops.h +arch/arm/include/asm/bug.h +arch/arm/include/asm/cacheflush.h +arch/arm/include/asm/cache.h +arch/arm/include/asm/cachetype.h +arch/arm/include/asm/checksum.h +arch/arm/include/asm/cmpxchg.h +arch/arm/include/asm/compiler.h +arch/arm/include/asm/cpu.h +arch/arm/include/asm/cputype.h +arch/arm/include/asm/device.h +arch/arm/include/asm/div64.h +arch/arm/include/asm/domain.h +arch/arm/include/asm/elf.h +arch/arm/include/asm/fpstate.h +arch/arm/include/asm/ftrace.h +arch/arm/include/asm/glue-cache.h +arch/arm/include/asm/glue.h +arch/arm/include/asm/glue-proc.h +arch/arm/include/asm/hardirq.h +arch/arm/include/asm/hw_breakpoint.h +arch/arm/include/asm/hwcap.h +arch/arm/include/asm/hw_irq.h +arch/arm/include/asm/insn.h +arch/arm/include/asm/io.h +arch/arm/include/asm/irq.h +arch/arm/include/asm/irq_work.h +arch/arm/include/asm/kprobes.h +arch/arm/include/asm/linkage.h +arch/arm/include/asm/mmu_context.h +arch/arm/include/asm/mmu.h +arch/arm/include/asm/module.h +arch/arm/include/asm/opcodes.h +arch/arm/include/asm/opcodes-virt.h +arch/arm/include/asm/outercache.h +arch/arm/include/asm/page-nommu.h +arch/arm/include/asm/percpu.h +arch/arm/include/asm/processor.h +arch/arm/include/asm/proc-fns.h +arch/arm/include/asm/ptrace.h +arch/arm/include/asm/sections.h +arch/arm/include/asm/shmparam.h +arch/arm/include/asm/signal.h +arch/arm/include/asm/smp.h +arch/arm/include/asm/smp_plat.h +arch/arm/include/asm/spinlock_types.h +arch/arm/include/asm/string.h +arch/arm/include/asm/swab.h +arch/arm/include/asm/switch_to.h +arch/arm/include/asm/thread_info.h +arch/arm/include/asm/timex.h +arch/arm/include/asm/topology.h +arch/arm/include/asm/uaccess-asm.h +arch/arm/include/asm/uaccess.h +arch/arm/include/asm/unified.h +arch/arm/include/asm/unistd.h +arch/arm/include/asm/unwind.h +arch/arm/include/asm/user.h +arch/arm/include/asm/vdso/cp15.h +arch/arm/include/asm/vdso_datapage.h +arch/arm/include/asm/vdso/gettimeofday.h +arch/arm/include/asm/vdso/processor.h +arch/arm/include/asm/vmalloc.h +arch/arm/include/asm/word-at-a-time.h +arch/arm/include/uapi/asm/auxvec.h +arch/arm/include/uapi/asm/byteorder.h +arch/arm/include/uapi/asm/fcntl.h +arch/arm/include/uapi/asm/hwcap.h +arch/arm/include/uapi/asm/mman.h +arch/arm/include/uapi/asm/perf_regs.h +arch/arm/include/uapi/asm/posix_types.h +arch/arm/include/uapi/asm/ptrace.h +arch/arm/include/uapi/asm/sigcontext.h +arch/arm/include/uapi/asm/signal.h +arch/arm/include/uapi/asm/stat.h +arch/arm/include/uapi/asm/swab.h +arch/arm/include/uapi/asm/types.h +arch/arm/include/uapi/asm/unistd.h +arch/arm/lib/bitops.h +arch/x86/include/asm/alternative.h +arch/x86/include/asm/apicdef.h +arch/x86/include/asm/arch_hweight.h +arch/x86/include/asm/archrandom.h +arch/x86/include/asm/asm.h +arch/x86/include/asm/atomic64_64.h +arch/x86/include/asm/atomic.h +arch/x86/include/asm/barrier.h +arch/x86/include/asm/bitops.h +arch/x86/include/asm/bug.h +arch/x86/include/asm/cacheflush.h +arch/x86/include/asm/cache.h +arch/x86/include/asm/checksum_32.h +arch/x86/include/asm/checksum_64.h +arch/x86/include/asm/checksum.h +arch/x86/include/asm/clocksource.h +arch/x86/include/asm/cmpxchg_32.h +arch/x86/include/asm/cmpxchg_64.h +arch/x86/include/asm/cmpxchg.h +arch/x86/include/asm/compat.h +arch/x86/include/asm/cpu_entry_area.h +arch/x86/include/asm/cpufeature.h +arch/x86/include/asm/cpufeatures.h +arch/x86/include/asm/cpu.h +arch/x86/include/asm/cpumask.h +arch/x86/include/asm/delay.h +arch/x86/include/asm/desc_defs.h +arch/x86/include/asm/desc.h +arch/x86/include/asm/device.h +arch/x86/include/asm/disabled-features.h +arch/x86/include/asm/div64.h +arch/x86/include/asm/elf.h +arch/x86/include/asm/emergency-restart.h +arch/x86/include/asm/exec.h +arch/x86/include/asm/extable_fixup_types.h +arch/x86/include/asm/extable.h +arch/x86/include/asm/fixmap.h +arch/x86/include/asm/fpu/api.h +arch/x86/include/asm/fpu/types.h +arch/x86/include/asm/fsgsbase.h +arch/x86/include/asm/ftrace.h +arch/x86/include/asm/hardirq.h +arch/x86/include/asm/hw_breakpoint.h +arch/x86/include/asm/hw_irq.h +arch/x86/include/asm/ibt.h +arch/x86/include/asm/intel_ds.h +arch/x86/include/asm/invpcid.h +arch/x86/include/asm/irq.h +arch/x86/include/asm/irq_stack.h +arch/x86/include/asm/irq_vectors.h +arch/x86/include/asm/irq_work.h +arch/x86/include/asm/ist.h +arch/x86/include/asm/kaslr.h +arch/x86/include/asm/kdebug.h +arch/x86/include/asm/kprobes.h +arch/x86/include/asm/kvm_para.h +arch/x86/include/asm/linkage.h +arch/x86/include/asm/local.h +arch/x86/include/asm/math_emu.h +arch/x86/include/asm/mem_encrypt.h +arch/x86/include/asm/mmu_context.h +arch/x86/include/asm/mmu.h +arch/x86/include/asm/module.h +arch/x86/include/asm/msr.h +arch/x86/include/asm/msr-index.h +arch/x86/include/asm/nops.h +arch/x86/include/asm/orc_types.h +arch/x86/include/asm/page_32.h +arch/x86/include/asm/page_32_types.h +arch/x86/include/asm/page_64_types.h +arch/x86/include/asm/page_types.h +arch/x86/include/asm/paravirt.h +arch/x86/include/asm/percpu.h +arch/x86/include/asm/perf_event.h +arch/x86/include/asm/pgtable-2level_types.h +arch/x86/include/asm/pgtable_32_areas.h +arch/x86/include/asm/pgtable_32_types.h +arch/x86/include/asm/pgtable_64_types.h +arch/x86/include/asm/pgtable_areas.h +arch/x86/include/asm/pgtable_types.h +arch/x86/include/asm/posix_types.h +arch/x86/include/asm/preempt.h +arch/x86/include/asm/processor-flags.h +arch/x86/include/asm/processor.h +arch/x86/include/asm/proto.h +arch/x86/include/asm/pti.h +arch/x86/include/asm/ptrace.h +arch/x86/include/asm/required-features.h +arch/x86/include/asm/rmwcc.h +arch/x86/include/asm/segment.h +arch/x86/include/asm/shared/msr.h +arch/x86/include/asm/shared/tdx.h +arch/x86/include/asm/shmparam.h +arch/x86/include/asm/signal.h +arch/x86/include/asm/smap.h +arch/x86/include/asm/smp.h +arch/x86/include/asm/softirq_stack.h +arch/x86/include/asm/sparsemem.h +arch/x86/include/asm/spinlock_types.h +arch/x86/include/asm/stacktrace.h +arch/x86/include/asm/static_call.h +arch/x86/include/asm/string_64.h +arch/x86/include/asm/string.h +arch/x86/include/asm/syscall_wrapper.h +arch/x86/include/asm/tdx.h +arch/x86/include/asm/text-patching.h +arch/x86/include/asm/thread_info.h +arch/x86/include/asm/timex.h +arch/x86/include/asm/tlbbatch.h +arch/x86/include/asm/tlbflush.h +arch/x86/include/asm/topology.h +arch/x86/include/asm/trace_clock.h +arch/x86/include/asm/tsc.h +arch/x86/include/asm/uaccess.h +arch/x86/include/asm/unistd.h +arch/x86/include/asm/unwind_hints.h +arch/x86/include/asm/user_32.h +arch/x86/include/asm/user32.h +arch/x86/include/asm/user_64.h +arch/x86/include/asm/user.h +arch/x86/include/asm/vdso/clocksource.h +arch/x86/include/asm/vdso.h +arch/x86/include/asm/vdso/processor.h +arch/x86/include/asm/vmalloc.h +arch/x86/include/asm/vmxfeatures.h +arch/x86/include/asm/word-at-a-time.h +arch/x86/include/uapi/asm/auxvec.h +arch/x86/include/uapi/asm/bitsperlong.h +arch/x86/include/uapi/asm/bootparam.h +arch/x86/include/uapi/asm/byteorder.h +arch/x86/include/uapi/asm/hw_breakpoint.h +arch/x86/include/uapi/asm/ist.h +arch/x86/include/uapi/asm/kvm_para.h +arch/x86/include/uapi/asm/ldt.h +arch/x86/include/uapi/asm/mman.h +arch/x86/include/uapi/asm/msr.h +arch/x86/include/uapi/asm/perf_regs.h +arch/x86/include/uapi/asm/posix_types_32.h +arch/x86/include/uapi/asm/posix_types_64.h +arch/x86/include/uapi/asm/processor-flags.h +arch/x86/include/uapi/asm/ptrace-abi.h +arch/x86/include/uapi/asm/ptrace.h +arch/x86/include/uapi/asm/sembuf.h +arch/x86/include/uapi/asm/shmbuf.h +arch/x86/include/uapi/asm/sigcontext.h +arch/x86/include/uapi/asm/siginfo.h +arch/x86/include/uapi/asm/signal.h +arch/x86/include/uapi/asm/stat.h +arch/x86/include/uapi/asm/swab.h +arch/x86/include/uapi/asm/unistd.h +arch/x86/include/uapi/asm/vsyscall.h +drivers/base/base.h +drivers/base/physical_location.h +drivers/base/power/power.h +drivers/base/trace.h +drivers/hid/hid-ids.h +drivers/hid/usbhid/usbhid.h +drivers/input/input-compat.h +drivers/input/input-core-private.h +drivers/input/input-poller.h +drivers/usb/core/hub.h +drivers/usb/core/otg_productlist.h +drivers/usb/core/usb.h +include/acpi/acbuffer.h +include/acpi/acconfig.h +include/acpi/acexcep.h +include/acpi/acnames.h +include/acpi/acoutput.h +include/acpi/acpi.h +include/acpi/acpi_numa.h +include/acpi/acpiosxf.h +include/acpi/acpixf.h +include/acpi/acrestyp.h +include/acpi/actbl1.h +include/acpi/actbl2.h +include/acpi/actbl3.h +include/acpi/actbl.h +include/acpi/actypes.h +include/acpi/platform/acenvex.h +include/acpi/platform/acenv.h +include/acpi/platform/acgccex.h +include/acpi/platform/acgcc.h +include/acpi/platform/aclinuxex.h +include/acpi/platform/aclinux.h +include/asm-generic/access_ok.h +include/asm-generic/archrandom.h +include/asm-generic/asm-prototypes.h +include/asm-generic/barrier.h +include/asm-generic/bitops/arch_hweight.h +include/asm-generic/bitops/atomic.h +include/asm-generic/bitops/builtin-__ffs.h +include/asm-generic/bitops/builtin-ffs.h +include/asm-generic/bitops/builtin-__fls.h +include/asm-generic/bitops/builtin-fls.h +include/asm-generic/bitops/const_hweight.h +include/asm-generic/bitops/ext2-atomic-setbit.h +include/asm-generic/bitops/ffz.h +include/asm-generic/bitops/fls64.h +include/asm-generic/bitops/generic-non-atomic.h +include/asm-generic/bitops/hweight.h +include/asm-generic/bitops/instrumented-atomic.h +include/asm-generic/bitops/instrumented-lock.h +include/asm-generic/bitops/instrumented-non-atomic.h +include/asm-generic/bitops/le.h +include/asm-generic/bitops/lock.h +include/asm-generic/bitops/non-atomic.h +include/asm-generic/bitops/non-instrumented-non-atomic.h +include/asm-generic/bitops/sched.h +include/asm-generic/bitsperlong.h +include/asm-generic/bug.h +include/asm-generic/cacheflush.h +include/asm-generic/checksum.h +include/asm-generic/cmpxchg-local.h +include/asm-generic/compat.h +include/asm-generic/delay.h +include/asm-generic/div64.h +include/asm-generic/dma-mapping.h +include/asm-generic/early_ioremap.h +include/asm-generic/emergency-restart.h +include/asm-generic/error-injection.h +include/asm-generic/exec.h +include/asm-generic/export.h +include/asm-generic/extable.h +include/asm-generic/fixmap.h +include/asm-generic/getorder.h +include/asm-generic/hardirq.h +include/asm-generic/hw_irq.h +include/asm-generic/int-ll64.h +include/asm-generic/ioctl.h +include/asm-generic/io.h +include/asm-generic/iomap.h +include/asm-generic/irqflags.h +include/asm-generic/irq.h +include/asm-generic/irq_regs.h +include/asm-generic/kdebug.h +include/asm-generic/kmap_size.h +include/asm-generic/kprobes.h +include/asm-generic/kvm_para.h +include/asm-generic/local64.h +include/asm-generic/local.h +include/asm-generic/memory_model.h +include/asm-generic/mm_hooks.h +include/asm-generic/mmiowb.h +include/asm-generic/mmu_context.h +include/asm-generic/module.h +include/asm-generic/param.h +include/asm-generic/pci_iomap.h +include/asm-generic/percpu.h +include/asm-generic/pgtable-nop4d.h +include/asm-generic/pgtable-nopmd.h +include/asm-generic/pgtable-nopud.h +include/asm-generic/pgtable_uffd.h +include/asm-generic/preempt.h +include/asm-generic/qrwlock_types.h +include/asm-generic/qspinlock_types.h +include/asm-generic/resource.h +include/asm-generic/rwonce.h +include/asm-generic/sections.h +include/asm-generic/shmparam.h +include/asm-generic/signal.h +include/asm-generic/softirq_stack.h +include/asm-generic/switch_to.h +include/asm-generic/timex.h +include/asm-generic/topology.h +include/asm-generic/trace_clock.h +include/asm-generic/unaligned.h +include/asm-generic/user.h +include/clocksource/arm_arch_timer.h +include/dt-bindings/leds/common.h +include/linux/acpi.h +include/linux/alarmtimer.h +include/linux/align.h +include/linux/apm_bios.h +include/linux/arch_topology.h +include/linux/arm-smccc.h +include/linux/assoc_array.h +include/linux/async.h +include/linux/atomic/atomic-arch-fallback.h +include/linux/atomic/atomic-instrumented.h +include/linux/atomic/atomic-long.h +include/linux/atomic.h +include/linux/audit_arch.h +include/linux/audit.h +include/linux/auxvec.h +include/linux/backing-dev-defs.h +include/linux/binfmts.h +include/linux/bio.h +include/linux/bitfield.h +include/linux/bitmap.h +include/linux/bitops.h +include/linux/bits.h +include/linux/bit_spinlock.h +include/linux/blkdev.h +include/linux/blk_types.h +include/linux/bottom_half.h +include/linux/bpf-cgroup-defs.h +include/linux/bug.h +include/linux/build_bug.h +include/linux/buildid.h +include/linux/bvec.h +include/linux/byteorder/generic.h +include/linux/byteorder/little_endian.h +include/linux/cacheflush.h +include/linux/cache.h +include/linux/capability.h +include/linux/cc_platform.h +include/linux/cdev.h +include/linux/cgroup_api.h +include/linux/cgroup-defs.h +include/linux/cgroup.h +include/linux/clk.h +include/linux/clk-provider.h +include/linux/clockchips.h +include/linux/clocksource.h +include/linux/clocksource_ids.h +include/linux/compat.h +include/linux/compiler_attributes.h +include/linux/compiler-gcc.h +include/linux/compiler.h +include/linux/compiler_types.h +include/linux/compiler-version.h +include/linux/completion.h +include/linux/const.h +include/linux/container_of.h +include/linux/context_tracking.h +include/linux/context_tracking_irq.h +include/linux/context_tracking_state.h +include/linux/cpufreq.h +include/linux/cpu.h +include/linux/cpuhotplug.h +include/linux/cpumask_api.h +include/linux/cpumask.h +include/linux/cpuset.h +include/linux/cred.h +include/linux/ctype.h +include/linux/dcache.h +include/linux/debugfs.h +include/linux/debug_locks.h +include/linux/debugobjects.h +include/linux/delayed_call.h +include/linux/delay.h +include/linux/device/bus.h +include/linux/device/class.h +include/linux/device/driver.h +include/linux/device.h +include/linux/dev_printk.h +include/linux/dma-direction.h +include/linux/dma-map-ops.h +include/linux/dma-mapping.h +include/linux/dqblk_qtree.h +include/linux/dqblk_v1.h +include/linux/dqblk_v2.h +include/linux/dynamic_queue_limits.h +include/linux/edd.h +include/linux/elf.h +include/linux/elf-randomize.h +include/linux/energy_model.h +include/linux/err.h +include/linux/errname.h +include/linux/errno.h +include/linux/error-injection.h +include/linux/errseq.h +include/linux/ethtool.h +include/linux/eventfd.h +include/linux/export.h +include/linux/extcon.h +include/linux/fault-inject.h +include/linux/fault-inject-usercopy.h +include/linux/fcntl.h +include/linux/file.h +include/linux/find.h +include/linux/flex_proportions.h +include/linux/freelist.h +include/linux/freezer.h +include/linux/fs_api.h +include/linux/fs.h +include/linux/fs_types.h +include/linux/ftrace.h +include/linux/ftrace_irq.h +include/linux/fwnode.h +include/linux/gfp.h +include/linux/gfp_types.h +include/linux/gpio/consumer.h +include/linux/hardirq.h +include/linux/hash.h +include/linux/hashtable_api.h +include/linux/hashtable.h +include/linux/hid-debug.h +include/linux/hiddev.h +include/linux/hid.h +include/linux/hidraw.h +include/linux/highmem.h +include/linux/highmem-internal.h +include/linux/highuid.h +include/linux/hrtimer_api.h +include/linux/hrtimer_defs.h +include/linux/hrtimer.h +include/linux/huge_mm.h +include/linux/hugetlb.h +include/linux/hugetlb_inline.h +include/linux/idr.h +include/linux/if_ether.h +include/linux/if_link.h +include/linux/in6.h +include/linux/indirect_call_wrapper.h +include/linux/in.h +include/linux/init.h +include/linux/init_task.h +include/linux/input/elan-i2c-ids.h +include/linux/input.h +include/linux/input/mt.h +include/linux/instruction_pointer.h +include/linux/instrumentation.h +include/linux/instrumented.h +include/linux/interrupt.h +include/linux/ioasid.h +include/linux/iocontext.h +include/linux/io.h +include/linux/iopoll.h +include/linux/ioport.h +include/linux/ioprio.h +include/linux/ipc.h +include/linux/ipv6.h +include/linux/irqchip.h +include/linux/irqdesc.h +include/linux/irqdomain.h +include/linux/irqflags.h +include/linux/irq.h +include/linux/irqhandler.h +include/linux/irqnr.h +include/linux/irqreturn.h +include/linux/irq_work.h +include/linux/jhash.h +include/linux/jiffies.h +include/linux/jump_label.h +include/linux/jump_label_ratelimit.h +include/linux/kallsyms.h +include/linux/kasan-checks.h +include/linux/kasan-enabled.h +include/linux/kasan.h +include/linux/kasan-tags.h +include/linux/kconfig.h +include/linux/kcov.h +include/linux/kcsan-checks.h +include/linux/kcsan.h +include/linux/kdebug.h +include/linux/kdev_t.h +include/linux/kernel.h +include/linux/kernel_read_file.h +include/linux/kernel_stat.h +include/linux/kernfs.h +include/linux/kern_levels.h +include/linux/key.h +include/linux/kgdb.h +include/linux/klist.h +include/linux/kmemleak.h +include/linux/kmod.h +include/linux/kmsan-checks.h +include/linux/kmsan.h +include/linux/kmsan_types.h +include/linux/kobject_api.h +include/linux/kobject.h +include/linux/kobject_ns.h +include/linux/kprobes.h +include/linux/kref_api.h +include/linux/kref.h +include/linux/kstrtox.h +include/linux/kthread.h +include/linux/ktime_api.h +include/linux/ktime.h +include/linux/kvm_para.h +include/linux/latencytop.h +include/linux/leds.h +include/linux/limits.h +include/linux/linkage.h +include/linux/linkmode.h +include/linux/list_bl.h +include/linux/list.h +include/linux/list_lru.h +include/linux/list_nulls.h +include/linux/livepatch.h +include/linux/llist.h +include/linux/local_lock.h +include/linux/local_lock_internal.h +include/linux/lockdep_api.h +include/linux/lockdep.h +include/linux/lockdep_types.h +include/linux/lockref.h +include/linux/log2.h +include/linux/logic_pio.h +include/linux/maple_tree.h +include/linux/math64.h +include/linux/math.h +include/linux/mdio.h +include/linux/memcontrol.h +include/linux/mem_encrypt.h +include/linux/memory_hotplug.h +include/linux/mempolicy.h +include/linux/mempool.h +include/linux/memremap.h +include/linux/migrate_mode.h +include/linux/mii.h +include/linux/mii_timestamper.h +include/linux/minmax.h +include/linux/mman.h +include/linux/mmap_lock.h +include/linux/mmdebug.h +include/linux/mm.h +include/linux/mm_types.h +include/linux/mm_types_task.h +include/linux/mmu_context.h +include/linux/mmzone.h +include/linux/mnt_idmapping.h +include/linux/mod_devicetable.h +include/linux/module.h +include/linux/moduleparam.h +include/linux/mount.h +include/linux/mutex_api.h +include/linux/mutex.h +include/linux/netdev_features.h +include/linux/netdevice.h +include/linux/netfilter_defs.h +include/linux/net.h +include/linux/netlink.h +include/linux/nfs_fs_i.h +include/linux/nmi.h +include/linux/node.h +include/linux/nodemask.h +include/linux/nospec.h +include/linux/notifier.h +include/linux/ns_common.h +include/linux/nsproxy.h +include/linux/numa.h +include/linux/nvmem-provider.h +include/linux/objtool.h +include/linux/of_address.h +include/linux/of_clk.h +include/linux/of_device.h +include/linux/of_fdt.h +include/linux/of_graph.h +include/linux/of.h +include/linux/of_irq.h +include/linux/of_platform.h +include/linux/once.h +include/linux/once_lite.h +include/linux/osq_lock.h +include/linux/overflow.h +include/linux/pageblock-flags.h +include/linux/page_counter.h +include/linux/page_ext.h +include/linux/page-flags.h +include/linux/page-flags-layout.h +include/linux/pagemap.h +include/linux/page_ref.h +include/linux/panic.h +include/linux/path.h +include/linux/percpu_counter.h +include/linux/percpu-defs.h +include/linux/percpu.h +include/linux/percpu-refcount.h +include/linux/percpu-rwsem.h +include/linux/perf_event.h +include/linux/perf_regs.h +include/linux/personality.h +include/linux/pfn.h +include/linux/phy.h +include/linux/phy/phy-dp.h +include/linux/phy/phy.h +include/linux/phy/phy-lvds.h +include/linux/phy/phy-mipi-dphy.h +include/linux/pid.h +include/linux/pid_namespace.h +include/linux/pinctrl/devinfo.h +include/linux/pipe_fs_i.h +include/linux/pkeys.h +include/linux/platform_device.h +include/linux/plist.h +include/linux/pm.h +include/linux/pm_opp.h +include/linux/pm_qos.h +include/linux/pm_runtime.h +include/linux/pm_wakeup.h +include/linux/poison.h +include/linux/poll.h +include/linux/posix-timers.h +include/linux/power_supply.h +include/linux/prandom.h +include/linux/preempt.h +include/linux/prefetch.h +include/linux/printk.h +include/linux/processor.h +include/linux/proc_fs.h +include/linux/profile.h +include/linux/projid.h +include/linux/property.h +include/linux/psi.h +include/linux/psi_types.h +include/linux/ptrace_api.h +include/linux/ptrace.h +include/linux/ptr_ring.h +include/linux/pvclock_gtod.h +include/linux/quota.h +include/linux/radix-tree.h +include/linux/random.h +include/linux/range.h +include/linux/ratelimit.h +include/linux/ratelimit_types.h +include/linux/rbtree.h +include/linux/rbtree_latch.h +include/linux/rbtree_types.h +include/linux/rculist_bl.h +include/linux/rculist.h +include/linux/rculist_nulls.h +include/linux/rcu_node_tree.h +include/linux/rcupdate.h +include/linux/rcu_segcblist.h +include/linux/rcu_sync.h +include/linux/rcutree.h +include/linux/rcuwait.h +include/linux/reboot.h +include/linux/refcount.h +include/linux/ref_tracker.h +include/linux/regulator/consumer.h +include/linux/resource_ext.h +include/linux/resource.h +include/linux/restart_block.h +include/linux/rethook.h +include/linux/rhashtable-types.h +include/linux/ring_buffer.h +include/linux/rmap.h +include/linux/rtc.h +include/linux/rtmutex.h +include/linux/rtnetlink.h +include/linux/rv.h +include/linux/rwlock_api_smp.h +include/linux/rwlock.h +include/linux/rwlock_types.h +include/linux/rwsem.h +include/linux/sbitmap.h +include/linux/scatterlist.h +include/linux/sched/affinity.h +include/linux/sched/autogroup.h +include/linux/sched/clock.h +include/linux/sched_clock.h +include/linux/sched/coredump.h +include/linux/sched/cpufreq.h +include/linux/sched/cputime.h +include/linux/sched/deadline.h +include/linux/sched/debug.h +include/linux/sched.h +include/linux/sched/hotplug.h +include/linux/sched/idle.h +include/linux/sched/isolation.h +include/linux/sched/jobctl.h +include/linux/sched/loadavg.h +include/linux/sched/mm.h +include/linux/sched/nohz.h +include/linux/sched/numa_balancing.h +include/linux/sched/prio.h +include/linux/sched/rseq_api.h +include/linux/sched/rt.h +include/linux/sched/sd_flags.h +include/linux/sched/signal.h +include/linux/sched/smt.h +include/linux/sched/stat.h +include/linux/sched/sysctl.h +include/linux/sched/task_flags.h +include/linux/sched/task.h +include/linux/sched/task_stack.h +include/linux/sched/topology.h +include/linux/sched/types.h +include/linux/sched/user.h +include/linux/sched/wake_q.h +include/linux/screen_info.h +include/linux/seccomp.h +include/linux/securebits.h +include/linux/security.h +include/linux/semaphore.h +include/linux/sem.h +include/linux/seq_buf.h +include/linux/seq_file.h +include/linux/seq_file_net.h +include/linux/seqlock.h +include/linux/shm.h +include/linux/shrinker.h +include/linux/signal.h +include/linux/signal_types.h +include/linux/siphash.h +include/linux/sizes.h +include/linux/skbuff.h +include/linux/slab.h +include/linux/smpboot.h +include/linux/smp.h +include/linux/smp_types.h +include/linux/socket.h +include/linux/sockptr.h +include/linux/softirq.h +include/linux/spinlock_api.h +include/linux/spinlock_api_smp.h +include/linux/spinlock.h +include/linux/spinlock_types.h +include/linux/spinlock_types_raw.h +include/linux/splice.h +include/linux/srcu.h +include/linux/srcutree.h +include/linux/stackdepot.h +include/linux/stacktrace.h +include/linux/stat.h +include/linux/static_call.h +include/linux/static_call_types.h +include/linux/static_key.h +include/linux/stdarg.h +include/linux/stddef.h +include/linux/stop_machine.h +include/linux/string.h +include/linux/stringhash.h +include/linux/string_helpers.h +include/linux/stringify.h +include/linux/suspend.h +include/linux/swab.h +include/linux/swait_api.h +include/linux/swait.h +include/linux/swap.h +include/linux/swapops.h +include/linux/swiotlb.h +include/linux/sync_core.h +include/linux/syscalls_api.h +include/linux/syscalls.h +include/linux/syscall_user_dispatch.h +include/linux/syscore_ops.h +include/linux/sysctl.h +include/linux/sysfs.h +include/linux/task_io_accounting.h +include/linux/tcp.h +include/linux/textsearch.h +include/linux/thread_info.h +include/linux/threads.h +include/linux/tick.h +include/linux/time32.h +include/linux/time64.h +include/linux/timecounter.h +include/linux/time.h +include/linux/timekeeper_internal.h +include/linux/timekeeping.h +include/linux/timer.h +include/linux/timerqueue.h +include/linux/timex.h +include/linux/topology.h +include/linux/trace_clock.h +include/linux/trace_events.h +include/linux/tracepoint-defs.h +include/linux/tracepoint.h +include/linux/trace_recursion.h +include/linux/trace_seq.h +include/linux/typecheck.h +include/linux/types.h +include/linux/u64_stats_sync_api.h +include/linux/u64_stats_sync.h +include/linux/uaccess.h +include/linux/udp.h +include/linux/uidgid.h +include/linux/uio.h +include/linux/umh.h +include/linux/unaligned/packed_struct.h +include/linux/uprobes.h +include/linux/usb/ch9.h +include/linux/usbdevice_fs.h +include/linux/usb.h +include/linux/usb/hcd.h +include/linux/usb/of.h +include/linux/usb/onboard_hub.h +include/linux/usb/otg.h +include/linux/usb/phy.h +include/linux/usb/quirks.h +include/linux/userfaultfd_k.h +include/linux/user_namespace.h +include/linux/utsname.h +include/linux/uuid.h +include/linux/vmalloc.h +include/linux/vm_event_item.h +include/linux/vmpressure.h +include/linux/vmstat.h +include/linux/vtime.h +include/linux/wait_api.h +include/linux/wait_bit.h +include/linux/wait.h +include/linux/win_minmax.h +include/linux/workqueue_api.h +include/linux/workqueue.h +include/linux/writeback.h +include/linux/ww_mutex.h +include/linux/xarray.h +include/net/addrconf.h +include/net/checksum.h +include/net/dropreason.h +include/net/dst.h +include/net/dst_ops.h +include/net/fib_notifier.h +include/net/fib_rules.h +include/net/flow_dissector.h +include/net/flow.h +include/net/if_inet6.h +include/net/inet_connection_sock.h +include/net/inet_dscp.h +include/net/inet_frag.h +include/net/inet_sock.h +include/net/inet_timewait_sock.h +include/net/ipv6.h +include/net/l3mdev.h +include/net/neighbour.h +include/net/net_debug.h +include/net/netlink.h +include/net/net_namespace.h +include/net/netns/bpf.h +include/net/netns/can.h +include/net/netns/core.h +include/net/netns/hash.h +include/net/netns/ieee802154_6lowpan.h +include/net/netns/ipv4.h +include/net/netns/ipv6.h +include/net/netns/mctp.h +include/net/netns/mib.h +include/net/netns/mpls.h +include/net/netns/netfilter.h +include/net/netns/nexthop.h +include/net/netns/nftables.h +include/net/netns/packet.h +include/net/netns/sctp.h +include/net/netns/smc.h +include/net/netns/unix.h +include/net/netns/xdp.h +include/net/netns/xfrm.h +include/net/netprio_cgroup.h +include/net/net_trackers.h +include/net/page_pool.h +include/net/request_sock.h +include/net/rtnetlink.h +include/net/scm.h +include/net/snmp.h +include/net/sock.h +include/net/tcp_states.h +include/net/timewait_sock.h +include/net/xdp.h +include/trace/define_trace.h +include/trace/events/irq.h +include/trace/events/lock.h +include/trace/events/power.h +include/trace/events/sched.h +include/trace/events/timer.h +include/trace/events/tlb.h +include/trace/events/workqueue.h +include/trace/syscall.h +include/uapi/asm-generic/bitsperlong.h +include/uapi/asm-generic/bpf_perf_event.h +include/uapi/asm-generic/errno-base.h +include/uapi/asm-generic/errno.h +include/uapi/asm-generic/fcntl.h +include/uapi/asm-generic/hugetlb_encode.h +include/uapi/asm-generic/int-ll64.h +include/uapi/asm-generic/ioctl.h +include/uapi/asm-generic/ipcbuf.h +include/uapi/asm-generic/kvm_para.h +include/uapi/asm-generic/mman-common.h +include/uapi/asm-generic/mman.h +include/uapi/asm-generic/param.h +include/uapi/asm-generic/poll.h +include/uapi/asm-generic/posix_types.h +include/uapi/asm-generic/resource.h +include/uapi/asm-generic/sembuf.h +include/uapi/asm-generic/shmbuf.h +include/uapi/asm-generic/siginfo.h +include/uapi/asm-generic/signal-defs.h +include/uapi/asm-generic/signal.h +include/uapi/asm-generic/socket.h +include/uapi/asm-generic/sockios.h +include/uapi/asm-generic/stat.h +include/uapi/asm-generic/swab.h +include/uapi/asm-generic/types.h +include/uapi/asm-generic/unistd.h +include/uapi/linux/aio_abi.h +include/uapi/linux/apm_bios.h +include/uapi/linux/audit.h +include/uapi/linux/auxvec.h +include/uapi/linux/binfmts.h +include/uapi/linux/blkzoned.h +include/uapi/linux/bpf_perf_event.h +include/uapi/linux/byteorder/little_endian.h +include/uapi/linux/capability.h +include/uapi/linux/cgroupstats.h +include/uapi/linux/const.h +include/uapi/linux/dqblk_xfs.h +include/uapi/linux/edd.h +include/uapi/linux/elf-em.h +include/uapi/linux/elf.h +include/uapi/linux/errno.h +include/uapi/linux/ethtool.h +include/uapi/linux/eventpoll.h +include/uapi/linux/fcntl.h +include/uapi/linux/fib_rules.h +include/uapi/linux/fs.h +include/uapi/linux/hdlc/ioctl.h +include/uapi/linux/hiddev.h +include/uapi/linux/hid.h +include/uapi/linux/hidraw.h +include/uapi/linux/icmpv6.h +include/uapi/linux/if_addr.h +include/uapi/linux/if_bonding.h +include/uapi/linux/if_ether.h +include/uapi/linux/if.h +include/uapi/linux/if_link.h +include/uapi/linux/if_packet.h +include/uapi/linux/in6.h +include/uapi/linux/in.h +include/uapi/linux/input-event-codes.h +include/uapi/linux/input.h +include/uapi/linux/ioctl.h +include/uapi/linux/ioprio.h +include/uapi/linux/ipc.h +include/uapi/linux/ipv6.h +include/uapi/linux/irqnr.h +include/uapi/linux/kcov.h +include/uapi/linux/kdev_t.h +include/uapi/linux/kernel.h +include/uapi/linux/kvm_para.h +include/uapi/linux/libc-compat.h +include/uapi/linux/limits.h +include/uapi/linux/magic.h +include/uapi/linux/major.h +include/uapi/linux/mdio.h +include/uapi/linux/membarrier.h +include/uapi/linux/mempolicy.h +include/uapi/linux/mii.h +include/uapi/linux/mman.h +include/uapi/linux/neighbour.h +include/uapi/linux/netdevice.h +include/uapi/linux/netfilter.h +include/uapi/linux/netfilter/nf_tables.h +include/uapi/linux/net.h +include/uapi/linux/netlink.h +include/uapi/linux/net_tstamp.h +include/uapi/linux/openat2.h +include/uapi/linux/param.h +include/uapi/linux/perf_event.h +include/uapi/linux/personality.h +include/uapi/linux/pkt_cls.h +include/uapi/linux/pkt_sched.h +include/uapi/linux/poll.h +include/uapi/linux/posix_types.h +include/uapi/linux/prctl.h +include/uapi/linux/ptrace.h +include/uapi/linux/quota.h +include/uapi/linux/random.h +include/uapi/linux/reboot.h +include/uapi/linux/resource.h +include/uapi/linux/rseq.h +include/uapi/linux/rtc.h +include/uapi/linux/rtnetlink.h +include/uapi/linux/sched.h +include/uapi/linux/sched/types.h +include/uapi/linux/screen_info.h +include/uapi/linux/seccomp.h +include/uapi/linux/securebits.h +include/uapi/linux/sem.h +include/uapi/linux/shm.h +include/uapi/linux/signal.h +include/uapi/linux/snmp.h +include/uapi/linux/socket.h +include/uapi/linux/sockios.h +include/uapi/linux/stat.h +include/uapi/linux/stddef.h +include/uapi/linux/string.h +include/uapi/linux/swab.h +include/uapi/linux/sysctl.h +include/uapi/linux/sysinfo.h +include/uapi/linux/taskstats.h +include/uapi/linux/tcp.h +include/uapi/linux/time.h +include/uapi/linux/time_types.h +include/uapi/linux/timex.h +include/uapi/linux/types.h +include/uapi/linux/udp.h +include/uapi/linux/uio.h +include/uapi/linux/unistd.h +include/uapi/linux/usb/audio.h +include/uapi/linux/usb/ch11.h +include/uapi/linux/usb/ch9.h +include/uapi/linux/usb/charger.h +include/uapi/linux/usbdevice_fs.h +include/uapi/linux/utsname.h +include/uapi/linux/uuid.h +include/uapi/linux/wait.h +include/uapi/linux/xfrm.h +include/uapi/video/edid.h +include/vdso/bits.h +include/vdso/clocksource.h +include/vdso/const.h +include/vdso/datapage.h +include/vdso/jiffies.h +include/vdso/ktime.h +include/vdso/limits.h +include/vdso/math64.h +include/vdso/processor.h +include/vdso/time32.h +include/vdso/time64.h +include/vdso/time.h +include/video/edid.h +kernel/irq/debug.h +kernel/irq/internals.h +kernel/irq/settings.h +kernel/locking/lock_events.h +kernel/locking/lock_events_list.h +kernel/locking/mutex.h +kernel/locking/ww_mutex.h +kernel/sched/autogroup.h +kernel/sched/clock.c +kernel/sched/completion.c +kernel/sched/cpudeadline.h +kernel/sched/cpupri.c +kernel/sched/cpupri.h +kernel/sched/features.h +kernel/sched/isolation.c +kernel/sched/loadavg.c +kernel/sched/sched.h +kernel/sched/sched-pelt.h +kernel/sched/stats.h +kernel/sched/stop_task.c +kernel/sched/swait.c +kernel/sched/topology.c +kernel/sched/wait_bit.c +kernel/sched/wait.c +kernel/smpboot.h +kernel/time/ntp_internal.h +kernel/time/tick-internal.h +kernel/time/tick-sched.h +kernel/time/timekeeping.h +kernel/time/timekeeping_internal.h +kernel/workqueue_internal.h +lib/kstrtox.h +mm/internal.h +mm/slab.h +mm/swap.h diff --git a/repos/dde_linux/src/drivers/usb_hid/dummies.c b/repos/dde_linux/src/drivers/usb_hid/dummies.c new file mode 100644 index 0000000000..c3201509eb --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/dummies.c @@ -0,0 +1,348 @@ +/* + * \brief Dummy definitions of Linux Kernel functions + * \author Sebastian Sumpf + * \date 2023-06-29 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include + +#include + +DEFINE_STATIC_KEY_FALSE(force_irqthreads_key); + +#ifdef __arm__ +#include + +unsigned long arm_copy_to_user(void *to, const void *from, unsigned long n) +{ + lx_emul_trace_and_stop(__func__); +} + +asmlinkage void __div0(void); +asmlinkage void __div0(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void arch_teardown_dma_ops(struct device * dev) +{ + lx_emul_trace(__func__); +} + + +extern void arm_heavy_mb(void); +void arm_heavy_mb(void) +{ + // FIXME: on Cortex A9 we potentially need to flush L2-cache + lx_emul_trace(__func__); +} + +#else + +#include + +noinstr void ct_irq_enter(void) +{ + lx_emul_trace(__func__); +} + + +#include +noinstr void ct_irq_exit(void) +{ + lx_emul_trace(__func__); +} + +#include +void update_vsyscall(struct timekeeper * tk) +{ + lx_emul_trace(__func__); +} + +#endif + + +unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n); +unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n) + +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void net_ns_init(void) +{ + lx_emul_trace(__func__); +} + + +#include + +int kobject_uevent(struct kobject * kobj,enum kobject_action action) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +int register_chrdev_region(dev_t from,unsigned count,const char * name) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +void register_syscore_ops(struct syscore_ops * ops) +{ + lx_emul_trace(__func__); +} + + +#include + +void __init usb_init_pool_max(void) +{ + lx_emul_trace(__func__); +} + + +#include + +void usb_hcd_synchronize_unlinks(struct usb_device * udev) +{ + lx_emul_trace(__func__); +} + + +#include + +void refcount_warn_saturate(refcount_t * r,enum refcount_saturation_type t) +{ + lx_emul_trace(__func__); +} + + +#include + +int __sched down_interruptible(struct semaphore * sem) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern int usb_major_init(void); +int usb_major_init(void) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern int __init usb_devio_init(void); +int __init usb_devio_init(void) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +int usb_string(struct usb_device * dev,int index,char * buf,size_t size) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern char * usb_cache_string(struct usb_device * udev,int index); +char * usb_cache_string(struct usb_device * udev,int index) +{ + lx_emul_trace(__func__); + return NULL; +} + + +void usb_kill_urb(struct urb * urb) +{ + lx_emul_trace(__func__); +} + + +#include + +struct usb_hcd * usb_get_hcd(struct usb_hcd * hcd) +{ + lx_emul_trace(__func__); + return hcd; +} + + +#include + +void usb_put_hcd(struct usb_hcd * hcd) +{ + lx_emul_trace(__func__); +} + + +#include + +bool parse_option_str(const char * str,const char * option) +{ + lx_emul_trace(__func__); + return false; +} + + +#include + +void __sched up(struct semaphore * sem) +{ + lx_emul_trace(__func__); +} + + +#include + +void __sched down(struct semaphore * sem) +{ + lx_emul_trace(__func__); +} + + +#include + +int __sched down_trylock(struct semaphore * sem) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +void synchronize_rcu(void) +{ + lx_emul_trace(__func__); +} + + +#include + +void input_ff_destroy(struct input_dev * dev) +{ + lx_emul_trace(__func__); +} + + +#include + +void input_mt_destroy_slots(struct input_dev * dev) +{ + lx_emul_trace(__func__); +} + + +#include + +void skb_init() +{ + lx_emul_trace(__func__); +} + + +extern void software_node_notify(struct device * dev); +void software_node_notify(struct device * dev) +{ + lx_emul_trace(__func__); +} + + +extern void software_node_notify_remove(struct device * dev); +void software_node_notify_remove(struct device * dev) +{ + lx_emul_trace(__func__); +} + + +extern int usb_create_sysfs_dev_files(struct usb_device * udev); +int usb_create_sysfs_dev_files(struct usb_device * udev) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern void usb_remove_sysfs_dev_files(struct usb_device * udev); +void usb_remove_sysfs_dev_files(struct usb_device * udev) +{ + lx_emul_trace(__func__); +} + + +extern int usb_create_ep_devs(struct device * parent,struct usb_host_endpoint * endpoint,struct usb_device * udev); +int usb_create_ep_devs(struct device * parent,struct usb_host_endpoint * endpoint,struct usb_device * udev) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern void usb_remove_ep_devs(struct usb_host_endpoint * endpoint); +void usb_remove_ep_devs(struct usb_host_endpoint * endpoint) +{ + lx_emul_trace(__func__); +} + + +extern void usb_notify_add_device(struct usb_device * udev); +void usb_notify_add_device(struct usb_device * udev) +{ + lx_emul_trace(__func__); +} + + +extern void usb_notify_remove_device(struct usb_device * udev); +void usb_notify_remove_device(struct usb_device * udev) +{ + lx_emul_trace(__func__); +} + + +extern void usb_create_sysfs_intf_files(struct usb_interface * intf); +void usb_create_sysfs_intf_files(struct usb_interface * intf) +{ + lx_emul_trace(__func__); +} + + +extern void usb_remove_sysfs_intf_files(struct usb_interface * intf); +void usb_remove_sysfs_intf_files(struct usb_interface * intf) +{ + lx_emul_trace(__func__); +} + + +extern void usb_disable_interface(struct usb_device * dev,struct usb_interface * intf,bool reset_hardware); +void usb_disable_interface(struct usb_device * dev,struct usb_interface * intf,bool reset_hardware) +{ + lx_emul_trace(__func__); +} diff --git a/repos/dde_linux/src/drivers/usb_hid/led.c b/repos/dde_linux/src/drivers/usb_hid/led.c new file mode 100644 index 0000000000..70d577e491 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/led.c @@ -0,0 +1,206 @@ +/* + * \brief Keyboard LED handling + * \author Sebastian Sumpf + * \date 2023-06-29 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include +#include +#include +#include + +struct keyboard +{ + struct input_dev *input_dev; + struct usb_interface *intf; + struct usb_device *udev; + struct list_head list; +}; + + +enum Update_state { NONE, UPDATE, BLOCKED }; + +struct led_update +{ + enum Update_state state; + struct completion update; + unsigned leds; +}; + + +static LIST_HEAD(_keyboards); +static struct led_update _led_update; + + +static bool keyboard_match(struct keyboard *kbd, struct input_dev *input_dev) +{ + return kbd->input_dev == input_dev; +} + + +static void keyboard_update(struct keyboard *kbd, unsigned leds) +{ + usb_control_msg(kbd->udev, usb_sndctrlpipe(kbd->udev, 0), + 0x9, USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0x200, + kbd->intf->cur_altsetting->desc.bInterfaceNumber, + &leds, 1, 500); +} + + +void lx_led_state_update(bool capslock, bool numlock, bool scrlock) +{ + + struct keyboard *kbd; + unsigned leds = 0; + + leds |= capslock ? 1u << LED_CAPSL : 0; + leds |= numlock ? 1u << LED_NUML : 0; + leds |= scrlock ? 1u << LED_SCROLLL : 0; + + _led_update.leds = leds; + _led_update.state = UPDATE; + + /* udpdate keyboards */ + list_for_each_entry(kbd, &_keyboards, list) { + keyboard_update(kbd, leds); + } + + if (_led_update.state == BLOCKED) + complete(&_led_update.update); + + _led_update.state = NONE; +} + + +static void wait_for_update(void) +{ + if (_led_update.state == UPDATE) { + _led_update.state = BLOCKED; + wait_for_completion(&_led_update.update); + } +} + + +static int led_connect(struct input_handler *handler, struct input_dev *dev, + const struct input_device_id *id) +{ + struct keyboard *kbd; + struct input_handle *handle; + + wait_for_update(); + + handle = (struct input_handle *)kzalloc(sizeof(*handle), 0); + if (!handle) return -ENOMEM; + handle->dev = input_get_device(dev); + handle->handler = handler; + + kbd = (struct keyboard *)kzalloc(sizeof(*kbd), GFP_KERNEL); + if (!kbd) goto err; + + kbd->input_dev = input_get_device(dev); + kbd->intf = container_of(kbd->input_dev->dev.parent->parent, struct usb_interface, dev); + kbd->udev = interface_to_usbdev(kbd->intf); + + INIT_LIST_HEAD(&kbd->list); + list_add_tail(&kbd->list, &_keyboards); + + keyboard_update(kbd, _led_update.leds); + + input_register_handle(handle); + + return 0; + +err: + kfree(handle); + return -ENOMEM; +} + + +static void led_disconnect(struct input_handle *handle) +{ + struct input_dev *dev = handle->dev; + struct keyboard *kbd, *temp; + + wait_for_update(); + + list_for_each_entry_safe(kbd, temp, &_keyboards, list) { + if (keyboard_match(kbd, dev)) { + list_del(&kbd->list); + kfree(kbd); + } + } + input_unregister_handle(handle); + input_put_device(dev); + kfree(handle); +} + + +static bool led_match(struct input_handler *handler, struct input_dev *dev) +{ + struct hid_device *hid = (struct hid_device *)input_get_drvdata(dev); + struct hid_report *report; + struct hid_usage *usage; + unsigned i, j; + + /* search report for keyboard entries */ + list_for_each_entry(report, &hid->report_enum[0].report_list, list) { + + for (i = 0; i < report->maxfield; i++) + for (j = 0; j < report->field[i]->maxusage; j++) { + usage = report->field[i]->usage + j; + if ((usage->hid & HID_USAGE_PAGE) == HID_UP_KEYBOARD) { + return true; + } + } + } + + return false; +} + + +static struct input_device_id led_ids[] = { + { .driver_info = 1 }, /* match all */ + { }, +}; + + +MODULE_DEVICE_TABLE(input, led_ids); + +static struct input_handler led_handler = { + .name = "keyboard_led", + .connect = led_connect, + .disconnect = led_disconnect, + .id_table = led_ids, + .match = led_match, + .id_table = led_ids, +}; + + +static int __init input_leds_init(void) +{ + _led_update.state = NONE; + init_completion(&_led_update.update); + + return input_register_handler(&led_handler); +} + + +static void __exit input_leds_exit(void) +{ + input_unregister_handler(&led_handler); +} + + +/** + * Let's hook into the input_leds initcall, so we do not need to register + * an additional one + */ +module_init(input_leds_init); +module_exit(input_leds_exit); diff --git a/repos/dde_linux/src/drivers/usb_hid/led_state.h b/repos/dde_linux/src/drivers/usb_hid/led_state.h new file mode 100644 index 0000000000..c35c5db955 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/led_state.h @@ -0,0 +1,66 @@ +/* + * \brief Configuration of keyboard mode indicators + * \author Norman Feske + * \date 2017-10-25 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#ifndef _INPUT__LED_STATE_H_ +#define _INPUT__LED_STATE_H_ + +#include +#include +#include + +namespace Usb { struct Led_state; } + + +struct Usb::Led_state +{ + Genode::Env &_env; + + typedef Genode::String<32> Name; + + Name const _name; + + Genode::Constructible _rom { }; + + bool _enabled = false; + + Led_state(Genode::Env &env, Name const &name) : _env(env), _name(name) { } + + void update(Genode::Xml_node config, Genode::Signal_context_capability sigh) + { + typedef Genode::String<32> Attr; + typedef Genode::String<16> Value; + + Attr const attr(_name, "_led"); + Value const value = config.attribute_value(attr.string(), Value()); + + bool const rom_configured = (value == "rom"); + + if (rom_configured && !_rom.constructed()) { + _rom.construct(_env, _name.string()); + _rom->sigh(sigh); + } + + if (!rom_configured && _rom.constructed()) + _rom.destruct(); + + if (_rom.constructed()) + _rom->update(); + + _enabled = _rom.constructed() ? _rom->xml().attribute_value("enabled", false) + : config.attribute_value(attr.string(), false); + } + + bool enabled() const { return _enabled; } +}; + +#endif /* _INPUT__LED_STATE_H_ */ diff --git a/repos/dde_linux/src/drivers/usb_hid/lx_emul.c b/repos/dde_linux/src/drivers/usb_hid/lx_emul.c new file mode 100644 index 0000000000..0489a48afd --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/lx_emul.c @@ -0,0 +1,35 @@ +/* + * \brief Implementation of driver specific Linux functions + * \author Sebastian Sumpf + * \date 2023-06-29 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include + +#include +#include +#include +#include + +#include + +const struct attribute_group input_poller_attribute_group; +pteval_t __default_kernel_pte_mask __read_mostly = ~0; + +struct device_type usb_if_device_type = { + .name = "usb_interface" +}; + +struct usb_driver usbfs_driver = { + .name = "usbfs" +}; +const struct attribute_group *usb_device_groups[] = { }; + + diff --git a/repos/dde_linux/src/drivers/usb_hid/lx_emul.h b/repos/dde_linux/src/drivers/usb_hid/lx_emul.h new file mode 100644 index 0000000000..8dbf02c248 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/lx_emul.h @@ -0,0 +1,21 @@ +/* + * \brief Dummy definitions of Linux Kernel functions + * \author Sebastian Sumpf + * \date 2023-07-11 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include +#include +#include +#include + +struct input_dev_poller; +struct input_event; +struct usb_hub; diff --git a/repos/dde_linux/src/drivers/usb_hid/lx_user.c b/repos/dde_linux/src/drivers/usb_hid/lx_user.c new file mode 100644 index 0000000000..f65d78749b --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/lx_user.c @@ -0,0 +1,46 @@ +/* + * \brief Post kernel activity + * \author Sebastian Sumpf + * \date 2023-06-29 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include +#include + +static struct task_struct *main_task = NULL; + + +struct task_struct *lx_user_new_usb_task(int (*func)(void*), void *args) +{ + int pid = kernel_thread(func, args, CLONE_FS | CLONE_FILES); + return find_task_by_pid_ns(pid, NULL); +} + + +void lx_user_destroy_usb_task(struct task_struct *task) +{ + if (task != current) { + printk("%s: task: %px is not current: %px\n", __func__, + task, current); + return; + } + + /* unblock main task which initiated destruction */ + lx_emul_task_unblock(main_task); + + do_exit(0); +} + + +void lx_user_init(void) +{ + int pid = kernel_thread(lx_user_main_task, &main_task, CLONE_FS | CLONE_FILES); + main_task = find_task_by_pid_ns(pid, NULL); +} diff --git a/repos/dde_linux/src/drivers/usb_hid/main.cc b/repos/dde_linux/src/drivers/usb_hid/main.cc new file mode 100644 index 0000000000..2c3a39c60a --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/main.cc @@ -0,0 +1,371 @@ +/* + * \brief C++ initialization, session, and client handling + * \author Sebastian Sumpf + * \date 2023-06-29 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include +#include +#include +#include + +#include +#include +#include + +#include + +/* C-interface */ +#include + +#include + +using namespace Genode; + +struct Task_handler +{ + task_struct *task; + Signal_handler handler; + bool handling_signal { false }; + bool running { true }; + + /* + * If the task is currently executing and the signal handler + * is called again via 'block_and_schedule()', we need to + * keep this information, so the task does not block at the + * end when a new signal already occurred. + * + * Initialized as true for the initial run of the task. + */ + bool _signal_pending { true }; + + void handle_signal() + { + _signal_pending = true; + lx_emul_task_unblock(task); + handling_signal = true; + Lx_kit::env().scheduler.execute(); + handling_signal = false; + } + + bool signal_pending() + { + bool ret = _signal_pending; + _signal_pending = false; + return ret; + } + + void block_and_schedule() + { + lx_emul_task_schedule(true); + } + + void destroy_task() + { + running = false; + lx_emul_task_unblock(task); + /* will be unblocked by lx_user_destroy_usb_task */ + lx_emul_task_schedule(true); + } + + Task_handler(Entrypoint & ep, task_struct *task) + : task(task), handler(ep, *this, &Task_handler::handle_signal) { } + + /* non-copyable */ + Task_handler(const Task_handler&) = delete; + Task_handler & operator=(const Task_handler&) = delete; +}; + + +struct Leds +{ + Env &env; + + Attached_rom_dataspace &config_rom; + + task_struct *led_task { lx_user_new_usb_task(led_task_entry, this) }; + + Task_handler led_task_handler { env.ep(), led_task }; + + Usb::Led_state capslock { env, "capslock" }, + numlock { env, "numlock" }, + scrlock { env, "scrlock" }; + + Leds(Env &env, Attached_rom_dataspace &config_rom) + : env(env), config_rom(config_rom) { }; + + /* non-copyable */ + Leds(const Leds&) = delete; + Leds & operator=(const Leds&) = delete; + + void handle_config() + { + config_rom.update(); + Genode::Xml_node config =config_rom.xml(); + + capslock.update(config, led_task_handler.handler); + numlock .update(config, led_task_handler.handler); + scrlock .update(config, led_task_handler.handler); + } + + + /********** + ** Task ** + **********/ + + static int led_task_entry(void *arg) + { + Leds &led = *reinterpret_cast(arg); + + while (true) { + led.handle_config(); + + lx_led_state_update(led.capslock.enabled(), + led.numlock.enabled(), + led.scrlock.enabled()); + + led.led_task_handler.block_and_schedule(); + } + } +}; + + +struct Device : Registry::Element +{ + using Label = String<64>; + + Env &env; + Label label; + + /* + * Dedicated allocator per device to notice dangling + * allocations on device destruction. + */ + Allocator_avl alloc { &Lx_kit::env().heap }; + + task_struct *state_task { lx_user_new_usb_task(state_task_entry, this) }; + task_struct *urb_task { lx_user_new_usb_task(urb_task_entry, this) }; + + Task_handler state_task_handler { env.ep(), state_task }; + Task_handler urb_task_handler { env.ep(), urb_task }; + + genode_usb_client_handle_t usb_handle { + genode_usb_client_create(genode_env_ptr(env), + genode_allocator_ptr(Lx_kit::env().heap), + genode_range_allocator_ptr(alloc), + label.string(), + genode_signal_handler_ptr(state_task_handler.handler)) }; + + bool updated { true }; + bool registered { false }; + + void *lx_device_handle { nullptr }; + + Device(Env &env, Registry ®istry, Label label) + : + Registry::Element(registry, *this), + env(env), label(label) + { + genode_usb_client_sigh_ack_avail(usb_handle, + genode_signal_handler_ptr(urb_task_handler.handler)); + } + + ~Device() + { + genode_usb_client_destroy(usb_handle, + genode_allocator_ptr(Lx_kit::env().heap)); + + state_task_handler.destroy_task(); + urb_task_handler.destroy_task(); + } + + /* non-copyable */ + Device(const Device&) = delete; + Device & operator=(const Device&) = delete; + + void register_device() + { + registered = true; + lx_device_handle = lx_emul_usb_client_register_device(usb_handle, label.string()); + if (!lx_device_handle) registered = false; + } + + void unregister_device() + { + lx_emul_usb_client_unregister_device(usb_handle, lx_device_handle); + registered = false; + } + + bool deinit() { return !registered && + !state_task_handler.handling_signal && + !urb_task_handler.handling_signal; } + + /********** + ** Task ** + **********/ + + static int state_task_entry(void *arg) + { + Device &device = *reinterpret_cast(arg); + + while (device.state_task_handler.running) { + while (device.state_task_handler.signal_pending()) { + if (genode_usb_client_plugged(device.usb_handle) && !device.registered) + device.register_device(); + + if (!genode_usb_client_plugged(device.usb_handle) && device.registered) + device.unregister_device(); + } + device.state_task_handler.block_and_schedule(); + } + lx_user_destroy_usb_task(device.state_task_handler.task); + return 0; + } + + static int urb_task_entry(void *arg) + { + Device &device = *reinterpret_cast(arg); + + while (device.urb_task_handler.running) { + if (device.registered) + genode_usb_client_execute_completions(device.usb_handle); + + device.urb_task_handler.block_and_schedule(); + } + lx_user_destroy_usb_task(device.urb_task_handler.task); + return 0; + } +}; + + +struct Driver +{ + Env &env; + + Task_handler task_handler; + + Heap &heap { Lx_kit::env().heap }; + + bool use_report { false }; + + Constructible report_rom { }; + + Attached_rom_dataspace config_rom { env, "config" }; + + Leds leds { env, config_rom }; + + Registry devices { }; + + Driver(Env &env, task_struct *task) + : env(env), task_handler(env.ep(), task) + { + try { + Xml_node config = config_rom.xml(); + use_report = config.attribute_value("use_report", false); + } catch(...) { } + + if (use_report) + warning("use compatibility mode: ", + "will claim all HID devices from USB report"); + } + + void scan_report() + { + if (!report_rom.constructed()) { + report_rom.construct(env, "report"); + report_rom->sigh(task_handler.handler); + } + + report_rom->update(); + + devices.for_each([&] (Device & d) { d.updated = false; }); + + try { + Xml_node report_node = report_rom->xml(); + report_node.for_each_sub_node([&] (Xml_node & dev_node) + { + unsigned long c = 0; + dev_node.attribute("class").value(c); + if (c != 0x3 /* USB_CLASS_HID */) return; + + Device::Label label; + dev_node.attribute("label").value(label); + + bool found = false; + + devices.for_each([&] (Device & d) { + if (d.label == label) d.updated = found = true; }); + + if (!found) new (heap) Device(env, devices, label); + }); + } catch(...) { + error("Error parsing USB devices report"); + throw; + }; + + devices.for_each([&] (Device & d) { + if (!d.updated && d.deinit()) { + destroy(heap, &d); + } + }); + } +}; + + +struct Main +{ + Env &env; + + Signal_handler
signal_handler { env.ep(), *this, &Main::handle_signal }; + + Main(Env &env) : env(env) { } + + void handle_signal() + { + Lx_kit::env().scheduler.execute(); + } +}; + + +void Component::construct(Env & env) +{ + static Main main { env }; + Lx_kit::initialize(env, main.signal_handler); + + env.exec_static_constructors(); + + genode_event_init(genode_env_ptr(env), + genode_allocator_ptr(Lx_kit::env().heap)); + + lx_emul_start_kernel(nullptr); +} + + +/********** + ** Task ** + **********/ + +int lx_user_main_task(void *data) +{ + task_struct *task = *static_cast(data); + + static Driver driver { Lx_kit::env().env, task }; + + for (;;) { + while (driver.task_handler.signal_pending()) { + if (!driver.use_report) + static Device dev(driver.env, driver.devices, Device::Label("")); + else + driver.scan_report(); + } + driver.task_handler.block_and_schedule(); + } + return 0; +} diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/arm/generated_dummies.c b/repos/dde_linux/src/drivers/usb_hid/spec/arm/generated_dummies.c new file mode 100644 index 0000000000..6e7fc08671 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/arm/generated_dummies.c @@ -0,0 +1,634 @@ +/* + * \brief Dummy definitions of Linux Kernel functions + * \author Automatically generated file - do no edit + * \date 2023-07-01 + */ + +#include + + +#include + +int ___ratelimit(struct ratelimit_state * rs,const char * func) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const char * __clk_get_name(const struct clk * clk) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct cpumask __cpu_active_mask; + + +#include + +struct irq_domain * __irq_domain_add(struct fwnode_handle * fwnode,unsigned int size,irq_hw_number_t hwirq_max,int direct_max,const struct irq_domain_ops * ops,void * host_data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct irq_desc * __irq_resolve_mapping(struct irq_domain * domain,irq_hw_number_t hwirq,unsigned int * irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +unsigned long __per_cpu_offset[NR_CPUS] = {}; + + +#include + +int __printk_ratelimit(const char * func) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __printk_safe_enter(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __printk_safe_exit(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __put_task_struct(struct task_struct * tsk) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int _printk_deferred(const char * fmt,...) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void add_device_randomness(const void * buf,size_t len) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int add_uevent_var(struct kobj_uevent_env * env,const char * format,...) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +async_cookie_t async_schedule_node(async_func_t func,void * data,int node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void async_synchronize_full(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +noinstr void ct_irq_enter(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void ct_irq_enter_irqson(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +noinstr void ct_irq_exit(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void ct_irq_exit_irqson(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int devm_led_classdev_register_ext(struct device * parent,struct led_classdev * led_cdev,struct led_init_data * init_data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +u64 div64_u64(u64 dividend,u64 divisor) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +u64 div64_u64_rem(u64 dividend,u64 divisor,u64 * remainder) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +s64 div_s64_rem(s64 dividend,s32 divisor,s32 * remainder) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool dma_default_coherent; + + +#include + +void do_softirq_own_stack(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +asmlinkage __visible void dump_stack(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void finish_rcuwait(struct rcuwait * w) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const u8 guid_index[16] = {}; + + +#include + +void handle_fasteoi_irq(struct irq_desc * desc) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool initcall_debug; + + +extern void input_dev_poller_finalize(struct input_dev_poller * poller); +void input_dev_poller_finalize(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_dev_poller_start(struct input_dev_poller * poller); +void input_dev_poller_start(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_dev_poller_stop(struct input_dev_poller * poller); +void input_dev_poller_stop(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int input_ff_create_memless(struct input_dev * dev,void * data,int (* play_effect)(struct input_dev *,void *,struct ff_effect *)) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int input_ff_event(struct input_dev * dev,unsigned int type,unsigned int code,int value) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_mt_release_slots(struct input_dev * dev); +void input_mt_release_slots(struct input_dev * dev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __sched io_schedule(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void io_schedule_finish(int token) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int io_schedule_prepare(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +long __sched io_schedule_timeout(long timeout) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int irq_can_set_affinity(unsigned int irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_domain_free_irqs_common(struct irq_domain * domain,unsigned int virq,unsigned int nr_irqs) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_domain_set_info(struct irq_domain * domain,unsigned int virq,irq_hw_number_t hwirq,const struct irq_chip * chip,void * chip_data,irq_flow_handler_t handler,void * handler_data,const char * handler_name) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_modify_status(unsigned int irq,unsigned long clr,unsigned long set) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int irq_set_affinity(unsigned int irq,const struct cpumask * cpumask) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_set_default_host(struct irq_domain * domain) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct irq_desc * irq_to_desc(unsigned int irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_work_tick(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int kobject_synth_uevent(struct kobject * kobj,const char * buf,size_t count) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[]) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +unsigned long lpj_fine; + + +#include + +void of_device_uevent(struct device * dev,struct kobj_uevent_env * env) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct property * of_find_property(const struct device_node * np,const char * name,int * lenp) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const struct fwnode_operations of_fwnode_ops; + + +#include + +const char * of_prop_next_string(struct property * prop,const char * cur) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int of_property_read_string(const struct device_node * np,const char * propname,const char ** out_string) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void smp_call_function_many(const struct cpumask * mask,smp_call_func_t func,void * info,bool wait) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool static_key_initialized; + + +#include + +void tick_broadcast(const struct cpumask * mask) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool timerqueue_add(struct timerqueue_head * head,struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool timerqueue_del(struct timerqueue_head * head,struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct timerqueue_node * timerqueue_iterate_next(struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void usb_block_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_clear_halt(struct usb_device * dev,int pipe) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_devio_cleanup(void); +void usb_devio_cleanup(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_disable_endpoint(struct usb_device * dev,unsigned int epaddr,bool reset_hardware); +void usb_disable_endpoint(struct usb_device * dev,unsigned int epaddr,bool reset_hardware) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_free_streams(struct usb_interface * interface,struct usb_host_endpoint ** eps,unsigned int num_eps,gfp_t mem_flags) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_get_device_descriptor(struct usb_device * dev,unsigned int size); +int usb_get_device_descriptor(struct usb_device * dev,unsigned int size) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_get_status(struct usb_device * dev,int recip,int type,int target,void * data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_hcd_alloc_bandwidth(struct usb_device * udev,struct usb_host_config * new_config,struct usb_host_interface * cur_alt,struct usb_host_interface * new_alt) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_hcd_find_raw_port_number(struct usb_hcd * hcd,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_hub_create_port_device(struct usb_hub * hub,int port1); +int usb_hub_create_port_device(struct usb_hub * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_hub_remove_port_device(struct usb_hub * hub,int port1); +void usb_hub_remove_port_device(struct usb_hub * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_interrupt_msg(struct usb_device * usb_dev,unsigned int pipe,void * data,int len,int * actual_length,int timeout) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_major_cleanup(void); +void usb_major_cleanup(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct device_node * usb_of_get_device_node(struct usb_device * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_set_isoch_delay(struct usb_device * dev); +int usb_set_isoch_delay(struct usb_device * dev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const char * usb_speed_string(enum usb_device_speed speed) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_unlink_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void usb_unpoison_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const u8 uuid_index[16] = {}; + + +#include + +void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task) +{ + lx_emul_trace_and_stop(__func__); +} + diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/arm/source.list b/repos/dde_linux/src/drivers/usb_hid/spec/arm/source.list new file mode 100644 index 0000000000..ae8c5f44bf --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/arm/source.list @@ -0,0 +1,72 @@ +arch/arm/lib/clearbit.S +arch/arm/lib/div64.S +arch/arm/lib/findbit.S +arch/arm/lib/setbit.S +arch/arm/lib/strchr.S +arch/arm/lib/testclearbit.S +arch/arm/lib/testsetbit.S +drivers/base/bus.c +drivers/base/core.c +drivers/base/class.c +drivers/base/devres.c +drivers/base/driver.c +drivers/base/dd.c +drivers/base/property.c +drivers/hid/hid-apple.c +drivers/hid/hid-cherry.c +drivers/hid/hid-core.c +drivers/hid/hid-generic.c +drivers/hid/hid-holtek-mouse.c +drivers/hid/hid-input.c +drivers/hid/hid-microsoft.c +drivers/hid/hid-quirks.c +drivers/hid/usbhid/hid-core.c +drivers/input/input.c +drivers/usb/core/config.c +drivers/usb/core/driver.c +drivers/usb/core/generic.c +drivers/usb/core/hub.c +drivers/usb/core/quirks.c +drivers/usb/core/usb.c +kernel/kthread.c +kernel/locking/mutex.c +kernel/locking/osq_lock.c +kernel/locking/rwsem.c +kernel/notifier.c +kernel/sched/build_utility.c +kernel/smpboot.c +kernel/softirq.c +kernel/time/clockevents.c +kernel/time/clocksource.c +kernel/time/hrtimer.c +kernel/time/jiffies.c +kernel/time/ntp.c +kernel/time/tick-broadcast.c +kernel/time/tick-broadcast-hrtimer.c +kernel/time/tick-common.c +kernel/time/tick-oneshot.c +kernel/time/tick-sched.c +kernel/time/time.c +kernel/time/timeconv.c +kernel/time/timecounter.c +kernel/time/timekeeping.c +kernel/time/timer.c +kernel/time/timer_list.c +kernel/workqueue.c +mm/util.c +lib/bitmap.c +lib/ctype.c +lib/find_bit.c +lib/hexdump.c +lib/hweight.c +lib/idr.c +lib/kasprintf.c +lib/klist.c +lib/kobject.c +lib/kstrtox.c +lib/radix-tree.c +lib/xarray.c +lib/siphash.c +lib/string.c +lib/string_helpers.c +lib/vsprintf.c diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/arm/target.mk b/repos/dde_linux/src/drivers/usb_hid/spec/arm/target.mk new file mode 100644 index 0000000000..9428a3be70 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/arm/target.mk @@ -0,0 +1,3 @@ +REQUIRES := arm + +include $(PRG_DIR)/../../target.inc diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/generated_dummies.c b/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/generated_dummies.c new file mode 100644 index 0000000000..d94e736a94 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/generated_dummies.c @@ -0,0 +1,599 @@ +/* + * \brief Dummy definitions of Linux Kernel functions + * \author Automatically generated file - do no edit + * \date 2023-06-28 + */ + +#include + + +#include + +int ___ratelimit(struct ratelimit_state * rs,const char * func) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const char * __clk_get_name(const struct clk * clk) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct cpumask __cpu_active_mask; + + +#include + +struct irq_domain * __irq_domain_add(struct fwnode_handle * fwnode,unsigned int size,irq_hw_number_t hwirq_max,int direct_max,const struct irq_domain_ops * ops,void * host_data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct irq_desc * __irq_resolve_mapping(struct irq_domain * domain,irq_hw_number_t hwirq,unsigned int * irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +unsigned long __per_cpu_offset[NR_CPUS] = {}; + + +#include + +int __printk_ratelimit(const char * func) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __printk_safe_enter(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __printk_safe_exit(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __put_task_struct(struct task_struct * tsk) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int _printk_deferred(const char * fmt,...) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void add_device_randomness(const void * buf,size_t len) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int add_uevent_var(struct kobj_uevent_env * env,const char * format,...) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +async_cookie_t async_schedule_node(async_func_t func,void * data,int node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void async_synchronize_full(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void ct_irq_enter_irqson(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void ct_irq_exit_irqson(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int devm_led_classdev_register_ext(struct device * parent,struct led_classdev * led_cdev,struct led_init_data * init_data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool dma_default_coherent; + + +#include + +void do_softirq_own_stack(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +asmlinkage __visible void dump_stack(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void finish_rcuwait(struct rcuwait * w) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const u8 guid_index[16] = {}; + + +#include + +void handle_fasteoi_irq(struct irq_desc * desc) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool initcall_debug; + + +extern void input_dev_poller_finalize(struct input_dev_poller * poller); +void input_dev_poller_finalize(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_dev_poller_start(struct input_dev_poller * poller); +void input_dev_poller_start(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_dev_poller_stop(struct input_dev_poller * poller); +void input_dev_poller_stop(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int input_ff_create_memless(struct input_dev * dev,void * data,int (* play_effect)(struct input_dev *,void *,struct ff_effect *)) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int input_ff_event(struct input_dev * dev,unsigned int type,unsigned int code,int value) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_mt_release_slots(struct input_dev * dev); +void input_mt_release_slots(struct input_dev * dev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __sched io_schedule(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void io_schedule_finish(int token) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int io_schedule_prepare(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +long __sched io_schedule_timeout(long timeout) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct io_tlb_mem io_tlb_default_mem; + + +#include + +int irq_can_set_affinity(unsigned int irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_domain_free_irqs_common(struct irq_domain * domain,unsigned int virq,unsigned int nr_irqs) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_domain_set_info(struct irq_domain * domain,unsigned int virq,irq_hw_number_t hwirq,const struct irq_chip * chip,void * chip_data,irq_flow_handler_t handler,void * handler_data,const char * handler_name) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_modify_status(unsigned int irq,unsigned long clr,unsigned long set) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int irq_set_affinity(unsigned int irq,const struct cpumask * cpumask) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_set_default_host(struct irq_domain * domain) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct irq_desc * irq_to_desc(unsigned int irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_work_tick(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int kobject_synth_uevent(struct kobject * kobj,const char * buf,size_t count) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[]) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +unsigned long lpj_fine; + + +#include + +void of_device_uevent(struct device * dev,struct kobj_uevent_env * env) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct property * of_find_property(const struct device_node * np,const char * name,int * lenp) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const struct fwnode_operations of_fwnode_ops; + + +#include + +const char * of_prop_next_string(struct property * prop,const char * cur) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int of_property_read_string(const struct device_node * np,const char * propname,const char ** out_string) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void smp_call_function_many(const struct cpumask * mask,smp_call_func_t func,void * info,bool wait) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool static_key_initialized; + + +#include + +void tick_broadcast(const struct cpumask * mask) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool timerqueue_add(struct timerqueue_head * head,struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool timerqueue_del(struct timerqueue_head * head,struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct timerqueue_node * timerqueue_iterate_next(struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void usb_block_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_clear_halt(struct usb_device * dev,int pipe) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_devio_cleanup(void); +void usb_devio_cleanup(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_disable_endpoint(struct usb_device * dev,unsigned int epaddr,bool reset_hardware); +void usb_disable_endpoint(struct usb_device * dev,unsigned int epaddr,bool reset_hardware) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_free_streams(struct usb_interface * interface,struct usb_host_endpoint ** eps,unsigned int num_eps,gfp_t mem_flags) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_get_device_descriptor(struct usb_device * dev,unsigned int size); +int usb_get_device_descriptor(struct usb_device * dev,unsigned int size) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_get_status(struct usb_device * dev,int recip,int type,int target,void * data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_hcd_alloc_bandwidth(struct usb_device * udev,struct usb_host_config * new_config,struct usb_host_interface * cur_alt,struct usb_host_interface * new_alt) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_hcd_find_raw_port_number(struct usb_hcd * hcd,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_hub_create_port_device(struct usb_hub * hub,int port1); +int usb_hub_create_port_device(struct usb_hub * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_hub_remove_port_device(struct usb_hub * hub,int port1); +void usb_hub_remove_port_device(struct usb_hub * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_interrupt_msg(struct usb_device * usb_dev,unsigned int pipe,void * data,int len,int * actual_length,int timeout) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_major_cleanup(void); +void usb_major_cleanup(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct device_node * usb_of_get_device_node(struct usb_device * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_set_isoch_delay(struct usb_device * dev); +int usb_set_isoch_delay(struct usb_device * dev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const char * usb_speed_string(enum usb_device_speed speed) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_unlink_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void usb_unpoison_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const u8 uuid_index[16] = {}; + + +#include + +void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task) +{ + lx_emul_trace_and_stop(__func__); +} + diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/source.list b/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/source.list new file mode 100644 index 0000000000..a7e5322d02 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/source.list @@ -0,0 +1,70 @@ +arch/arm64/lib/memcmp.S +arch/arm64/lib/strchr.S +arch/arm64/lib/strcmp.S +arch/arm64/lib/strlen.S +arch/arm64/lib/strncmp.S +drivers/base/bus.c +drivers/base/core.c +drivers/base/class.c +drivers/base/devres.c +drivers/base/driver.c +drivers/base/dd.c +drivers/base/property.c +drivers/hid/hid-apple.c +drivers/hid/hid-cherry.c +drivers/hid/hid-core.c +drivers/hid/hid-generic.c +drivers/hid/hid-holtek-mouse.c +drivers/hid/hid-input.c +drivers/hid/hid-microsoft.c +drivers/hid/hid-quirks.c +drivers/hid/usbhid/hid-core.c +drivers/input/input.c +drivers/usb/core/config.c +drivers/usb/core/driver.c +drivers/usb/core/generic.c +drivers/usb/core/hub.c +drivers/usb/core/quirks.c +drivers/usb/core/usb.c +kernel/kthread.c +kernel/locking/mutex.c +kernel/locking/osq_lock.c +kernel/locking/rwsem.c +kernel/notifier.c +kernel/sched/build_utility.c +kernel/smpboot.c +kernel/softirq.c +kernel/time/clockevents.c +kernel/time/clocksource.c +kernel/time/hrtimer.c +kernel/time/jiffies.c +kernel/time/ntp.c +kernel/time/tick-broadcast.c +kernel/time/tick-broadcast-hrtimer.c +kernel/time/tick-common.c +kernel/time/tick-oneshot.c +kernel/time/tick-sched.c +kernel/time/time.c +kernel/time/timeconv.c +kernel/time/timecounter.c +kernel/time/timekeeping.c +kernel/time/timer.c +kernel/time/timer_list.c +kernel/workqueue.c +mm/util.c +lib/bitmap.c +lib/ctype.c +lib/find_bit.c +lib/hexdump.c +lib/hweight.c +lib/idr.c +lib/kasprintf.c +lib/klist.c +lib/kobject.c +lib/kstrtox.c +lib/radix-tree.c +lib/xarray.c +lib/siphash.c +lib/string.c +lib/string_helpers.c +lib/vsprintf.c diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/target.mk b/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/target.mk new file mode 100644 index 0000000000..ef575f8cbd --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/arm_64/target.mk @@ -0,0 +1,5 @@ +REQUIRES := arm_64 + +SRC_C += lx_emul/shadow/arch/arm64/kernel/smp.c + +include $(PRG_DIR)/../../target.inc diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/generated_dummies.c b/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/generated_dummies.c new file mode 100644 index 0000000000..d3fd15ca47 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/generated_dummies.c @@ -0,0 +1,498 @@ +/* + * \brief Dummy definitions of Linux Kernel functions + * \author Automatically generated file - do no edit + * \date 2023-06-28 + */ + +#include + + +#include + +int ___ratelimit(struct ratelimit_state * rs,const char * func) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct cpumask __cpu_active_mask; + + +#include + +int __printk_ratelimit(const char * func) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __printk_safe_enter(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __printk_safe_exit(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __put_task_struct(struct task_struct * tsk) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +unsigned long _copy_to_user(void __user * to,const void * from,unsigned long n) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int _printk_deferred(const char * fmt,...) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void ack_bad_irq(unsigned int irq); +void ack_bad_irq(unsigned int irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void add_device_randomness(const void * buf,size_t len) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int add_uevent_var(struct kobj_uevent_env * env,const char * format,...) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +async_cookie_t async_schedule_node(async_func_t func,void * data,int node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void async_synchronize_full(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int devm_led_classdev_register_ext(struct device * parent,struct led_classdev * led_cdev,struct led_init_data * init_data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +u64 div64_u64(u64 dividend,u64 divisor) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +u64 div64_u64_rem(u64 dividend,u64 divisor,u64 * remainder) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +s64 div_s64_rem(s64 dividend,s32 divisor,s32 * remainder) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void do_softirq_own_stack(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +asmlinkage __visible void dump_stack(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void finish_rcuwait(struct rcuwait * w) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const u8 guid_index[16] = {}; + + +#include + +unsigned long init_stack[THREAD_SIZE / sizeof(unsigned long)] = {}; + + +#include + +bool initcall_debug; + + +extern void input_dev_poller_finalize(struct input_dev_poller * poller); +void input_dev_poller_finalize(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_dev_poller_start(struct input_dev_poller * poller); +void input_dev_poller_start(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_dev_poller_stop(struct input_dev_poller * poller); +void input_dev_poller_stop(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int input_ff_create_memless(struct input_dev * dev,void * data,int (* play_effect)(struct input_dev *,void *,struct ff_effect *)) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int input_ff_event(struct input_dev * dev,unsigned int type,unsigned int code,int value) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_mt_release_slots(struct input_dev * dev); +void input_mt_release_slots(struct input_dev * dev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __sched io_schedule(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void io_schedule_finish(int token) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int io_schedule_prepare(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +long __sched io_schedule_timeout(long timeout) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int irq_can_set_affinity(unsigned int irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int irq_set_affinity(unsigned int irq,const struct cpumask * cpumask) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_work_tick(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int kobject_synth_uevent(struct kobject * kobj,const char * buf,size_t count) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[]) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int param_set_copystring(const char * val,const struct kernel_param * kp) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void smp_call_function_many(const struct cpumask * mask,smp_call_func_t func,void * info,bool wait) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int smp_call_function_single(int cpu,smp_call_func_t func,void * info,int wait) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool static_key_initialized; + + +#include + +bool timerqueue_add(struct timerqueue_head * head,struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool timerqueue_del(struct timerqueue_head * head,struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct timerqueue_node * timerqueue_iterate_next(struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void usb_block_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_clear_halt(struct usb_device * dev,int pipe) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_devio_cleanup(void); +void usb_devio_cleanup(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_disable_endpoint(struct usb_device * dev,unsigned int epaddr,bool reset_hardware); +void usb_disable_endpoint(struct usb_device * dev,unsigned int epaddr,bool reset_hardware) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_free_streams(struct usb_interface * interface,struct usb_host_endpoint ** eps,unsigned int num_eps,gfp_t mem_flags) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_get_device_descriptor(struct usb_device * dev,unsigned int size); +int usb_get_device_descriptor(struct usb_device * dev,unsigned int size) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_get_status(struct usb_device * dev,int recip,int type,int target,void * data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_hcd_alloc_bandwidth(struct usb_device * udev,struct usb_host_config * new_config,struct usb_host_interface * cur_alt,struct usb_host_interface * new_alt) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_hcd_find_raw_port_number(struct usb_hcd * hcd,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_hub_create_port_device(struct usb_hub * hub,int port1); +int usb_hub_create_port_device(struct usb_hub * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_hub_remove_port_device(struct usb_hub * hub,int port1); +void usb_hub_remove_port_device(struct usb_hub * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_interrupt_msg(struct usb_device * usb_dev,unsigned int pipe,void * data,int len,int * actual_length,int timeout) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_major_cleanup(void); +void usb_major_cleanup(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_set_isoch_delay(struct usb_device * dev); +int usb_set_isoch_delay(struct usb_device * dev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const char * usb_speed_string(enum usb_device_speed speed) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_unlink_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void usb_unpoison_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const u8 uuid_index[16] = {}; + + +#include + +void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task) +{ + lx_emul_trace_and_stop(__func__); +} + diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/source.list b/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/source.list new file mode 100644 index 0000000000..77ec7252cc --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/source.list @@ -0,0 +1,64 @@ +arch/x86/lib/hweight.S +drivers/base/bus.c +drivers/base/core.c +drivers/base/class.c +drivers/base/devres.c +drivers/base/driver.c +drivers/base/dd.c +drivers/base/property.c +drivers/hid/hid-apple.c +drivers/hid/hid-cherry.c +drivers/hid/hid-core.c +drivers/hid/hid-generic.c +drivers/hid/hid-holtek-mouse.c +drivers/hid/hid-input.c +drivers/hid/hid-microsoft.c +drivers/hid/hid-quirks.c +drivers/hid/usbhid/hid-core.c +drivers/input/input.c +drivers/usb/core/config.c +drivers/usb/core/driver.c +drivers/usb/core/generic.c +drivers/usb/core/hub.c +drivers/usb/core/quirks.c +drivers/usb/core/usb.c +kernel/kthread.c +kernel/locking/mutex.c +kernel/locking/osq_lock.c +kernel/locking/rwsem.c +kernel/notifier.c +kernel/sched/build_utility.c +kernel/smpboot.c +kernel/softirq.c +kernel/time/clockevents.c +kernel/time/clocksource.c +kernel/time/hrtimer.c +kernel/time/jiffies.c +kernel/time/ntp.c +kernel/time/tick-broadcast.c +kernel/time/tick-common.c +kernel/time/tick-oneshot.c +kernel/time/tick-sched.c +kernel/time/time.c +kernel/time/timeconv.c +kernel/time/timecounter.c +kernel/time/timekeeping.c +kernel/time/timer.c +kernel/time/timer_list.c +kernel/workqueue.c +mm/util.c +lib/bitmap.c +lib/ctype.c +lib/find_bit.c +lib/hexdump.c +lib/idr.c +lib/kasprintf.c +lib/klist.c +lib/kobject.c +lib/kstrtox.c +lib/radix-tree.c +lib/xarray.c +lib/siphash.c +lib/string.c +lib/string_helpers.c +lib/vsprintf.c diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/target.mk b/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/target.mk new file mode 100644 index 0000000000..b58507b97e --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/x86_32/target.mk @@ -0,0 +1,3 @@ +REQUIRES := x86_32 + +include $(PRG_DIR)/../../target.inc diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/generated_dummies.c b/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/generated_dummies.c new file mode 100644 index 0000000000..22e7061406 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/generated_dummies.c @@ -0,0 +1,466 @@ +/* + * \brief Dummy definitions of Linux Kernel functions + * \author Automatically generated file - do no edit + * \date 2023-06-26 + */ + +#include + + +#include + +int ___ratelimit(struct ratelimit_state * rs,const char * func) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct cpumask __cpu_active_mask; + + +#include + +int __printk_ratelimit(const char * func) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __printk_safe_enter(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __printk_safe_exit(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __put_task_struct(struct task_struct * tsk) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +unsigned long _copy_to_user(void __user * to,const void * from,unsigned long n) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int _printk_deferred(const char * fmt,...) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void ack_bad_irq(unsigned int irq); +void ack_bad_irq(unsigned int irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void add_device_randomness(const void * buf,size_t len) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int add_uevent_var(struct kobj_uevent_env * env,const char * format,...) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +async_cookie_t async_schedule_node(async_func_t func,void * data,int node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void async_synchronize_full(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int devm_led_classdev_register_ext(struct device * parent,struct led_classdev * led_cdev,struct led_init_data * init_data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +asmlinkage __visible void dump_stack(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void finish_rcuwait(struct rcuwait * w) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const u8 guid_index[16] = {}; + + +#include + +bool initcall_debug; + + +extern void input_dev_poller_finalize(struct input_dev_poller * poller); +void input_dev_poller_finalize(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_dev_poller_start(struct input_dev_poller * poller); +void input_dev_poller_start(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_dev_poller_stop(struct input_dev_poller * poller); +void input_dev_poller_stop(struct input_dev_poller * poller) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int input_ff_create_memless(struct input_dev * dev,void * data,int (* play_effect)(struct input_dev *,void *,struct ff_effect *)) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int input_ff_event(struct input_dev * dev,unsigned int type,unsigned int code,int value) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void input_mt_release_slots(struct input_dev * dev); +void input_mt_release_slots(struct input_dev * dev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void __sched io_schedule(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void io_schedule_finish(int token) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int io_schedule_prepare(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +long __sched io_schedule_timeout(long timeout) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct io_tlb_mem io_tlb_default_mem; + + +#include + +int irq_can_set_affinity(unsigned int irq) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int irq_set_affinity(unsigned int irq,const struct cpumask * cpumask) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void irq_work_tick(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int kobject_synth_uevent(struct kobject * kobj,const char * buf,size_t count) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[]) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int param_set_copystring(const char * val,const struct kernel_param * kp) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void smp_call_function_many(const struct cpumask * mask,smp_call_func_t func,void * info,bool wait) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int smp_call_function_single(int cpu,smp_call_func_t func,void * info,int wait) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool static_key_initialized; + + +#include + +bool timerqueue_add(struct timerqueue_head * head,struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +bool timerqueue_del(struct timerqueue_head * head,struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +struct timerqueue_node * timerqueue_iterate_next(struct timerqueue_node * node) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void usb_block_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_clear_halt(struct usb_device * dev,int pipe) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_devio_cleanup(void); +void usb_devio_cleanup(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_disable_endpoint(struct usb_device * dev,unsigned int epaddr,bool reset_hardware); +void usb_disable_endpoint(struct usb_device * dev,unsigned int epaddr,bool reset_hardware) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_free_streams(struct usb_interface * interface,struct usb_host_endpoint ** eps,unsigned int num_eps,gfp_t mem_flags) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_get_device_descriptor(struct usb_device * dev,unsigned int size); +int usb_get_device_descriptor(struct usb_device * dev,unsigned int size) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_get_status(struct usb_device * dev,int recip,int type,int target,void * data) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_hcd_alloc_bandwidth(struct usb_device * udev,struct usb_host_config * new_config,struct usb_host_interface * cur_alt,struct usb_host_interface * new_alt) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_hcd_find_raw_port_number(struct usb_hcd * hcd,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_hub_create_port_device(struct usb_hub * hub,int port1); +int usb_hub_create_port_device(struct usb_hub * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_hub_remove_port_device(struct usb_hub * hub,int port1); +void usb_hub_remove_port_device(struct usb_hub * hub,int port1) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_interrupt_msg(struct usb_device * usb_dev,unsigned int pipe,void * data,int len,int * actual_length,int timeout) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern void usb_major_cleanup(void); +void usb_major_cleanup(void) +{ + lx_emul_trace_and_stop(__func__); +} + + +extern int usb_set_isoch_delay(struct usb_device * dev); +int usb_set_isoch_delay(struct usb_device * dev) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const char * usb_speed_string(enum usb_device_speed speed) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +int usb_unlink_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void usb_unpoison_urb(struct urb * urb) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +const u8 uuid_index[16] = {}; + + +#include + +void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task) +{ + lx_emul_trace_and_stop(__func__); +} + diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/source.list b/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/source.list new file mode 100644 index 0000000000..77ec7252cc --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/source.list @@ -0,0 +1,64 @@ +arch/x86/lib/hweight.S +drivers/base/bus.c +drivers/base/core.c +drivers/base/class.c +drivers/base/devres.c +drivers/base/driver.c +drivers/base/dd.c +drivers/base/property.c +drivers/hid/hid-apple.c +drivers/hid/hid-cherry.c +drivers/hid/hid-core.c +drivers/hid/hid-generic.c +drivers/hid/hid-holtek-mouse.c +drivers/hid/hid-input.c +drivers/hid/hid-microsoft.c +drivers/hid/hid-quirks.c +drivers/hid/usbhid/hid-core.c +drivers/input/input.c +drivers/usb/core/config.c +drivers/usb/core/driver.c +drivers/usb/core/generic.c +drivers/usb/core/hub.c +drivers/usb/core/quirks.c +drivers/usb/core/usb.c +kernel/kthread.c +kernel/locking/mutex.c +kernel/locking/osq_lock.c +kernel/locking/rwsem.c +kernel/notifier.c +kernel/sched/build_utility.c +kernel/smpboot.c +kernel/softirq.c +kernel/time/clockevents.c +kernel/time/clocksource.c +kernel/time/hrtimer.c +kernel/time/jiffies.c +kernel/time/ntp.c +kernel/time/tick-broadcast.c +kernel/time/tick-common.c +kernel/time/tick-oneshot.c +kernel/time/tick-sched.c +kernel/time/time.c +kernel/time/timeconv.c +kernel/time/timecounter.c +kernel/time/timekeeping.c +kernel/time/timer.c +kernel/time/timer_list.c +kernel/workqueue.c +mm/util.c +lib/bitmap.c +lib/ctype.c +lib/find_bit.c +lib/hexdump.c +lib/idr.c +lib/kasprintf.c +lib/klist.c +lib/kobject.c +lib/kstrtox.c +lib/radix-tree.c +lib/xarray.c +lib/siphash.c +lib/string.c +lib/string_helpers.c +lib/vsprintf.c diff --git a/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/target.mk b/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/target.mk new file mode 100644 index 0000000000..84bc74d54e --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/spec/x86_64/target.mk @@ -0,0 +1,3 @@ +REQUIRES := x86_64 + +include $(PRG_DIR)/../../target.inc diff --git a/repos/dde_linux/src/drivers/usb_hid/target.inc b/repos/dde_linux/src/drivers/usb_hid/target.inc new file mode 100644 index 0000000000..27784ba841 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/target.inc @@ -0,0 +1,36 @@ +TARGET = usb_hid_drv +LIBS = base jitterentropy virt_lx_emul + +INC_DIR = $(PRG_DIR)/../.. $(REP_DIR)/src/lib/usb_client + +SRC_C += dummies.c \ + generated_dummies.c \ + led.c \ + lx_emul.c \ + lx_user.c + +SRC_C += lx_emul/shadow/drivers/input/evdev.c \ + lx_emul/virt/shadow/drivers/usb/core/message.c \ + lx_emul/virt/shadow/drivers/usb/core/urb.c \ + lx_emul/virt/usb_client.c + +SRC_CC = main.cc + +SRC_CC += lx_emul/event.cc \ + lx_emul/random.cc + +SRC_CC += genode_c_api/event.cc \ + genode_c_api/usb_client.cc + +vpath %.c $(PRG_DIR) +vpath %.c $(PRG_DIR)/../.. +vpath %.cc $(PRG_DIR)/../.. +vpath %.c $(REP_DIR)/src/lib +vpath %.cc $(REP_DIR)/src/lib + +C_API = $(dir $(call select_from_repositories,src/lib/genode_c_api)) + +vpath genode_c_api/event.cc $(C_API) +vpath genode_c_api/usb_client.cc $(C_API) + +# vim: set ft=make : diff --git a/repos/dde_linux/src/drivers/usb_hid/usb_hid.h b/repos/dde_linux/src/drivers/usb_hid/usb_hid.h new file mode 100644 index 0000000000..4f26ecd346 --- /dev/null +++ b/repos/dde_linux/src/drivers/usb_hid/usb_hid.h @@ -0,0 +1,34 @@ +/* + * \brief C/C++ interface for this driver + * \author Sebastian Sumpf + * \date 2023-06-29 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct task_struct; + +int lx_user_main_task(void *); +struct task_struct *lx_user_new_usb_task(int (*func)(void*), void *args); +void lx_user_destroy_usb_task(struct task_struct*); + +void lx_led_state_update(bool capslock, bool numlock, bool scrlock); + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +