save
This commit is contained in:
5
common.c
5
common.c
@@ -70,6 +70,11 @@ void fb_open(int fb_num, struct fb_info *fb_info)
|
||||
ASSERT(ptr != MAP_FAILED);
|
||||
|
||||
fb_info->ptr = ptr;
|
||||
|
||||
printf("framebuffer at 0x%lx, 0x%x bytes, mapped to %p\n",
|
||||
fb_info->fix.smem_start,
|
||||
fb_info->fix.smem_len,
|
||||
fb_info->ptr);
|
||||
}
|
||||
|
||||
void tty_restore(void){
|
||||
|
||||
13
fb-test.c
13
fb-test.c
@@ -138,15 +138,15 @@ int main(int argc, char **argv)
|
||||
|
||||
signal(SIGINT, my_handler);
|
||||
|
||||
for(i = 0; i < 1; i++){
|
||||
fb_set_area(&fb_info, 0, 0, 128, 32);
|
||||
sleep(1);
|
||||
fb_clear_area(&fb_info, 0, 0, 128, 32);
|
||||
sleep(1);
|
||||
//for(i = 0; i < 1; i++){
|
||||
//fb_set_area(&fb_info, 0, 0, 128, 32);
|
||||
//sleep(1);
|
||||
//fb_clear_area(&fb_info, 0, 0, 128, 32);
|
||||
//sleep(1);
|
||||
//fb_put_string(&fb_info, 0, 0, "I:", 2, 1, 2);
|
||||
//fb_put_string(&fb_info, 0, 16, "ABCDEFGHIJKLMNOPQRSTUVW", 26, 1, 2);
|
||||
//sleep(1);
|
||||
}
|
||||
//}
|
||||
|
||||
fb_put_string(&fb_info, 0, 0, "I:", 2, 1, 2);
|
||||
//for(i = 0; i < 10; i++){
|
||||
@@ -180,7 +180,6 @@ int main(int argc, char **argv)
|
||||
// printf("interrupt\n");
|
||||
//}
|
||||
|
||||
|
||||
gpio_state = 0x00;
|
||||
for(i = 1; i < 9; i++){
|
||||
gpio_state = gpio_state << 1;
|
||||
|
||||
913
lkm/.display.o.cmd
Normal file
913
lkm/.display.o.cmd
Normal file
@@ -0,0 +1,913 @@
|
||||
cmd_/home/pi/io-state/lkm/display.o := gcc -Wp,-MD,/home/pi/io-state/lkm/.display.o.d -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/6/include -I./arch/arm/include -I./arch/arm/include/generated/uapi -I./arch/arm/include/generated -I./include -I./arch/arm/include/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mno-thumb-interwork -mfpu=vfp -funwind-tables -marm -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -O2 --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DMODULE -DKBUILD_BASENAME='"display"' -DKBUILD_MODNAME='"h1502display"' -c -o /home/pi/io-state/lkm/.tmp_display.o /home/pi/io-state/lkm/display.c
|
||||
|
||||
source_/home/pi/io-state/lkm/display.o := /home/pi/io-state/lkm/display.c
|
||||
|
||||
deps_/home/pi/io-state/lkm/display.o := \
|
||||
include/linux/mutex.h \
|
||||
$(wildcard include/config/debug/mutexes.h) \
|
||||
$(wildcard include/config/mutex/spin/on/owner.h) \
|
||||
$(wildcard include/config/debug/lock/alloc.h) \
|
||||
arch/arm/include/generated/asm/current.h \
|
||||
include/asm-generic/current.h \
|
||||
include/linux/thread_info.h \
|
||||
$(wildcard include/config/thread/info/in/task.h) \
|
||||
$(wildcard include/config/compat.h) \
|
||||
$(wildcard include/config/debug/stack/usage.h) \
|
||||
$(wildcard include/config/have/arch/within/stack/frames.h) \
|
||||
$(wildcard include/config/hardened/usercopy.h) \
|
||||
include/linux/types.h \
|
||||
$(wildcard include/config/have/uid16.h) \
|
||||
$(wildcard include/config/uid16.h) \
|
||||
$(wildcard include/config/lbdaf.h) \
|
||||
$(wildcard include/config/arch/dma/addr/t/64bit.h) \
|
||||
$(wildcard include/config/phys/addr/t/64bit.h) \
|
||||
$(wildcard include/config/64bit.h) \
|
||||
include/uapi/linux/types.h \
|
||||
arch/arm/include/asm/types.h \
|
||||
include/asm-generic/int-ll64.h \
|
||||
include/uapi/asm-generic/int-ll64.h \
|
||||
arch/arm/include/generated/asm/bitsperlong.h \
|
||||
include/asm-generic/bitsperlong.h \
|
||||
include/uapi/asm-generic/bitsperlong.h \
|
||||
include/uapi/linux/posix_types.h \
|
||||
include/linux/stddef.h \
|
||||
include/uapi/linux/stddef.h \
|
||||
include/linux/compiler.h \
|
||||
$(wildcard include/config/sparse/rcu/pointer.h) \
|
||||
$(wildcard include/config/trace/branch/profiling.h) \
|
||||
$(wildcard include/config/profile/all/branches.h) \
|
||||
$(wildcard include/config/kasan.h) \
|
||||
$(wildcard include/config/enable/must/check.h) \
|
||||
$(wildcard include/config/enable/warn/deprecated.h) \
|
||||
$(wildcard include/config/kprobes.h) \
|
||||
include/linux/compiler-gcc.h \
|
||||
$(wildcard include/config/arch/supports/optimized/inlining.h) \
|
||||
$(wildcard include/config/optimize/inlining.h) \
|
||||
$(wildcard include/config/gcov/kernel.h) \
|
||||
$(wildcard include/config/arch/use/builtin/bswap.h) \
|
||||
arch/arm/include/uapi/asm/posix_types.h \
|
||||
include/uapi/asm-generic/posix_types.h \
|
||||
include/linux/bug.h \
|
||||
$(wildcard include/config/generic/bug.h) \
|
||||
arch/arm/include/asm/bug.h \
|
||||
$(wildcard include/config/thumb2/kernel.h) \
|
||||
$(wildcard include/config/debug/bugverbose.h) \
|
||||
$(wildcard include/config/arm/lpae.h) \
|
||||
include/linux/linkage.h \
|
||||
include/linux/stringify.h \
|
||||
include/linux/export.h \
|
||||
$(wildcard include/config/have/underscore/symbol/prefix.h) \
|
||||
$(wildcard include/config/modules.h) \
|
||||
$(wildcard include/config/modversions.h) \
|
||||
$(wildcard include/config/trim/unused/ksyms.h) \
|
||||
$(wildcard include/config/unused/symbols.h) \
|
||||
arch/arm/include/asm/linkage.h \
|
||||
arch/arm/include/asm/opcodes.h \
|
||||
$(wildcard include/config/cpu/endian/be8.h) \
|
||||
$(wildcard include/config/cpu/endian/be32.h) \
|
||||
include/linux/swab.h \
|
||||
include/uapi/linux/swab.h \
|
||||
arch/arm/include/asm/swab.h \
|
||||
arch/arm/include/uapi/asm/swab.h \
|
||||
include/asm-generic/bug.h \
|
||||
$(wildcard include/config/bug.h) \
|
||||
$(wildcard include/config/generic/bug/relative/pointers.h) \
|
||||
$(wildcard include/config/smp.h) \
|
||||
include/linux/kernel.h \
|
||||
$(wildcard include/config/preempt/voluntary.h) \
|
||||
$(wildcard include/config/debug/atomic/sleep.h) \
|
||||
$(wildcard include/config/mmu.h) \
|
||||
$(wildcard include/config/prove/locking.h) \
|
||||
$(wildcard include/config/panic/timeout.h) \
|
||||
$(wildcard include/config/tracing.h) \
|
||||
$(wildcard include/config/ftrace/mcount/record.h) \
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h \
|
||||
include/linux/bitops.h \
|
||||
arch/arm/include/asm/bitops.h \
|
||||
include/linux/irqflags.h \
|
||||
$(wildcard include/config/trace/irqflags.h) \
|
||||
$(wildcard include/config/irqsoff/tracer.h) \
|
||||
$(wildcard include/config/preempt/tracer.h) \
|
||||
$(wildcard include/config/trace/irqflags/support.h) \
|
||||
include/linux/typecheck.h \
|
||||
arch/arm/include/asm/irqflags.h \
|
||||
$(wildcard include/config/cpu/v7m.h) \
|
||||
arch/arm/include/asm/ptrace.h \
|
||||
$(wildcard include/config/arm/thumb.h) \
|
||||
arch/arm/include/uapi/asm/ptrace.h \
|
||||
arch/arm/include/asm/hwcap.h \
|
||||
arch/arm/include/uapi/asm/hwcap.h \
|
||||
include/asm-generic/irqflags.h \
|
||||
arch/arm/include/asm/barrier.h \
|
||||
$(wildcard include/config/cpu/32v6k.h) \
|
||||
$(wildcard include/config/cpu/xsc3.h) \
|
||||
$(wildcard include/config/cpu/fa526.h) \
|
||||
$(wildcard include/config/arm/heavy/mb.h) \
|
||||
$(wildcard include/config/arm/dma/mem/bufferable.h) \
|
||||
include/asm-generic/barrier.h \
|
||||
include/asm-generic/bitops/non-atomic.h \
|
||||
include/asm-generic/bitops/fls64.h \
|
||||
include/asm-generic/bitops/sched.h \
|
||||
include/asm-generic/bitops/hweight.h \
|
||||
include/asm-generic/bitops/arch_hweight.h \
|
||||
include/asm-generic/bitops/const_hweight.h \
|
||||
include/asm-generic/bitops/lock.h \
|
||||
include/asm-generic/bitops/le.h \
|
||||
arch/arm/include/uapi/asm/byteorder.h \
|
||||
include/linux/byteorder/little_endian.h \
|
||||
include/uapi/linux/byteorder/little_endian.h \
|
||||
include/linux/byteorder/generic.h \
|
||||
include/asm-generic/bitops/ext2-atomic-setbit.h \
|
||||
include/linux/log2.h \
|
||||
$(wildcard include/config/arch/has/ilog2/u32.h) \
|
||||
$(wildcard include/config/arch/has/ilog2/u64.h) \
|
||||
include/linux/printk.h \
|
||||
$(wildcard include/config/message/loglevel/default.h) \
|
||||
$(wildcard include/config/early/printk.h) \
|
||||
$(wildcard include/config/printk/nmi.h) \
|
||||
$(wildcard include/config/printk.h) \
|
||||
$(wildcard include/config/dynamic/debug.h) \
|
||||
include/linux/init.h \
|
||||
$(wildcard include/config/debug/rodata.h) \
|
||||
include/linux/kern_levels.h \
|
||||
include/linux/cache.h \
|
||||
$(wildcard include/config/arch/has/cache/line/size.h) \
|
||||
include/uapi/linux/kernel.h \
|
||||
include/uapi/linux/sysinfo.h \
|
||||
arch/arm/include/asm/cache.h \
|
||||
$(wildcard include/config/arm/l1/cache/shift.h) \
|
||||
$(wildcard include/config/aeabi.h) \
|
||||
arch/arm/include/asm/div64.h \
|
||||
arch/arm/include/asm/compiler.h \
|
||||
include/asm-generic/div64.h \
|
||||
arch/arm/include/asm/thread_info.h \
|
||||
$(wildcard include/config/crunch.h) \
|
||||
$(wildcard include/config/arm/thumbee.h) \
|
||||
arch/arm/include/asm/fpstate.h \
|
||||
$(wildcard include/config/vfpv3.h) \
|
||||
$(wildcard include/config/iwmmxt.h) \
|
||||
arch/arm/include/asm/page.h \
|
||||
$(wildcard include/config/cpu/copy/v4wt.h) \
|
||||
$(wildcard include/config/cpu/copy/v4wb.h) \
|
||||
$(wildcard include/config/cpu/copy/feroceon.h) \
|
||||
$(wildcard include/config/cpu/copy/fa.h) \
|
||||
$(wildcard include/config/cpu/sa1100.h) \
|
||||
$(wildcard include/config/cpu/xscale.h) \
|
||||
$(wildcard include/config/cpu/copy/v6.h) \
|
||||
$(wildcard include/config/kuser/helpers.h) \
|
||||
$(wildcard include/config/have/arch/pfn/valid.h) \
|
||||
arch/arm/include/asm/glue.h \
|
||||
arch/arm/include/asm/pgtable-2level-types.h \
|
||||
arch/arm/include/asm/memory.h \
|
||||
$(wildcard include/config/need/mach/memory/h.h) \
|
||||
$(wildcard include/config/page/offset.h) \
|
||||
$(wildcard include/config/highmem.h) \
|
||||
$(wildcard include/config/dram/base.h) \
|
||||
$(wildcard include/config/dram/size.h) \
|
||||
$(wildcard include/config/have/tcm.h) \
|
||||
$(wildcard include/config/arm/patch/phys/virt.h) \
|
||||
$(wildcard include/config/phys/offset.h) \
|
||||
$(wildcard include/config/xip/kernel.h) \
|
||||
$(wildcard include/config/xip/phys/addr.h) \
|
||||
include/uapi/linux/const.h \
|
||||
include/linux/sizes.h \
|
||||
include/asm-generic/memory_model.h \
|
||||
$(wildcard include/config/flatmem.h) \
|
||||
$(wildcard include/config/discontigmem.h) \
|
||||
$(wildcard include/config/sparsemem/vmemmap.h) \
|
||||
$(wildcard include/config/sparsemem.h) \
|
||||
include/linux/pfn.h \
|
||||
include/asm-generic/getorder.h \
|
||||
include/linux/list.h \
|
||||
$(wildcard include/config/debug/list.h) \
|
||||
include/linux/poison.h \
|
||||
$(wildcard include/config/illegal/pointer/value.h) \
|
||||
$(wildcard include/config/page/poisoning/zero.h) \
|
||||
include/linux/spinlock_types.h \
|
||||
$(wildcard include/config/generic/lockbreak.h) \
|
||||
$(wildcard include/config/debug/spinlock.h) \
|
||||
arch/arm/include/asm/spinlock_types.h \
|
||||
include/linux/lockdep.h \
|
||||
$(wildcard include/config/lockdep.h) \
|
||||
$(wildcard include/config/lock/stat.h) \
|
||||
include/linux/rwlock_types.h \
|
||||
include/linux/atomic.h \
|
||||
$(wildcard include/config/generic/atomic64.h) \
|
||||
arch/arm/include/asm/atomic.h \
|
||||
include/linux/prefetch.h \
|
||||
arch/arm/include/asm/processor.h \
|
||||
$(wildcard include/config/have/hw/breakpoint.h) \
|
||||
$(wildcard include/config/arm/errata/754327.h) \
|
||||
arch/arm/include/asm/hw_breakpoint.h \
|
||||
arch/arm/include/asm/unified.h \
|
||||
$(wildcard include/config/arm/asm/unified.h) \
|
||||
arch/arm/include/asm/cmpxchg.h \
|
||||
$(wildcard include/config/cpu/sa110.h) \
|
||||
$(wildcard include/config/cpu/v6.h) \
|
||||
include/asm-generic/cmpxchg-local.h \
|
||||
include/asm-generic/atomic-long.h \
|
||||
include/linux/osq_lock.h \
|
||||
include/linux/module.h \
|
||||
$(wildcard include/config/sysfs.h) \
|
||||
$(wildcard include/config/modules/tree/lookup.h) \
|
||||
$(wildcard include/config/livepatch.h) \
|
||||
$(wildcard include/config/module/sig.h) \
|
||||
$(wildcard include/config/kallsyms.h) \
|
||||
$(wildcard include/config/tracepoints.h) \
|
||||
$(wildcard include/config/event/tracing.h) \
|
||||
$(wildcard include/config/module/unload.h) \
|
||||
$(wildcard include/config/constructors.h) \
|
||||
$(wildcard include/config/debug/set/module/ronx.h) \
|
||||
include/linux/stat.h \
|
||||
arch/arm/include/uapi/asm/stat.h \
|
||||
include/uapi/linux/stat.h \
|
||||
include/linux/time.h \
|
||||
$(wildcard include/config/arch/uses/gettimeoffset.h) \
|
||||
include/linux/seqlock.h \
|
||||
include/linux/spinlock.h \
|
||||
$(wildcard include/config/preempt.h) \
|
||||
include/linux/preempt.h \
|
||||
$(wildcard include/config/preempt/count.h) \
|
||||
$(wildcard include/config/debug/preempt.h) \
|
||||
$(wildcard include/config/preempt/notifiers.h) \
|
||||
arch/arm/include/generated/asm/preempt.h \
|
||||
include/asm-generic/preempt.h \
|
||||
include/linux/bottom_half.h \
|
||||
arch/arm/include/asm/spinlock.h \
|
||||
include/linux/rwlock.h \
|
||||
include/linux/spinlock_api_smp.h \
|
||||
$(wildcard include/config/inline/spin/lock.h) \
|
||||
$(wildcard include/config/inline/spin/lock/bh.h) \
|
||||
$(wildcard include/config/inline/spin/lock/irq.h) \
|
||||
$(wildcard include/config/inline/spin/lock/irqsave.h) \
|
||||
$(wildcard include/config/inline/spin/trylock.h) \
|
||||
$(wildcard include/config/inline/spin/trylock/bh.h) \
|
||||
$(wildcard include/config/uninline/spin/unlock.h) \
|
||||
$(wildcard include/config/inline/spin/unlock/bh.h) \
|
||||
$(wildcard include/config/inline/spin/unlock/irq.h) \
|
||||
$(wildcard include/config/inline/spin/unlock/irqrestore.h) \
|
||||
include/linux/rwlock_api_smp.h \
|
||||
$(wildcard include/config/inline/read/lock.h) \
|
||||
$(wildcard include/config/inline/write/lock.h) \
|
||||
$(wildcard include/config/inline/read/lock/bh.h) \
|
||||
$(wildcard include/config/inline/write/lock/bh.h) \
|
||||
$(wildcard include/config/inline/read/lock/irq.h) \
|
||||
$(wildcard include/config/inline/write/lock/irq.h) \
|
||||
$(wildcard include/config/inline/read/lock/irqsave.h) \
|
||||
$(wildcard include/config/inline/write/lock/irqsave.h) \
|
||||
$(wildcard include/config/inline/read/trylock.h) \
|
||||
$(wildcard include/config/inline/write/trylock.h) \
|
||||
$(wildcard include/config/inline/read/unlock.h) \
|
||||
$(wildcard include/config/inline/write/unlock.h) \
|
||||
$(wildcard include/config/inline/read/unlock/bh.h) \
|
||||
$(wildcard include/config/inline/write/unlock/bh.h) \
|
||||
$(wildcard include/config/inline/read/unlock/irq.h) \
|
||||
$(wildcard include/config/inline/write/unlock/irq.h) \
|
||||
$(wildcard include/config/inline/read/unlock/irqrestore.h) \
|
||||
$(wildcard include/config/inline/write/unlock/irqrestore.h) \
|
||||
include/linux/math64.h \
|
||||
$(wildcard include/config/arch/supports/int128.h) \
|
||||
include/linux/time64.h \
|
||||
include/uapi/linux/time.h \
|
||||
include/linux/uidgid.h \
|
||||
$(wildcard include/config/multiuser.h) \
|
||||
$(wildcard include/config/user/ns.h) \
|
||||
include/linux/highuid.h \
|
||||
include/linux/kmod.h \
|
||||
include/linux/gfp.h \
|
||||
$(wildcard include/config/zone/dma.h) \
|
||||
$(wildcard include/config/zone/dma32.h) \
|
||||
$(wildcard include/config/zone/device.h) \
|
||||
$(wildcard include/config/numa.h) \
|
||||
$(wildcard include/config/pm/sleep.h) \
|
||||
$(wildcard include/config/memory/isolation.h) \
|
||||
$(wildcard include/config/compaction.h) \
|
||||
$(wildcard include/config/cma.h) \
|
||||
include/linux/mmdebug.h \
|
||||
$(wildcard include/config/debug/vm.h) \
|
||||
$(wildcard include/config/debug/virtual.h) \
|
||||
$(wildcard include/config/debug/vm/pgflags.h) \
|
||||
include/linux/mmzone.h \
|
||||
$(wildcard include/config/force/max/zoneorder.h) \
|
||||
$(wildcard include/config/zsmalloc.h) \
|
||||
$(wildcard include/config/memcg.h) \
|
||||
$(wildcard include/config/memory/hotplug.h) \
|
||||
$(wildcard include/config/flat/node/mem/map.h) \
|
||||
$(wildcard include/config/page/extension.h) \
|
||||
$(wildcard include/config/no/bootmem.h) \
|
||||
$(wildcard include/config/numa/balancing.h) \
|
||||
$(wildcard include/config/deferred/struct/page/init.h) \
|
||||
$(wildcard include/config/transparent/hugepage.h) \
|
||||
$(wildcard include/config/have/memory/present.h) \
|
||||
$(wildcard include/config/have/memoryless/nodes.h) \
|
||||
$(wildcard include/config/need/node/memmap/size.h) \
|
||||
$(wildcard include/config/have/memblock/node/map.h) \
|
||||
$(wildcard include/config/need/multiple/nodes.h) \
|
||||
$(wildcard include/config/have/arch/early/pfn/to/nid.h) \
|
||||
$(wildcard include/config/sparsemem/extreme.h) \
|
||||
$(wildcard include/config/holes/in/zone.h) \
|
||||
$(wildcard include/config/arch/has/holes/memorymodel.h) \
|
||||
include/linux/wait.h \
|
||||
include/uapi/linux/wait.h \
|
||||
include/linux/threads.h \
|
||||
$(wildcard include/config/nr/cpus.h) \
|
||||
$(wildcard include/config/base/small.h) \
|
||||
include/linux/numa.h \
|
||||
$(wildcard include/config/nodes/shift.h) \
|
||||
include/linux/nodemask.h \
|
||||
$(wildcard include/config/movable/node.h) \
|
||||
include/linux/bitmap.h \
|
||||
$(wildcard include/config/s390.h) \
|
||||
include/linux/string.h \
|
||||
$(wildcard include/config/binary/printf.h) \
|
||||
include/uapi/linux/string.h \
|
||||
arch/arm/include/asm/string.h \
|
||||
$(wildcard include/config/bcm2835/fast/memcpy.h) \
|
||||
include/linux/pageblock-flags.h \
|
||||
$(wildcard include/config/hugetlb/page.h) \
|
||||
$(wildcard include/config/hugetlb/page/size/variable.h) \
|
||||
include/linux/page-flags-layout.h \
|
||||
include/generated/bounds.h \
|
||||
include/linux/memory_hotplug.h \
|
||||
$(wildcard include/config/memory/hotremove.h) \
|
||||
$(wildcard include/config/have/arch/nodedata/extension.h) \
|
||||
$(wildcard include/config/have/bootmem/info/node.h) \
|
||||
include/linux/notifier.h \
|
||||
include/linux/errno.h \
|
||||
include/uapi/linux/errno.h \
|
||||
arch/arm/include/generated/asm/errno.h \
|
||||
include/uapi/asm-generic/errno.h \
|
||||
include/uapi/asm-generic/errno-base.h \
|
||||
include/linux/rwsem.h \
|
||||
$(wildcard include/config/rwsem/spin/on/owner.h) \
|
||||
$(wildcard include/config/rwsem/generic/spinlock.h) \
|
||||
include/linux/err.h \
|
||||
arch/arm/include/generated/asm/rwsem.h \
|
||||
include/asm-generic/rwsem.h \
|
||||
include/linux/srcu.h \
|
||||
include/linux/rcupdate.h \
|
||||
$(wildcard include/config/tiny/rcu.h) \
|
||||
$(wildcard include/config/tree/rcu.h) \
|
||||
$(wildcard include/config/preempt/rcu.h) \
|
||||
$(wildcard include/config/rcu/trace.h) \
|
||||
$(wildcard include/config/rcu/stall/common.h) \
|
||||
$(wildcard include/config/no/hz/full.h) \
|
||||
$(wildcard include/config/rcu/nocb/cpu.h) \
|
||||
$(wildcard include/config/tasks/rcu.h) \
|
||||
$(wildcard include/config/debug/objects/rcu/head.h) \
|
||||
$(wildcard include/config/hotplug/cpu.h) \
|
||||
$(wildcard include/config/prove/rcu.h) \
|
||||
$(wildcard include/config/rcu/boost.h) \
|
||||
$(wildcard include/config/rcu/nocb/cpu/all.h) \
|
||||
$(wildcard include/config/no/hz/full/sysidle.h) \
|
||||
include/linux/cpumask.h \
|
||||
$(wildcard include/config/cpumask/offstack.h) \
|
||||
$(wildcard include/config/debug/per/cpu/maps.h) \
|
||||
include/linux/completion.h \
|
||||
include/linux/debugobjects.h \
|
||||
$(wildcard include/config/debug/objects.h) \
|
||||
$(wildcard include/config/debug/objects/free.h) \
|
||||
include/linux/ktime.h \
|
||||
include/linux/jiffies.h \
|
||||
include/linux/timex.h \
|
||||
include/uapi/linux/timex.h \
|
||||
include/uapi/linux/param.h \
|
||||
arch/arm/include/generated/asm/param.h \
|
||||
include/asm-generic/param.h \
|
||||
$(wildcard include/config/hz.h) \
|
||||
include/uapi/asm-generic/param.h \
|
||||
arch/arm/include/asm/timex.h \
|
||||
include/generated/timeconst.h \
|
||||
include/linux/timekeeping.h \
|
||||
include/linux/rcutree.h \
|
||||
include/linux/workqueue.h \
|
||||
$(wildcard include/config/debug/objects/work.h) \
|
||||
$(wildcard include/config/freezer.h) \
|
||||
$(wildcard include/config/wq/watchdog.h) \
|
||||
include/linux/timer.h \
|
||||
$(wildcard include/config/timer/stats.h) \
|
||||
$(wildcard include/config/debug/objects/timers.h) \
|
||||
$(wildcard include/config/no/hz/common.h) \
|
||||
include/linux/sysctl.h \
|
||||
$(wildcard include/config/sysctl.h) \
|
||||
include/linux/rbtree.h \
|
||||
include/uapi/linux/sysctl.h \
|
||||
include/linux/topology.h \
|
||||
$(wildcard include/config/use/percpu/numa/node/id.h) \
|
||||
$(wildcard include/config/sched/smt.h) \
|
||||
include/linux/smp.h \
|
||||
$(wildcard include/config/up/late/init.h) \
|
||||
include/linux/llist.h \
|
||||
$(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \
|
||||
arch/arm/include/asm/smp.h \
|
||||
include/linux/percpu.h \
|
||||
$(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
|
||||
$(wildcard include/config/need/per/cpu/page/first/chunk.h) \
|
||||
$(wildcard include/config/have/setup/per/cpu/area.h) \
|
||||
arch/arm/include/asm/percpu.h \
|
||||
include/asm-generic/percpu.h \
|
||||
include/linux/percpu-defs.h \
|
||||
$(wildcard include/config/debug/force/weak/per/cpu.h) \
|
||||
arch/arm/include/asm/topology.h \
|
||||
$(wildcard include/config/arm/cpu/topology.h) \
|
||||
include/asm-generic/topology.h \
|
||||
include/linux/elf.h \
|
||||
arch/arm/include/asm/elf.h \
|
||||
$(wildcard include/config/vdso.h) \
|
||||
arch/arm/include/asm/auxvec.h \
|
||||
arch/arm/include/uapi/asm/auxvec.h \
|
||||
arch/arm/include/asm/vdso_datapage.h \
|
||||
arch/arm/include/asm/user.h \
|
||||
include/uapi/linux/elf.h \
|
||||
include/uapi/linux/elf-em.h \
|
||||
include/linux/kobject.h \
|
||||
$(wildcard include/config/uevent/helper.h) \
|
||||
$(wildcard include/config/debug/kobject/release.h) \
|
||||
include/linux/sysfs.h \
|
||||
include/linux/kernfs.h \
|
||||
$(wildcard include/config/kernfs.h) \
|
||||
include/linux/idr.h \
|
||||
include/linux/kobject_ns.h \
|
||||
include/linux/kref.h \
|
||||
include/linux/moduleparam.h \
|
||||
$(wildcard include/config/alpha.h) \
|
||||
$(wildcard include/config/ia64.h) \
|
||||
$(wildcard include/config/ppc64.h) \
|
||||
include/linux/jump_label.h \
|
||||
$(wildcard include/config/jump/label.h) \
|
||||
arch/arm/include/asm/jump_label.h \
|
||||
include/linux/extable.h \
|
||||
include/linux/rbtree_latch.h \
|
||||
arch/arm/include/asm/module.h \
|
||||
$(wildcard include/config/arm/unwind.h) \
|
||||
$(wildcard include/config/arm/module/plts.h) \
|
||||
include/asm-generic/module.h \
|
||||
$(wildcard include/config/have/mod/arch/specific.h) \
|
||||
$(wildcard include/config/modules/use/elf/rel.h) \
|
||||
$(wildcard include/config/modules/use/elf/rela.h) \
|
||||
include/linux/device.h \
|
||||
$(wildcard include/config/debug/devres.h) \
|
||||
$(wildcard include/config/generic/msi/irq/domain.h) \
|
||||
$(wildcard include/config/pinctrl.h) \
|
||||
$(wildcard include/config/generic/msi/irq.h) \
|
||||
$(wildcard include/config/dma/cma.h) \
|
||||
$(wildcard include/config/of.h) \
|
||||
$(wildcard include/config/devtmpfs.h) \
|
||||
$(wildcard include/config/sysfs/deprecated.h) \
|
||||
include/linux/ioport.h \
|
||||
include/linux/klist.h \
|
||||
include/linux/pinctrl/devinfo.h \
|
||||
$(wildcard include/config/pm.h) \
|
||||
include/linux/pinctrl/consumer.h \
|
||||
include/linux/seq_file.h \
|
||||
include/linux/fs.h \
|
||||
$(wildcard include/config/fs/posix/acl.h) \
|
||||
$(wildcard include/config/security.h) \
|
||||
$(wildcard include/config/cgroup/writeback.h) \
|
||||
$(wildcard include/config/ima.h) \
|
||||
$(wildcard include/config/fsnotify.h) \
|
||||
$(wildcard include/config/fs/encryption.h) \
|
||||
$(wildcard include/config/epoll.h) \
|
||||
$(wildcard include/config/file/locking.h) \
|
||||
$(wildcard include/config/quota.h) \
|
||||
$(wildcard include/config/fs/dax.h) \
|
||||
$(wildcard include/config/mandatory/file/locking.h) \
|
||||
$(wildcard include/config/block.h) \
|
||||
$(wildcard include/config/migration.h) \
|
||||
include/linux/kdev_t.h \
|
||||
include/uapi/linux/kdev_t.h \
|
||||
include/linux/dcache.h \
|
||||
include/linux/rculist.h \
|
||||
include/linux/rculist_bl.h \
|
||||
include/linux/list_bl.h \
|
||||
include/linux/bit_spinlock.h \
|
||||
include/linux/lockref.h \
|
||||
$(wildcard include/config/arch/use/cmpxchg/lockref.h) \
|
||||
include/linux/stringhash.h \
|
||||
$(wildcard include/config/dcache/word/access.h) \
|
||||
include/linux/hash.h \
|
||||
$(wildcard include/config/have/arch/hash.h) \
|
||||
include/linux/path.h \
|
||||
include/linux/list_lru.h \
|
||||
$(wildcard include/config/slob.h) \
|
||||
include/linux/shrinker.h \
|
||||
include/linux/radix-tree.h \
|
||||
$(wildcard include/config/radix/tree/multiorder.h) \
|
||||
include/linux/pid.h \
|
||||
include/linux/capability.h \
|
||||
include/uapi/linux/capability.h \
|
||||
include/linux/semaphore.h \
|
||||
include/uapi/linux/fiemap.h \
|
||||
include/linux/migrate_mode.h \
|
||||
include/linux/percpu-rwsem.h \
|
||||
include/linux/rcu_sync.h \
|
||||
include/linux/blk_types.h \
|
||||
$(wildcard include/config/blk/cgroup.h) \
|
||||
$(wildcard include/config/blk/dev/integrity.h) \
|
||||
include/linux/bvec.h \
|
||||
include/linux/delayed_call.h \
|
||||
include/uapi/linux/fs.h \
|
||||
include/uapi/linux/limits.h \
|
||||
include/uapi/linux/ioctl.h \
|
||||
arch/arm/include/generated/asm/ioctl.h \
|
||||
include/asm-generic/ioctl.h \
|
||||
include/uapi/asm-generic/ioctl.h \
|
||||
include/linux/quota.h \
|
||||
$(wildcard include/config/quota/netlink/interface.h) \
|
||||
include/linux/percpu_counter.h \
|
||||
include/uapi/linux/dqblk_xfs.h \
|
||||
include/linux/dqblk_v1.h \
|
||||
include/linux/dqblk_v2.h \
|
||||
include/linux/dqblk_qtree.h \
|
||||
include/linux/projid.h \
|
||||
include/uapi/linux/quota.h \
|
||||
include/linux/nfs_fs_i.h \
|
||||
include/linux/fcntl.h \
|
||||
include/uapi/linux/fcntl.h \
|
||||
arch/arm/include/uapi/asm/fcntl.h \
|
||||
include/uapi/asm-generic/fcntl.h \
|
||||
include/linux/cred.h \
|
||||
$(wildcard include/config/debug/credentials.h) \
|
||||
$(wildcard include/config/keys.h) \
|
||||
include/linux/key.h \
|
||||
include/linux/assoc_array.h \
|
||||
$(wildcard include/config/associative/array.h) \
|
||||
include/linux/selinux.h \
|
||||
$(wildcard include/config/security/selinux.h) \
|
||||
include/linux/pinctrl/pinctrl-state.h \
|
||||
include/linux/pm.h \
|
||||
$(wildcard include/config/vt/console/sleep.h) \
|
||||
$(wildcard include/config/pm/clk.h) \
|
||||
$(wildcard include/config/pm/generic/domains.h) \
|
||||
include/linux/ratelimit.h \
|
||||
include/linux/sched.h \
|
||||
$(wildcard include/config/sched/debug.h) \
|
||||
$(wildcard include/config/lockup/detector.h) \
|
||||
$(wildcard include/config/detect/hung/task.h) \
|
||||
$(wildcard include/config/core/dump/default/elf/headers.h) \
|
||||
$(wildcard include/config/virt/cpu/accounting/native.h) \
|
||||
$(wildcard include/config/sched/autogroup.h) \
|
||||
$(wildcard include/config/bsd/process/acct.h) \
|
||||
$(wildcard include/config/taskstats.h) \
|
||||
$(wildcard include/config/audit.h) \
|
||||
$(wildcard include/config/inotify/user.h) \
|
||||
$(wildcard include/config/fanotify.h) \
|
||||
$(wildcard include/config/posix/mqueue.h) \
|
||||
$(wildcard include/config/perf/events.h) \
|
||||
$(wildcard include/config/bpf/syscall.h) \
|
||||
$(wildcard include/config/sched/info.h) \
|
||||
$(wildcard include/config/task/delay/acct.h) \
|
||||
$(wildcard include/config/schedstats.h) \
|
||||
$(wildcard include/config/sched/mc.h) \
|
||||
$(wildcard include/config/fair/group/sched.h) \
|
||||
$(wildcard include/config/rt/group/sched.h) \
|
||||
$(wildcard include/config/cgroup/sched.h) \
|
||||
$(wildcard include/config/blk/dev/io/trace.h) \
|
||||
$(wildcard include/config/compat/brk.h) \
|
||||
$(wildcard include/config/cgroups.h) \
|
||||
$(wildcard include/config/cc/stackprotector.h) \
|
||||
$(wildcard include/config/virt/cpu/accounting/gen.h) \
|
||||
$(wildcard include/config/sysvipc.h) \
|
||||
$(wildcard include/config/auditsyscall.h) \
|
||||
$(wildcard include/config/rt/mutexes.h) \
|
||||
$(wildcard include/config/ubsan.h) \
|
||||
$(wildcard include/config/task/xacct.h) \
|
||||
$(wildcard include/config/cpusets.h) \
|
||||
$(wildcard include/config/futex.h) \
|
||||
$(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \
|
||||
$(wildcard include/config/fault/injection.h) \
|
||||
$(wildcard include/config/latencytop.h) \
|
||||
$(wildcard include/config/function/graph/tracer.h) \
|
||||
$(wildcard include/config/kcov.h) \
|
||||
$(wildcard include/config/uprobes.h) \
|
||||
$(wildcard include/config/bcache.h) \
|
||||
$(wildcard include/config/vmap/stack.h) \
|
||||
$(wildcard include/config/arch/wants/dynamic/task/struct.h) \
|
||||
$(wildcard include/config/have/unstable/sched/clock.h) \
|
||||
$(wildcard include/config/irq/time/accounting.h) \
|
||||
$(wildcard include/config/proc/fs.h) \
|
||||
$(wildcard include/config/stack/growsup.h) \
|
||||
$(wildcard include/config/have/copy/thread/tls.h) \
|
||||
$(wildcard include/config/have/exit/thread.h) \
|
||||
$(wildcard include/config/cpu/freq.h) \
|
||||
include/uapi/linux/sched.h \
|
||||
include/linux/sched/prio.h \
|
||||
include/linux/plist.h \
|
||||
$(wildcard include/config/debug/pi/list.h) \
|
||||
include/linux/mm_types.h \
|
||||
$(wildcard include/config/split/ptlock/cpus.h) \
|
||||
$(wildcard include/config/arch/enable/split/pmd/ptlock.h) \
|
||||
$(wildcard include/config/have/cmpxchg/double.h) \
|
||||
$(wildcard include/config/have/aligned/struct/page.h) \
|
||||
$(wildcard include/config/kmemcheck.h) \
|
||||
$(wildcard include/config/userfaultfd.h) \
|
||||
$(wildcard include/config/pgtable/levels.h) \
|
||||
$(wildcard include/config/aio.h) \
|
||||
$(wildcard include/config/mmu/notifier.h) \
|
||||
$(wildcard include/config/x86/intel/mpx.h) \
|
||||
include/linux/auxvec.h \
|
||||
include/uapi/linux/auxvec.h \
|
||||
include/linux/uprobes.h \
|
||||
arch/arm/include/asm/mmu.h \
|
||||
$(wildcard include/config/cpu/has/asid.h) \
|
||||
include/linux/cputime.h \
|
||||
arch/arm/include/generated/asm/cputime.h \
|
||||
include/asm-generic/cputime.h \
|
||||
$(wildcard include/config/virt/cpu/accounting.h) \
|
||||
include/asm-generic/cputime_jiffies.h \
|
||||
include/linux/sem.h \
|
||||
include/uapi/linux/sem.h \
|
||||
include/linux/ipc.h \
|
||||
include/uapi/linux/ipc.h \
|
||||
arch/arm/include/generated/asm/ipcbuf.h \
|
||||
include/uapi/asm-generic/ipcbuf.h \
|
||||
arch/arm/include/generated/asm/sembuf.h \
|
||||
include/uapi/asm-generic/sembuf.h \
|
||||
include/linux/shm.h \
|
||||
include/uapi/linux/shm.h \
|
||||
arch/arm/include/generated/asm/shmbuf.h \
|
||||
include/uapi/asm-generic/shmbuf.h \
|
||||
arch/arm/include/asm/shmparam.h \
|
||||
include/linux/signal.h \
|
||||
$(wildcard include/config/old/sigaction.h) \
|
||||
include/uapi/linux/signal.h \
|
||||
arch/arm/include/asm/signal.h \
|
||||
arch/arm/include/uapi/asm/signal.h \
|
||||
include/uapi/asm-generic/signal-defs.h \
|
||||
arch/arm/include/uapi/asm/sigcontext.h \
|
||||
arch/arm/include/generated/asm/siginfo.h \
|
||||
include/asm-generic/siginfo.h \
|
||||
include/uapi/asm-generic/siginfo.h \
|
||||
include/linux/seccomp.h \
|
||||
$(wildcard include/config/seccomp.h) \
|
||||
$(wildcard include/config/have/arch/seccomp/filter.h) \
|
||||
$(wildcard include/config/seccomp/filter.h) \
|
||||
$(wildcard include/config/checkpoint/restore.h) \
|
||||
include/uapi/linux/seccomp.h \
|
||||
arch/arm/include/generated/asm/seccomp.h \
|
||||
include/asm-generic/seccomp.h \
|
||||
include/uapi/linux/unistd.h \
|
||||
arch/arm/include/asm/unistd.h \
|
||||
$(wildcard include/config/oabi/compat.h) \
|
||||
arch/arm/include/uapi/asm/unistd.h \
|
||||
include/linux/rtmutex.h \
|
||||
$(wildcard include/config/debug/rt/mutexes.h) \
|
||||
include/linux/resource.h \
|
||||
include/uapi/linux/resource.h \
|
||||
arch/arm/include/generated/asm/resource.h \
|
||||
include/asm-generic/resource.h \
|
||||
include/uapi/asm-generic/resource.h \
|
||||
include/linux/hrtimer.h \
|
||||
$(wildcard include/config/high/res/timers.h) \
|
||||
$(wildcard include/config/time/low/res.h) \
|
||||
$(wildcard include/config/timerfd.h) \
|
||||
include/linux/timerqueue.h \
|
||||
include/linux/kcov.h \
|
||||
include/uapi/linux/kcov.h \
|
||||
include/linux/task_io_accounting.h \
|
||||
$(wildcard include/config/task/io/accounting.h) \
|
||||
include/linux/latencytop.h \
|
||||
include/uapi/linux/magic.h \
|
||||
include/linux/cgroup-defs.h \
|
||||
$(wildcard include/config/sock/cgroup/data.h) \
|
||||
include/linux/percpu-refcount.h \
|
||||
include/linux/cgroup_subsys.h \
|
||||
$(wildcard include/config/cgroup/cpuacct.h) \
|
||||
$(wildcard include/config/cgroup/device.h) \
|
||||
$(wildcard include/config/cgroup/freezer.h) \
|
||||
$(wildcard include/config/cgroup/net/classid.h) \
|
||||
$(wildcard include/config/cgroup/perf.h) \
|
||||
$(wildcard include/config/cgroup/net/prio.h) \
|
||||
$(wildcard include/config/cgroup/hugetlb.h) \
|
||||
$(wildcard include/config/cgroup/pids.h) \
|
||||
$(wildcard include/config/cgroup/debug.h) \
|
||||
arch/arm/include/asm/device.h \
|
||||
$(wildcard include/config/dmabounce.h) \
|
||||
$(wildcard include/config/iommu/api.h) \
|
||||
$(wildcard include/config/arm/dma/use/iommu.h) \
|
||||
$(wildcard include/config/arch/omap.h) \
|
||||
include/linux/pm_wakeup.h \
|
||||
include/linux/uaccess.h \
|
||||
arch/arm/include/asm/uaccess.h \
|
||||
$(wildcard include/config/have/efficient/unaligned/access.h) \
|
||||
$(wildcard include/config/cpu/sw/domain/pan.h) \
|
||||
$(wildcard include/config/cpu/use/domains.h) \
|
||||
$(wildcard include/config/uaccess/with/memcpy.h) \
|
||||
arch/arm/include/asm/domain.h \
|
||||
$(wildcard include/config/io/36.h) \
|
||||
$(wildcard include/config/cpu/cp15/mmu.h) \
|
||||
include/linux/kthread.h \
|
||||
include/linux/delay.h \
|
||||
arch/arm/include/asm/delay.h \
|
||||
include/linux/gpio.h \
|
||||
$(wildcard include/config/gpiolib.h) \
|
||||
$(wildcard include/config/arch/have/custom/gpio/h.h) \
|
||||
arch/arm/include/asm/gpio.h \
|
||||
$(wildcard include/config/arch/nr/gpio.h) \
|
||||
include/asm-generic/gpio.h \
|
||||
include/linux/of.h \
|
||||
$(wildcard include/config/sparc.h) \
|
||||
$(wildcard include/config/of/dynamic.h) \
|
||||
$(wildcard include/config/attach/node.h) \
|
||||
$(wildcard include/config/detach/node.h) \
|
||||
$(wildcard include/config/add/property.h) \
|
||||
$(wildcard include/config/remove/property.h) \
|
||||
$(wildcard include/config/update/property.h) \
|
||||
$(wildcard include/config/of/numa.h) \
|
||||
$(wildcard include/config/no/change.h) \
|
||||
$(wildcard include/config/change/add.h) \
|
||||
$(wildcard include/config/change/remove.h) \
|
||||
$(wildcard include/config/of/resolve.h) \
|
||||
$(wildcard include/config/of/overlay.h) \
|
||||
include/linux/mod_devicetable.h \
|
||||
include/linux/uuid.h \
|
||||
include/uapi/linux/uuid.h \
|
||||
include/linux/property.h \
|
||||
include/linux/fwnode.h \
|
||||
include/linux/gpio/driver.h \
|
||||
$(wildcard include/config/gpio/generic.h) \
|
||||
$(wildcard include/config/gpiolib/irqchip.h) \
|
||||
$(wildcard include/config/of/gpio.h) \
|
||||
include/linux/irq.h \
|
||||
$(wildcard include/config/generic/irq/ipi.h) \
|
||||
$(wildcard include/config/irq/domain/hierarchy.h) \
|
||||
$(wildcard include/config/generic/pending/irq.h) \
|
||||
$(wildcard include/config/hardirqs/sw/resend.h) \
|
||||
$(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \
|
||||
$(wildcard include/config/generic/irq/legacy.h) \
|
||||
include/linux/irqhandler.h \
|
||||
include/linux/irqreturn.h \
|
||||
include/linux/irqnr.h \
|
||||
include/uapi/linux/irqnr.h \
|
||||
include/linux/io.h \
|
||||
$(wildcard include/config/have/arch/huge/vmap.h) \
|
||||
$(wildcard include/config/has/ioport/map.h) \
|
||||
arch/arm/include/asm/io.h \
|
||||
$(wildcard include/config/pci.h) \
|
||||
$(wildcard include/config/need/mach/io/h.h) \
|
||||
$(wildcard include/config/pcmcia/soc/common.h) \
|
||||
$(wildcard include/config/isa.h) \
|
||||
$(wildcard include/config/pccard.h) \
|
||||
include/asm-generic/pci_iomap.h \
|
||||
$(wildcard include/config/no/generic/pci/ioport/map.h) \
|
||||
$(wildcard include/config/generic/pci/iomap.h) \
|
||||
include/xen/xen.h \
|
||||
$(wildcard include/config/xen.h) \
|
||||
$(wildcard include/config/xen/dom0.h) \
|
||||
$(wildcard include/config/xen/pvh.h) \
|
||||
include/asm-generic/io.h \
|
||||
$(wildcard include/config/generic/iomap.h) \
|
||||
$(wildcard include/config/virt/to/bus.h) \
|
||||
include/linux/vmalloc.h \
|
||||
arch/arm/include/asm/irq.h \
|
||||
$(wildcard include/config/sparse/irq.h) \
|
||||
$(wildcard include/config/multi/irq/handler.h) \
|
||||
arch/arm/include/generated/asm/irq_regs.h \
|
||||
include/asm-generic/irq_regs.h \
|
||||
include/linux/irqdesc.h \
|
||||
$(wildcard include/config/irq/preflow/fasteoi.h) \
|
||||
$(wildcard include/config/handle/domain/irq.h) \
|
||||
arch/arm/include/asm/hw_irq.h \
|
||||
include/linux/irqchip/chained_irq.h \
|
||||
include/linux/irqdomain.h \
|
||||
$(wildcard include/config/irq/domain.h) \
|
||||
include/linux/pinctrl/pinctrl.h \
|
||||
$(wildcard include/config/generic/pinconf.h) \
|
||||
include/linux/gpio/consumer.h \
|
||||
$(wildcard include/config/gpio/sysfs.h) \
|
||||
include/linux/interrupt.h \
|
||||
$(wildcard include/config/irq/forced/threading.h) \
|
||||
$(wildcard include/config/generic/irq/probe.h) \
|
||||
include/linux/hardirq.h \
|
||||
include/linux/ftrace_irq.h \
|
||||
$(wildcard include/config/ftrace/nmi/enter.h) \
|
||||
$(wildcard include/config/hwlat/tracer.h) \
|
||||
include/linux/vtime.h \
|
||||
include/linux/context_tracking_state.h \
|
||||
$(wildcard include/config/context/tracking.h) \
|
||||
include/linux/static_key.h \
|
||||
arch/arm/include/asm/hardirq.h \
|
||||
include/linux/irq_cpustat.h \
|
||||
include/linux/slab.h \
|
||||
$(wildcard include/config/debug/slab.h) \
|
||||
$(wildcard include/config/failslab.h) \
|
||||
$(wildcard include/config/have/hardened/usercopy/allocator.h) \
|
||||
$(wildcard include/config/slab.h) \
|
||||
$(wildcard include/config/slub.h) \
|
||||
include/linux/kmemleak.h \
|
||||
$(wildcard include/config/debug/kmemleak.h) \
|
||||
include/linux/kasan.h \
|
||||
include/linux/fb.h \
|
||||
$(wildcard include/config/fb/notify.h) \
|
||||
$(wildcard include/config/fb/deferred/io.h) \
|
||||
$(wildcard include/config/fb/tileblitting.h) \
|
||||
$(wildcard include/config/fb/backlight.h) \
|
||||
$(wildcard include/config/fb/foreign/endian.h) \
|
||||
$(wildcard include/config/fb/both/endian.h) \
|
||||
$(wildcard include/config/fb/big/endian.h) \
|
||||
$(wildcard include/config/fb/little/endian.h) \
|
||||
include/linux/kgdb.h \
|
||||
$(wildcard include/config/have/arch/kgdb.h) \
|
||||
$(wildcard include/config/kgdb.h) \
|
||||
$(wildcard include/config/serial/kgdb/nmi.h) \
|
||||
arch/arm/include/asm/kgdb.h \
|
||||
include/linux/ptrace.h \
|
||||
include/linux/pid_namespace.h \
|
||||
$(wildcard include/config/pid/ns.h) \
|
||||
include/linux/mm.h \
|
||||
$(wildcard include/config/have/arch/mmap/rnd/bits.h) \
|
||||
$(wildcard include/config/have/arch/mmap/rnd/compat/bits.h) \
|
||||
$(wildcard include/config/mem/soft/dirty.h) \
|
||||
$(wildcard include/config/arch/uses/high/vma/flags.h) \
|
||||
$(wildcard include/config/x86.h) \
|
||||
$(wildcard include/config/x86/intel/memory/protection/keys.h) \
|
||||
$(wildcard include/config/ppc.h) \
|
||||
$(wildcard include/config/parisc.h) \
|
||||
$(wildcard include/config/metag.h) \
|
||||
$(wildcard include/config/shmem.h) \
|
||||
$(wildcard include/config/debug/vm/rb.h) \
|
||||
$(wildcard include/config/page/poisoning.h) \
|
||||
$(wildcard include/config/debug/pagealloc.h) \
|
||||
$(wildcard include/config/hibernation.h) \
|
||||
$(wildcard include/config/hugetlbfs.h) \
|
||||
include/linux/debug_locks.h \
|
||||
$(wildcard include/config/debug/locking/api/selftests.h) \
|
||||
include/linux/range.h \
|
||||
include/linux/page_ext.h \
|
||||
$(wildcard include/config/idle/page/tracking.h) \
|
||||
include/linux/stacktrace.h \
|
||||
$(wildcard include/config/stacktrace.h) \
|
||||
$(wildcard include/config/user/stacktrace/support.h) \
|
||||
include/linux/stackdepot.h \
|
||||
include/linux/page_ref.h \
|
||||
$(wildcard include/config/debug/page/ref.h) \
|
||||
include/linux/page-flags.h \
|
||||
$(wildcard include/config/arch/uses/pg/uncached.h) \
|
||||
$(wildcard include/config/memory/failure.h) \
|
||||
$(wildcard include/config/swap.h) \
|
||||
$(wildcard include/config/ksm.h) \
|
||||
include/linux/tracepoint-defs.h \
|
||||
arch/arm/include/asm/pgtable.h \
|
||||
$(wildcard include/config/highpte.h) \
|
||||
arch/arm/include/asm/proc-fns.h \
|
||||
arch/arm/include/asm/glue-proc.h \
|
||||
$(wildcard include/config/cpu/arm7tdmi.h) \
|
||||
$(wildcard include/config/cpu/arm720t.h) \
|
||||
$(wildcard include/config/cpu/arm740t.h) \
|
||||
$(wildcard include/config/cpu/arm9tdmi.h) \
|
||||
$(wildcard include/config/cpu/arm920t.h) \
|
||||
$(wildcard include/config/cpu/arm922t.h) \
|
||||
$(wildcard include/config/cpu/arm925t.h) \
|
||||
$(wildcard include/config/cpu/arm926t.h) \
|
||||
$(wildcard include/config/cpu/arm940t.h) \
|
||||
$(wildcard include/config/cpu/arm946e.h) \
|
||||
$(wildcard include/config/cpu/arm1020.h) \
|
||||
$(wildcard include/config/cpu/arm1020e.h) \
|
||||
$(wildcard include/config/cpu/arm1022.h) \
|
||||
$(wildcard include/config/cpu/arm1026.h) \
|
||||
$(wildcard include/config/cpu/mohawk.h) \
|
||||
$(wildcard include/config/cpu/feroceon.h) \
|
||||
$(wildcard include/config/cpu/v6k.h) \
|
||||
$(wildcard include/config/cpu/pj4b.h) \
|
||||
$(wildcard include/config/cpu/v7.h) \
|
||||
include/asm-generic/pgtable-nopud.h \
|
||||
arch/arm/include/asm/pgtable-hwdef.h \
|
||||
arch/arm/include/asm/pgtable-2level-hwdef.h \
|
||||
arch/arm/include/asm/tlbflush.h \
|
||||
$(wildcard include/config/smp/on/up.h) \
|
||||
$(wildcard include/config/cpu/tlb/v4wt.h) \
|
||||
$(wildcard include/config/cpu/tlb/fa.h) \
|
||||
$(wildcard include/config/cpu/tlb/v4wbi.h) \
|
||||
$(wildcard include/config/cpu/tlb/feroceon.h) \
|
||||
$(wildcard include/config/cpu/tlb/v4wb.h) \
|
||||
$(wildcard include/config/cpu/tlb/v6.h) \
|
||||
$(wildcard include/config/cpu/tlb/v7.h) \
|
||||
$(wildcard include/config/arm/errata/720789.h) \
|
||||
$(wildcard include/config/arm/errata/798181.h) \
|
||||
arch/arm/include/asm/pgtable-2level.h \
|
||||
include/asm-generic/pgtable.h \
|
||||
$(wildcard include/config/have/arch/soft/dirty.h) \
|
||||
include/linux/huge_mm.h \
|
||||
include/linux/vmstat.h \
|
||||
$(wildcard include/config/vm/event/counters.h) \
|
||||
$(wildcard include/config/debug/tlbflush.h) \
|
||||
$(wildcard include/config/debug/vm/vmacache.h) \
|
||||
include/linux/vm_event_item.h \
|
||||
$(wildcard include/config/memory/balloon.h) \
|
||||
$(wildcard include/config/balloon/compaction.h) \
|
||||
include/linux/nsproxy.h \
|
||||
include/linux/ns_common.h \
|
||||
include/uapi/linux/ptrace.h \
|
||||
include/uapi/linux/fb.h \
|
||||
include/linux/i2c.h \
|
||||
$(wildcard include/config/i2c.h) \
|
||||
$(wildcard include/config/i2c/slave.h) \
|
||||
$(wildcard include/config/i2c/boardinfo.h) \
|
||||
$(wildcard include/config/i2c/mux.h) \
|
||||
$(wildcard include/config/acpi.h) \
|
||||
include/uapi/linux/i2c.h \
|
||||
include/linux/backlight.h \
|
||||
|
||||
/home/pi/io-state/lkm/display.o: $(deps_/home/pi/io-state/lkm/display.o)
|
||||
|
||||
$(deps_/home/pi/io-state/lkm/display.o):
|
||||
1
lkm/.h1502display.ko.cmd
Normal file
1
lkm/.h1502display.ko.cmd
Normal file
@@ -0,0 +1 @@
|
||||
cmd_/home/pi/io-state/lkm/h1502display.ko := ld -EL -r -T ./scripts/module-common.lds --build-id -o /home/pi/io-state/lkm/h1502display.ko /home/pi/io-state/lkm/h1502display.o /home/pi/io-state/lkm/h1502display.mod.o ; true
|
||||
453
lkm/.h1502display.mod.o.cmd
Normal file
453
lkm/.h1502display.mod.o.cmd
Normal file
@@ -0,0 +1,453 @@
|
||||
cmd_/home/pi/io-state/lkm/h1502display.mod.o := gcc -Wp,-MD,/home/pi/io-state/lkm/.h1502display.mod.o.d -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/6/include -I./arch/arm/include -I./arch/arm/include/generated/uapi -I./arch/arm/include/generated -I./include -I./arch/arm/include/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mno-thumb-interwork -mfpu=vfp -funwind-tables -marm -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -O2 --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -DKBUILD_BASENAME='"h1502display.mod"' -DKBUILD_MODNAME='"h1502display"' -DMODULE -c -o /home/pi/io-state/lkm/h1502display.mod.o /home/pi/io-state/lkm/h1502display.mod.c
|
||||
|
||||
source_/home/pi/io-state/lkm/h1502display.mod.o := /home/pi/io-state/lkm/h1502display.mod.c
|
||||
|
||||
deps_/home/pi/io-state/lkm/h1502display.mod.o := \
|
||||
$(wildcard include/config/module/unload.h) \
|
||||
include/linux/module.h \
|
||||
$(wildcard include/config/modules.h) \
|
||||
$(wildcard include/config/sysfs.h) \
|
||||
$(wildcard include/config/modules/tree/lookup.h) \
|
||||
$(wildcard include/config/livepatch.h) \
|
||||
$(wildcard include/config/unused/symbols.h) \
|
||||
$(wildcard include/config/module/sig.h) \
|
||||
$(wildcard include/config/generic/bug.h) \
|
||||
$(wildcard include/config/kallsyms.h) \
|
||||
$(wildcard include/config/smp.h) \
|
||||
$(wildcard include/config/tracepoints.h) \
|
||||
$(wildcard include/config/tracing.h) \
|
||||
$(wildcard include/config/event/tracing.h) \
|
||||
$(wildcard include/config/ftrace/mcount/record.h) \
|
||||
$(wildcard include/config/constructors.h) \
|
||||
$(wildcard include/config/debug/set/module/ronx.h) \
|
||||
include/linux/list.h \
|
||||
$(wildcard include/config/debug/list.h) \
|
||||
include/linux/types.h \
|
||||
$(wildcard include/config/have/uid16.h) \
|
||||
$(wildcard include/config/uid16.h) \
|
||||
$(wildcard include/config/lbdaf.h) \
|
||||
$(wildcard include/config/arch/dma/addr/t/64bit.h) \
|
||||
$(wildcard include/config/phys/addr/t/64bit.h) \
|
||||
$(wildcard include/config/64bit.h) \
|
||||
include/uapi/linux/types.h \
|
||||
arch/arm/include/asm/types.h \
|
||||
include/asm-generic/int-ll64.h \
|
||||
include/uapi/asm-generic/int-ll64.h \
|
||||
arch/arm/include/generated/asm/bitsperlong.h \
|
||||
include/asm-generic/bitsperlong.h \
|
||||
include/uapi/asm-generic/bitsperlong.h \
|
||||
include/uapi/linux/posix_types.h \
|
||||
include/linux/stddef.h \
|
||||
include/uapi/linux/stddef.h \
|
||||
include/linux/compiler.h \
|
||||
$(wildcard include/config/sparse/rcu/pointer.h) \
|
||||
$(wildcard include/config/trace/branch/profiling.h) \
|
||||
$(wildcard include/config/profile/all/branches.h) \
|
||||
$(wildcard include/config/kasan.h) \
|
||||
$(wildcard include/config/enable/must/check.h) \
|
||||
$(wildcard include/config/enable/warn/deprecated.h) \
|
||||
$(wildcard include/config/kprobes.h) \
|
||||
include/linux/compiler-gcc.h \
|
||||
$(wildcard include/config/arch/supports/optimized/inlining.h) \
|
||||
$(wildcard include/config/optimize/inlining.h) \
|
||||
$(wildcard include/config/gcov/kernel.h) \
|
||||
$(wildcard include/config/arch/use/builtin/bswap.h) \
|
||||
arch/arm/include/uapi/asm/posix_types.h \
|
||||
include/uapi/asm-generic/posix_types.h \
|
||||
include/linux/poison.h \
|
||||
$(wildcard include/config/illegal/pointer/value.h) \
|
||||
$(wildcard include/config/page/poisoning/zero.h) \
|
||||
include/uapi/linux/const.h \
|
||||
include/linux/kernel.h \
|
||||
$(wildcard include/config/preempt/voluntary.h) \
|
||||
$(wildcard include/config/debug/atomic/sleep.h) \
|
||||
$(wildcard include/config/mmu.h) \
|
||||
$(wildcard include/config/prove/locking.h) \
|
||||
$(wildcard include/config/panic/timeout.h) \
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h \
|
||||
include/linux/linkage.h \
|
||||
include/linux/stringify.h \
|
||||
include/linux/export.h \
|
||||
$(wildcard include/config/have/underscore/symbol/prefix.h) \
|
||||
$(wildcard include/config/modversions.h) \
|
||||
$(wildcard include/config/trim/unused/ksyms.h) \
|
||||
arch/arm/include/asm/linkage.h \
|
||||
include/linux/bitops.h \
|
||||
arch/arm/include/asm/bitops.h \
|
||||
include/linux/irqflags.h \
|
||||
$(wildcard include/config/trace/irqflags.h) \
|
||||
$(wildcard include/config/irqsoff/tracer.h) \
|
||||
$(wildcard include/config/preempt/tracer.h) \
|
||||
$(wildcard include/config/trace/irqflags/support.h) \
|
||||
include/linux/typecheck.h \
|
||||
arch/arm/include/asm/irqflags.h \
|
||||
$(wildcard include/config/cpu/v7m.h) \
|
||||
arch/arm/include/asm/ptrace.h \
|
||||
$(wildcard include/config/arm/thumb.h) \
|
||||
$(wildcard include/config/thumb2/kernel.h) \
|
||||
arch/arm/include/uapi/asm/ptrace.h \
|
||||
$(wildcard include/config/cpu/endian/be8.h) \
|
||||
arch/arm/include/asm/hwcap.h \
|
||||
arch/arm/include/uapi/asm/hwcap.h \
|
||||
include/asm-generic/irqflags.h \
|
||||
arch/arm/include/asm/barrier.h \
|
||||
$(wildcard include/config/cpu/32v6k.h) \
|
||||
$(wildcard include/config/cpu/xsc3.h) \
|
||||
$(wildcard include/config/cpu/fa526.h) \
|
||||
$(wildcard include/config/arm/heavy/mb.h) \
|
||||
$(wildcard include/config/arm/dma/mem/bufferable.h) \
|
||||
include/asm-generic/barrier.h \
|
||||
include/asm-generic/bitops/non-atomic.h \
|
||||
include/asm-generic/bitops/fls64.h \
|
||||
include/asm-generic/bitops/sched.h \
|
||||
include/asm-generic/bitops/hweight.h \
|
||||
include/asm-generic/bitops/arch_hweight.h \
|
||||
include/asm-generic/bitops/const_hweight.h \
|
||||
include/asm-generic/bitops/lock.h \
|
||||
include/asm-generic/bitops/le.h \
|
||||
arch/arm/include/uapi/asm/byteorder.h \
|
||||
include/linux/byteorder/little_endian.h \
|
||||
include/uapi/linux/byteorder/little_endian.h \
|
||||
include/linux/swab.h \
|
||||
include/uapi/linux/swab.h \
|
||||
arch/arm/include/asm/swab.h \
|
||||
arch/arm/include/uapi/asm/swab.h \
|
||||
include/linux/byteorder/generic.h \
|
||||
include/asm-generic/bitops/ext2-atomic-setbit.h \
|
||||
include/linux/log2.h \
|
||||
$(wildcard include/config/arch/has/ilog2/u32.h) \
|
||||
$(wildcard include/config/arch/has/ilog2/u64.h) \
|
||||
include/linux/printk.h \
|
||||
$(wildcard include/config/message/loglevel/default.h) \
|
||||
$(wildcard include/config/early/printk.h) \
|
||||
$(wildcard include/config/printk/nmi.h) \
|
||||
$(wildcard include/config/printk.h) \
|
||||
$(wildcard include/config/dynamic/debug.h) \
|
||||
include/linux/init.h \
|
||||
$(wildcard include/config/debug/rodata.h) \
|
||||
include/linux/kern_levels.h \
|
||||
include/linux/cache.h \
|
||||
$(wildcard include/config/arch/has/cache/line/size.h) \
|
||||
include/uapi/linux/kernel.h \
|
||||
include/uapi/linux/sysinfo.h \
|
||||
arch/arm/include/asm/cache.h \
|
||||
$(wildcard include/config/arm/l1/cache/shift.h) \
|
||||
$(wildcard include/config/aeabi.h) \
|
||||
arch/arm/include/asm/div64.h \
|
||||
arch/arm/include/asm/compiler.h \
|
||||
include/asm-generic/div64.h \
|
||||
include/linux/stat.h \
|
||||
arch/arm/include/uapi/asm/stat.h \
|
||||
include/uapi/linux/stat.h \
|
||||
include/linux/time.h \
|
||||
$(wildcard include/config/arch/uses/gettimeoffset.h) \
|
||||
include/linux/seqlock.h \
|
||||
$(wildcard include/config/debug/lock/alloc.h) \
|
||||
include/linux/spinlock.h \
|
||||
$(wildcard include/config/debug/spinlock.h) \
|
||||
$(wildcard include/config/generic/lockbreak.h) \
|
||||
$(wildcard include/config/preempt.h) \
|
||||
include/linux/preempt.h \
|
||||
$(wildcard include/config/preempt/count.h) \
|
||||
$(wildcard include/config/debug/preempt.h) \
|
||||
$(wildcard include/config/preempt/notifiers.h) \
|
||||
arch/arm/include/generated/asm/preempt.h \
|
||||
include/asm-generic/preempt.h \
|
||||
include/linux/thread_info.h \
|
||||
$(wildcard include/config/thread/info/in/task.h) \
|
||||
$(wildcard include/config/compat.h) \
|
||||
$(wildcard include/config/debug/stack/usage.h) \
|
||||
$(wildcard include/config/have/arch/within/stack/frames.h) \
|
||||
$(wildcard include/config/hardened/usercopy.h) \
|
||||
include/linux/bug.h \
|
||||
arch/arm/include/asm/bug.h \
|
||||
$(wildcard include/config/debug/bugverbose.h) \
|
||||
$(wildcard include/config/arm/lpae.h) \
|
||||
arch/arm/include/asm/opcodes.h \
|
||||
$(wildcard include/config/cpu/endian/be32.h) \
|
||||
include/asm-generic/bug.h \
|
||||
$(wildcard include/config/bug.h) \
|
||||
$(wildcard include/config/generic/bug/relative/pointers.h) \
|
||||
arch/arm/include/asm/thread_info.h \
|
||||
$(wildcard include/config/crunch.h) \
|
||||
$(wildcard include/config/arm/thumbee.h) \
|
||||
arch/arm/include/asm/fpstate.h \
|
||||
$(wildcard include/config/vfpv3.h) \
|
||||
$(wildcard include/config/iwmmxt.h) \
|
||||
arch/arm/include/asm/page.h \
|
||||
$(wildcard include/config/cpu/copy/v4wt.h) \
|
||||
$(wildcard include/config/cpu/copy/v4wb.h) \
|
||||
$(wildcard include/config/cpu/copy/feroceon.h) \
|
||||
$(wildcard include/config/cpu/copy/fa.h) \
|
||||
$(wildcard include/config/cpu/sa1100.h) \
|
||||
$(wildcard include/config/cpu/xscale.h) \
|
||||
$(wildcard include/config/cpu/copy/v6.h) \
|
||||
$(wildcard include/config/kuser/helpers.h) \
|
||||
$(wildcard include/config/have/arch/pfn/valid.h) \
|
||||
arch/arm/include/asm/glue.h \
|
||||
arch/arm/include/asm/pgtable-2level-types.h \
|
||||
arch/arm/include/asm/memory.h \
|
||||
$(wildcard include/config/need/mach/memory/h.h) \
|
||||
$(wildcard include/config/page/offset.h) \
|
||||
$(wildcard include/config/highmem.h) \
|
||||
$(wildcard include/config/dram/base.h) \
|
||||
$(wildcard include/config/dram/size.h) \
|
||||
$(wildcard include/config/have/tcm.h) \
|
||||
$(wildcard include/config/arm/patch/phys/virt.h) \
|
||||
$(wildcard include/config/phys/offset.h) \
|
||||
$(wildcard include/config/xip/kernel.h) \
|
||||
$(wildcard include/config/xip/phys/addr.h) \
|
||||
include/linux/sizes.h \
|
||||
include/asm-generic/memory_model.h \
|
||||
$(wildcard include/config/flatmem.h) \
|
||||
$(wildcard include/config/discontigmem.h) \
|
||||
$(wildcard include/config/sparsemem/vmemmap.h) \
|
||||
$(wildcard include/config/sparsemem.h) \
|
||||
include/linux/pfn.h \
|
||||
include/asm-generic/getorder.h \
|
||||
include/linux/bottom_half.h \
|
||||
include/linux/spinlock_types.h \
|
||||
arch/arm/include/asm/spinlock_types.h \
|
||||
include/linux/lockdep.h \
|
||||
$(wildcard include/config/lockdep.h) \
|
||||
$(wildcard include/config/lock/stat.h) \
|
||||
include/linux/rwlock_types.h \
|
||||
arch/arm/include/asm/spinlock.h \
|
||||
include/linux/prefetch.h \
|
||||
arch/arm/include/asm/processor.h \
|
||||
$(wildcard include/config/have/hw/breakpoint.h) \
|
||||
$(wildcard include/config/arm/errata/754327.h) \
|
||||
arch/arm/include/asm/hw_breakpoint.h \
|
||||
arch/arm/include/asm/unified.h \
|
||||
$(wildcard include/config/arm/asm/unified.h) \
|
||||
include/linux/rwlock.h \
|
||||
include/linux/spinlock_api_smp.h \
|
||||
$(wildcard include/config/inline/spin/lock.h) \
|
||||
$(wildcard include/config/inline/spin/lock/bh.h) \
|
||||
$(wildcard include/config/inline/spin/lock/irq.h) \
|
||||
$(wildcard include/config/inline/spin/lock/irqsave.h) \
|
||||
$(wildcard include/config/inline/spin/trylock.h) \
|
||||
$(wildcard include/config/inline/spin/trylock/bh.h) \
|
||||
$(wildcard include/config/uninline/spin/unlock.h) \
|
||||
$(wildcard include/config/inline/spin/unlock/bh.h) \
|
||||
$(wildcard include/config/inline/spin/unlock/irq.h) \
|
||||
$(wildcard include/config/inline/spin/unlock/irqrestore.h) \
|
||||
include/linux/rwlock_api_smp.h \
|
||||
$(wildcard include/config/inline/read/lock.h) \
|
||||
$(wildcard include/config/inline/write/lock.h) \
|
||||
$(wildcard include/config/inline/read/lock/bh.h) \
|
||||
$(wildcard include/config/inline/write/lock/bh.h) \
|
||||
$(wildcard include/config/inline/read/lock/irq.h) \
|
||||
$(wildcard include/config/inline/write/lock/irq.h) \
|
||||
$(wildcard include/config/inline/read/lock/irqsave.h) \
|
||||
$(wildcard include/config/inline/write/lock/irqsave.h) \
|
||||
$(wildcard include/config/inline/read/trylock.h) \
|
||||
$(wildcard include/config/inline/write/trylock.h) \
|
||||
$(wildcard include/config/inline/read/unlock.h) \
|
||||
$(wildcard include/config/inline/write/unlock.h) \
|
||||
$(wildcard include/config/inline/read/unlock/bh.h) \
|
||||
$(wildcard include/config/inline/write/unlock/bh.h) \
|
||||
$(wildcard include/config/inline/read/unlock/irq.h) \
|
||||
$(wildcard include/config/inline/write/unlock/irq.h) \
|
||||
$(wildcard include/config/inline/read/unlock/irqrestore.h) \
|
||||
$(wildcard include/config/inline/write/unlock/irqrestore.h) \
|
||||
include/linux/atomic.h \
|
||||
$(wildcard include/config/generic/atomic64.h) \
|
||||
arch/arm/include/asm/atomic.h \
|
||||
arch/arm/include/asm/cmpxchg.h \
|
||||
$(wildcard include/config/cpu/sa110.h) \
|
||||
$(wildcard include/config/cpu/v6.h) \
|
||||
include/asm-generic/cmpxchg-local.h \
|
||||
include/asm-generic/atomic-long.h \
|
||||
include/linux/math64.h \
|
||||
$(wildcard include/config/arch/supports/int128.h) \
|
||||
include/linux/time64.h \
|
||||
include/uapi/linux/time.h \
|
||||
include/linux/uidgid.h \
|
||||
$(wildcard include/config/multiuser.h) \
|
||||
$(wildcard include/config/user/ns.h) \
|
||||
include/linux/highuid.h \
|
||||
include/linux/kmod.h \
|
||||
include/linux/gfp.h \
|
||||
$(wildcard include/config/zone/dma.h) \
|
||||
$(wildcard include/config/zone/dma32.h) \
|
||||
$(wildcard include/config/zone/device.h) \
|
||||
$(wildcard include/config/numa.h) \
|
||||
$(wildcard include/config/pm/sleep.h) \
|
||||
$(wildcard include/config/memory/isolation.h) \
|
||||
$(wildcard include/config/compaction.h) \
|
||||
$(wildcard include/config/cma.h) \
|
||||
include/linux/mmdebug.h \
|
||||
$(wildcard include/config/debug/vm.h) \
|
||||
$(wildcard include/config/debug/virtual.h) \
|
||||
$(wildcard include/config/debug/vm/pgflags.h) \
|
||||
include/linux/mmzone.h \
|
||||
$(wildcard include/config/force/max/zoneorder.h) \
|
||||
$(wildcard include/config/zsmalloc.h) \
|
||||
$(wildcard include/config/memcg.h) \
|
||||
$(wildcard include/config/memory/hotplug.h) \
|
||||
$(wildcard include/config/flat/node/mem/map.h) \
|
||||
$(wildcard include/config/page/extension.h) \
|
||||
$(wildcard include/config/no/bootmem.h) \
|
||||
$(wildcard include/config/numa/balancing.h) \
|
||||
$(wildcard include/config/deferred/struct/page/init.h) \
|
||||
$(wildcard include/config/transparent/hugepage.h) \
|
||||
$(wildcard include/config/have/memory/present.h) \
|
||||
$(wildcard include/config/have/memoryless/nodes.h) \
|
||||
$(wildcard include/config/need/node/memmap/size.h) \
|
||||
$(wildcard include/config/have/memblock/node/map.h) \
|
||||
$(wildcard include/config/need/multiple/nodes.h) \
|
||||
$(wildcard include/config/have/arch/early/pfn/to/nid.h) \
|
||||
$(wildcard include/config/sparsemem/extreme.h) \
|
||||
$(wildcard include/config/holes/in/zone.h) \
|
||||
$(wildcard include/config/arch/has/holes/memorymodel.h) \
|
||||
include/linux/wait.h \
|
||||
arch/arm/include/generated/asm/current.h \
|
||||
include/asm-generic/current.h \
|
||||
include/uapi/linux/wait.h \
|
||||
include/linux/threads.h \
|
||||
$(wildcard include/config/nr/cpus.h) \
|
||||
$(wildcard include/config/base/small.h) \
|
||||
include/linux/numa.h \
|
||||
$(wildcard include/config/nodes/shift.h) \
|
||||
include/linux/nodemask.h \
|
||||
$(wildcard include/config/movable/node.h) \
|
||||
include/linux/bitmap.h \
|
||||
$(wildcard include/config/s390.h) \
|
||||
include/linux/string.h \
|
||||
$(wildcard include/config/binary/printf.h) \
|
||||
include/uapi/linux/string.h \
|
||||
arch/arm/include/asm/string.h \
|
||||
$(wildcard include/config/bcm2835/fast/memcpy.h) \
|
||||
include/linux/pageblock-flags.h \
|
||||
$(wildcard include/config/hugetlb/page.h) \
|
||||
$(wildcard include/config/hugetlb/page/size/variable.h) \
|
||||
include/linux/page-flags-layout.h \
|
||||
include/generated/bounds.h \
|
||||
include/linux/memory_hotplug.h \
|
||||
$(wildcard include/config/memory/hotremove.h) \
|
||||
$(wildcard include/config/have/arch/nodedata/extension.h) \
|
||||
$(wildcard include/config/have/bootmem/info/node.h) \
|
||||
include/linux/notifier.h \
|
||||
include/linux/errno.h \
|
||||
include/uapi/linux/errno.h \
|
||||
arch/arm/include/generated/asm/errno.h \
|
||||
include/uapi/asm-generic/errno.h \
|
||||
include/uapi/asm-generic/errno-base.h \
|
||||
include/linux/mutex.h \
|
||||
$(wildcard include/config/debug/mutexes.h) \
|
||||
$(wildcard include/config/mutex/spin/on/owner.h) \
|
||||
include/linux/osq_lock.h \
|
||||
include/linux/rwsem.h \
|
||||
$(wildcard include/config/rwsem/spin/on/owner.h) \
|
||||
$(wildcard include/config/rwsem/generic/spinlock.h) \
|
||||
include/linux/err.h \
|
||||
arch/arm/include/generated/asm/rwsem.h \
|
||||
include/asm-generic/rwsem.h \
|
||||
include/linux/srcu.h \
|
||||
include/linux/rcupdate.h \
|
||||
$(wildcard include/config/tiny/rcu.h) \
|
||||
$(wildcard include/config/tree/rcu.h) \
|
||||
$(wildcard include/config/preempt/rcu.h) \
|
||||
$(wildcard include/config/rcu/trace.h) \
|
||||
$(wildcard include/config/rcu/stall/common.h) \
|
||||
$(wildcard include/config/no/hz/full.h) \
|
||||
$(wildcard include/config/rcu/nocb/cpu.h) \
|
||||
$(wildcard include/config/tasks/rcu.h) \
|
||||
$(wildcard include/config/debug/objects/rcu/head.h) \
|
||||
$(wildcard include/config/hotplug/cpu.h) \
|
||||
$(wildcard include/config/prove/rcu.h) \
|
||||
$(wildcard include/config/rcu/boost.h) \
|
||||
$(wildcard include/config/rcu/nocb/cpu/all.h) \
|
||||
$(wildcard include/config/no/hz/full/sysidle.h) \
|
||||
include/linux/cpumask.h \
|
||||
$(wildcard include/config/cpumask/offstack.h) \
|
||||
$(wildcard include/config/debug/per/cpu/maps.h) \
|
||||
include/linux/completion.h \
|
||||
include/linux/debugobjects.h \
|
||||
$(wildcard include/config/debug/objects.h) \
|
||||
$(wildcard include/config/debug/objects/free.h) \
|
||||
include/linux/ktime.h \
|
||||
include/linux/jiffies.h \
|
||||
include/linux/timex.h \
|
||||
include/uapi/linux/timex.h \
|
||||
include/uapi/linux/param.h \
|
||||
arch/arm/include/generated/asm/param.h \
|
||||
include/asm-generic/param.h \
|
||||
$(wildcard include/config/hz.h) \
|
||||
include/uapi/asm-generic/param.h \
|
||||
arch/arm/include/asm/timex.h \
|
||||
include/generated/timeconst.h \
|
||||
include/linux/timekeeping.h \
|
||||
include/linux/rcutree.h \
|
||||
include/linux/workqueue.h \
|
||||
$(wildcard include/config/debug/objects/work.h) \
|
||||
$(wildcard include/config/freezer.h) \
|
||||
$(wildcard include/config/wq/watchdog.h) \
|
||||
include/linux/timer.h \
|
||||
$(wildcard include/config/timer/stats.h) \
|
||||
$(wildcard include/config/debug/objects/timers.h) \
|
||||
$(wildcard include/config/no/hz/common.h) \
|
||||
include/linux/sysctl.h \
|
||||
$(wildcard include/config/sysctl.h) \
|
||||
include/linux/rbtree.h \
|
||||
include/uapi/linux/sysctl.h \
|
||||
include/linux/topology.h \
|
||||
$(wildcard include/config/use/percpu/numa/node/id.h) \
|
||||
$(wildcard include/config/sched/smt.h) \
|
||||
include/linux/smp.h \
|
||||
$(wildcard include/config/up/late/init.h) \
|
||||
include/linux/llist.h \
|
||||
$(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \
|
||||
arch/arm/include/asm/smp.h \
|
||||
include/linux/percpu.h \
|
||||
$(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
|
||||
$(wildcard include/config/need/per/cpu/page/first/chunk.h) \
|
||||
$(wildcard include/config/have/setup/per/cpu/area.h) \
|
||||
arch/arm/include/asm/percpu.h \
|
||||
include/asm-generic/percpu.h \
|
||||
include/linux/percpu-defs.h \
|
||||
$(wildcard include/config/debug/force/weak/per/cpu.h) \
|
||||
arch/arm/include/asm/topology.h \
|
||||
$(wildcard include/config/arm/cpu/topology.h) \
|
||||
include/asm-generic/topology.h \
|
||||
include/linux/elf.h \
|
||||
arch/arm/include/asm/elf.h \
|
||||
$(wildcard include/config/vdso.h) \
|
||||
arch/arm/include/asm/auxvec.h \
|
||||
arch/arm/include/uapi/asm/auxvec.h \
|
||||
arch/arm/include/asm/vdso_datapage.h \
|
||||
arch/arm/include/asm/user.h \
|
||||
include/uapi/linux/elf.h \
|
||||
include/uapi/linux/elf-em.h \
|
||||
include/linux/kobject.h \
|
||||
$(wildcard include/config/uevent/helper.h) \
|
||||
$(wildcard include/config/debug/kobject/release.h) \
|
||||
include/linux/sysfs.h \
|
||||
include/linux/kernfs.h \
|
||||
$(wildcard include/config/kernfs.h) \
|
||||
include/linux/idr.h \
|
||||
include/linux/kobject_ns.h \
|
||||
include/linux/kref.h \
|
||||
include/linux/moduleparam.h \
|
||||
$(wildcard include/config/alpha.h) \
|
||||
$(wildcard include/config/ia64.h) \
|
||||
$(wildcard include/config/ppc64.h) \
|
||||
include/linux/jump_label.h \
|
||||
$(wildcard include/config/jump/label.h) \
|
||||
arch/arm/include/asm/jump_label.h \
|
||||
include/linux/extable.h \
|
||||
include/linux/rbtree_latch.h \
|
||||
arch/arm/include/asm/module.h \
|
||||
$(wildcard include/config/arm/unwind.h) \
|
||||
$(wildcard include/config/arm/module/plts.h) \
|
||||
include/asm-generic/module.h \
|
||||
$(wildcard include/config/have/mod/arch/specific.h) \
|
||||
$(wildcard include/config/modules/use/elf/rel.h) \
|
||||
$(wildcard include/config/modules/use/elf/rela.h) \
|
||||
include/linux/vermagic.h \
|
||||
include/generated/utsrelease.h \
|
||||
|
||||
/home/pi/io-state/lkm/h1502display.mod.o: $(deps_/home/pi/io-state/lkm/h1502display.mod.o)
|
||||
|
||||
$(deps_/home/pi/io-state/lkm/h1502display.mod.o):
|
||||
1
lkm/.h1502display.o.cmd
Normal file
1
lkm/.h1502display.o.cmd
Normal file
@@ -0,0 +1 @@
|
||||
cmd_/home/pi/io-state/lkm/h1502display.o := ld -EL -r -o /home/pi/io-state/lkm/h1502display.o /home/pi/io-state/lkm/display.o
|
||||
3
lkm/.tmp_versions/h1502display.mod
Normal file
3
lkm/.tmp_versions/h1502display.mod
Normal file
@@ -0,0 +1,3 @@
|
||||
/home/pi/io-state/lkm/h1502display.ko
|
||||
/home/pi/io-state/lkm/display.o
|
||||
|
||||
26
lkm/Makefile
Normal file
26
lkm/Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
obj-m += h1502display.o
|
||||
|
||||
h1502display-objs := display.o
|
||||
|
||||
ccflags-y += ${MY_CFLAGS}
|
||||
CC += ${MY_CFLAGS}
|
||||
|
||||
|
||||
.PHONY: all
|
||||
all:
|
||||
@echo "normal build for h1502"
|
||||
make C=2 -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
|
||||
|
||||
.PHONY: test
|
||||
test:
|
||||
@echo "testing build for raspberry"
|
||||
make W=1 C=2 CFLAGS_MODULE=-DTEST -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean
|
||||
|
||||
.PHONY: help
|
||||
help:
|
||||
@echo ' clean - delete all files created by build'
|
||||
@echo ' test - build test code for raspberry'
|
||||
0
lkm/Module.symvers
Normal file
0
lkm/Module.symvers
Normal file
37
lkm/S11display
Executable file
37
lkm/S11display
Executable file
@@ -0,0 +1,37 @@
|
||||
#! /bin/sh
|
||||
# /etc/init.d/S11display
|
||||
|
||||
start(){
|
||||
echo "Starting display:"
|
||||
insmod /lib/modules/$(uname -r)/extra/h1502display.ko
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
stop(){
|
||||
echo "Stopping display:"
|
||||
rmmod h1502display
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
restart(){
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart|reload)
|
||||
restart
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit $?
|
||||
311
lkm/display.c
Normal file
311
lkm/display.c
Normal file
@@ -0,0 +1,311 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/fb.h>
|
||||
//#include "st7565.h"
|
||||
//#include "global.h"
|
||||
|
||||
#define DEVICE_NAME "h1502display" ///< The device will appear at /dev/ebbchar using this value
|
||||
#define CLASS_NAME "h1502" ///< The device class -- this is a character device driver
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Martijn Scheepers");
|
||||
MODULE_DESCRIPTION("H1502 display driver.");
|
||||
MODULE_VERSION("0.1");
|
||||
|
||||
static DEFINE_MUTEX(display_mutex);
|
||||
//static DEFINE_MUTEX(spi_mutex);
|
||||
|
||||
static int major_number;
|
||||
static struct class *display_class = NULL;
|
||||
static struct device *display_device = NULL;
|
||||
|
||||
//static int g_time_interval = DISPLAY_TIMEOUT;
|
||||
//static struct timer_list g_timer;
|
||||
|
||||
static struct task_struct *display_update_task;
|
||||
|
||||
static int dev_open(struct inode *, struct file *);
|
||||
static int dev_release(struct inode *, struct file *);
|
||||
static ssize_t dev_write(struct file *, const char __user *, size_t, loff_t *);
|
||||
|
||||
static struct file_operations fops = {
|
||||
.open = dev_open,
|
||||
.write = dev_write,
|
||||
.release = dev_release,
|
||||
};
|
||||
|
||||
//pin numbering gpio
|
||||
#ifdef TEST
|
||||
//gpio on raspberry header
|
||||
static int gpio_input[] = {
|
||||
0, 2, 3, 4, 2, 3, 4, 2, 3
|
||||
};
|
||||
static int gpio_output[] = {
|
||||
0, 4, 3, 2, 4, 3, 2, 4, 3
|
||||
};
|
||||
#else
|
||||
//gpio h1502
|
||||
static int gpio_input[] = {
|
||||
0, 29, 28, 27, 26, 25, 24, 23, 22
|
||||
};
|
||||
static int gpio_output[] = {
|
||||
0, 81, 80, 79, 78, 83, 84, 76, 77
|
||||
};
|
||||
#endif
|
||||
|
||||
static unsigned int gpio_input_state, gpio_output_state;
|
||||
//static struct line_t line[4];
|
||||
//static int scroll_delay;
|
||||
//static volatile int clear_flag = 0;
|
||||
|
||||
#define SCROLL_DELAY_MULTIPLIER 1
|
||||
|
||||
//thread with loop for refreshing the display
|
||||
static int update_display(void *arg){
|
||||
unsigned int gpio_state;
|
||||
int i;
|
||||
|
||||
while(!kthread_should_stop()){
|
||||
//set_current_state(TASK_RUNNING);
|
||||
|
||||
gpio_state = 0x00;
|
||||
for(i = 1; i < 9; i++){
|
||||
gpio_state = gpio_state << 1;
|
||||
gpio_state = gpio_state | !gpio_get_value(gpio_input[i]);
|
||||
}
|
||||
if(gpio_state != gpio_input_state){
|
||||
//mutex_lock(&spi_mutex);
|
||||
//st7565_draw_gpio(INPUT, gpio_state);
|
||||
//mutex_unlock(&spi_mutex);
|
||||
gpio_input_state = gpio_state;
|
||||
}
|
||||
|
||||
gpio_state = 0x00;
|
||||
for(i = 1; i < 9; i++){
|
||||
gpio_state = gpio_state << 1;
|
||||
gpio_state = gpio_state | gpio_get_value(gpio_output[i]);
|
||||
}
|
||||
if(gpio_state != gpio_output_state){
|
||||
//mutex_lock(&spi_mutex);
|
||||
//st7565_draw_gpio(OUTPUT, gpio_state);
|
||||
//mutex_unlock(&spi_mutex);
|
||||
gpio_output_state = gpio_state;
|
||||
}
|
||||
|
||||
//set_current_state(TASK_INTERRUPTIBLE);
|
||||
msleep(100);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// #############################################################################
|
||||
|
||||
static void framebuffer_test(void){
|
||||
int i;
|
||||
struct fb_info *info = NULL;
|
||||
|
||||
//printk("framebuffer test\n");
|
||||
|
||||
info = registered_fb[1];
|
||||
if (!info){
|
||||
printk("fb_info error\n");
|
||||
return;
|
||||
}
|
||||
|
||||
//printk("xres = %d\n", info->var.xres);
|
||||
//printk("yres = %d\n", info->var.yres);
|
||||
|
||||
if (!info->screen_base) {
|
||||
printk("screen_base empty\n");
|
||||
return;
|
||||
}
|
||||
|
||||
printk("framebuffer at 0x%lx, 0x%x bytes, mapped to 0x%p\n",
|
||||
info->fix.smem_start,
|
||||
info->fix.smem_len,
|
||||
info->screen_base);
|
||||
|
||||
printk("fb res %dx%d virtual %dx%d, line_len %d, bpp %d\n",
|
||||
info->var.xres, info->var.yres,
|
||||
info->var.xres_virtual, info->var.yres_virtual,
|
||||
info->fix.line_length, info->var.bits_per_pixel);
|
||||
|
||||
//printk("fbops = %p\n", info->fbops);
|
||||
//printk("fbdefio = %p\n", info->fbdefio);
|
||||
|
||||
writeb(0xff, info->screen_base + 0x720);
|
||||
writeb(0xff, info->screen_base + 0x721);
|
||||
writeb(0xff, info->screen_base + 0x722);
|
||||
|
||||
//memset_io(info->screen_base, 0xFF, info->fix.smem_len);
|
||||
|
||||
//if (info->fbops->fb_sync){
|
||||
// info->fbops->fb_sync(info);
|
||||
//}
|
||||
fb_write(info, );
|
||||
|
||||
for (i = 0; i < 10; i++){
|
||||
//p8 = (unsigned char *)fb_info->fix.smem_start
|
||||
// fb = fb + i;
|
||||
// *fb = 0xFF;
|
||||
printk("address %d = %d\n", i, readb(info->screen_base + 0x720 + i) );
|
||||
}
|
||||
|
||||
}
|
||||
//********************************************************************************
|
||||
|
||||
|
||||
// called when kernel module starts
|
||||
static int __init h1502display_init(void){
|
||||
int i;
|
||||
|
||||
printk(KERN_INFO "h1502display: starting display driver\n");
|
||||
|
||||
// Try to dynamically allocate a major number for the device -- more difficult but worth it
|
||||
major_number = register_chrdev(0, DEVICE_NAME, &fops);
|
||||
if (major_number < 0){
|
||||
printk(KERN_ALERT "h1502display: failed to register a major number\n");
|
||||
return major_number;
|
||||
}
|
||||
|
||||
// Register the device class
|
||||
display_class = class_create(THIS_MODULE, CLASS_NAME);
|
||||
if (IS_ERR(display_class)){ // Check for error and clean up if there is
|
||||
unregister_chrdev(major_number, DEVICE_NAME);
|
||||
printk(KERN_ALERT "h1502display: Failed to register device class\n");
|
||||
return PTR_ERR(display_class); // Correct way to return an error on a pointer
|
||||
}
|
||||
|
||||
// Register the device driver
|
||||
display_device = device_create(display_class, NULL, MKDEV(major_number, 0), NULL, DEVICE_NAME);
|
||||
if (IS_ERR(display_device)){ // Clean up if there is an error
|
||||
class_destroy(display_class); // Repeated code but the alternative is goto statements
|
||||
unregister_chrdev(major_number, DEVICE_NAME);
|
||||
printk(KERN_ALERT "h1502display: Failed to create the device\n");
|
||||
return PTR_ERR(display_device);
|
||||
}
|
||||
|
||||
|
||||
//framebuffer_test();
|
||||
|
||||
|
||||
#ifdef TEST
|
||||
//raspberry pi GPIO
|
||||
gpio_request(2, "sysfs");
|
||||
gpio_direction_input(2);
|
||||
|
||||
gpio_request(3, "sysfs");
|
||||
gpio_direction_input(3);
|
||||
|
||||
gpio_request(4, "sysfs");
|
||||
gpio_direction_input(4);
|
||||
#else
|
||||
//h1502
|
||||
for(i = 1; i < 9; i++){
|
||||
gpio_request(gpio_input[i], "sysfs");
|
||||
gpio_direction_input(gpio_input[i]);
|
||||
}
|
||||
for(i = 1; i < 9; i++){
|
||||
gpio_request(gpio_output[i], "sysfs");
|
||||
gpio_direction_output(gpio_output[i], 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
//ret = st7565_init();
|
||||
//if(ret != 0){
|
||||
// return -ret;
|
||||
//}
|
||||
|
||||
//for(i=0; i<4; i++){
|
||||
// line[i].msg_length = 0;
|
||||
//}
|
||||
|
||||
mutex_init(&display_mutex);
|
||||
//mutex_init(&spi_mutex);
|
||||
|
||||
display_update_task = kthread_run(update_display, NULL, "display_update");
|
||||
if(IS_ERR(display_update_task)){
|
||||
printk(KERN_ALERT "h1502display: failed to create the update task\n");
|
||||
return PTR_ERR(display_update_task);
|
||||
}
|
||||
|
||||
//setup_timer(&g_timer, clear_timer_handler, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// called when kernel module closes
|
||||
static void __exit h1502display_exit(void){
|
||||
|
||||
if(display_update_task){
|
||||
kthread_stop(display_update_task);
|
||||
}
|
||||
|
||||
device_destroy(display_class, MKDEV(major_number, 0)); // remove the device
|
||||
class_unregister(display_class); // unregister the device class
|
||||
class_destroy(display_class); // remove the device class
|
||||
unregister_chrdev(major_number, DEVICE_NAME); // unregister the major number
|
||||
|
||||
mutex_destroy(&display_mutex); /// destroy the dynamically-allocated mutex
|
||||
|
||||
printk(KERN_INFO "h1502display: Goodbye\n");
|
||||
}
|
||||
|
||||
|
||||
// called each time the device is opened
|
||||
static int dev_open(struct inode *inodep, struct file *filep){
|
||||
if(!mutex_trylock(&display_mutex)){
|
||||
printk(KERN_ALERT "h1502display: Device in use by another process\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// called whenever the device is being written to from user space
|
||||
static ssize_t dev_write(struct file *filep, const char __user *buffer, size_t len, loff_t *offset){
|
||||
char *messageptr;
|
||||
|
||||
if( len < 2 ){
|
||||
return -ENOMSG;
|
||||
}
|
||||
messageptr = kmalloc(len * sizeof(char), GFP_KERNEL);
|
||||
if(!messageptr){
|
||||
return -ENOMEM;
|
||||
}
|
||||
//memset(messageptr, '\0', sizeof(messageptr));
|
||||
if(copy_from_user(messageptr, buffer, len)){
|
||||
kfree(messageptr);
|
||||
return -EFAULT;
|
||||
}
|
||||
messageptr[len] = '\0';
|
||||
|
||||
printk("%s\n", messageptr);
|
||||
framebuffer_test();
|
||||
|
||||
kfree(messageptr);
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
//called whenever the device is closed/released by the userspace program
|
||||
static int dev_release(struct inode *inodep, struct file *filep){
|
||||
mutex_unlock(&display_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
module_init(h1502display_init);
|
||||
module_exit(h1502display_exit);
|
||||
120
lkm/font.h
Normal file
120
lkm/font.h
Normal file
@@ -0,0 +1,120 @@
|
||||
#ifndef FONT_H
|
||||
#define FONT_H
|
||||
|
||||
// font.h
|
||||
//
|
||||
// Tablica czcionek 5x7
|
||||
|
||||
static char font5x7[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00,// (space)
|
||||
0x00, 0x00, 0x5F, 0x00, 0x00,// !
|
||||
0x00, 0x07, 0x00, 0x07, 0x00,// "
|
||||
0x14, 0x7F, 0x14, 0x7F, 0x14,// #
|
||||
0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
|
||||
0x23, 0x13, 0x08, 0x64, 0x62,// %
|
||||
0x36, 0x49, 0x55, 0x22, 0x50,// &
|
||||
0x00, 0x05, 0x03, 0x00, 0x00,// '
|
||||
0x00, 0x1C, 0x22, 0x41, 0x00,// (
|
||||
0x00, 0x41, 0x22, 0x1C, 0x00,// )
|
||||
0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
|
||||
0x08, 0x08, 0x3E, 0x08, 0x08,// +
|
||||
0x00, 0x50, 0x30, 0x00, 0x00,// ,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08,// -
|
||||
0x00, 0x30, 0x30, 0x00, 0x00,// .
|
||||
0x20, 0x10, 0x08, 0x04, 0x02,// /
|
||||
0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
|
||||
0x00, 0x42, 0x7F, 0x40, 0x00,// 1
|
||||
0x42, 0x61, 0x51, 0x49, 0x46,// 2
|
||||
0x21, 0x41, 0x45, 0x4B, 0x31,// 3
|
||||
0x18, 0x14, 0x12, 0x7F, 0x10,// 4
|
||||
0x27, 0x45, 0x45, 0x45, 0x39,// 5
|
||||
0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
|
||||
0x01, 0x71, 0x09, 0x05, 0x03,// 7
|
||||
0x36, 0x49, 0x49, 0x49, 0x36,// 8
|
||||
0x06, 0x49, 0x49, 0x29, 0x1E,// 9
|
||||
0x00, 0x36, 0x36, 0x00, 0x00,// :
|
||||
0x00, 0x56, 0x36, 0x00, 0x00,// ;
|
||||
0x00, 0x08, 0x14, 0x22, 0x41,// <
|
||||
0x14, 0x14, 0x14, 0x14, 0x14,// =
|
||||
0x41, 0x22, 0x14, 0x08, 0x00,// >
|
||||
0x02, 0x01, 0x51, 0x09, 0x06,// ?
|
||||
0x32, 0x49, 0x79, 0x41, 0x3E,// @
|
||||
0x7E, 0x11, 0x11, 0x11, 0x7E,// A
|
||||
0x7F, 0x49, 0x49, 0x49, 0x36,// B
|
||||
0x3E, 0x41, 0x41, 0x41, 0x22,// C
|
||||
0x7F, 0x41, 0x41, 0x22, 0x1C,// D
|
||||
0x7F, 0x49, 0x49, 0x49, 0x41,// E
|
||||
0x7F, 0x09, 0x09, 0x01, 0x01,// F
|
||||
0x3E, 0x41, 0x41, 0x51, 0x32,// G
|
||||
0x7F, 0x08, 0x08, 0x08, 0x7F,// H
|
||||
0x00, 0x41, 0x7F, 0x41, 0x00,// I
|
||||
0x20, 0x40, 0x41, 0x3F, 0x01,// J
|
||||
0x7F, 0x08, 0x14, 0x22, 0x41,// K
|
||||
0x7F, 0x40, 0x40, 0x40, 0x40,// L
|
||||
0x7F, 0x02, 0x04, 0x02, 0x7F,// M
|
||||
0x7F, 0x04, 0x08, 0x10, 0x7F,// N
|
||||
0x3E, 0x41, 0x41, 0x41, 0x3E,// O
|
||||
0x7F, 0x09, 0x09, 0x09, 0x06,// P
|
||||
0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
|
||||
0x7F, 0x09, 0x19, 0x29, 0x46,// R
|
||||
0x46, 0x49, 0x49, 0x49, 0x31,// S
|
||||
0x01, 0x01, 0x7F, 0x01, 0x01,// T
|
||||
0x3F, 0x40, 0x40, 0x40, 0x3F,// U
|
||||
0x1F, 0x20, 0x40, 0x20, 0x1F,// V
|
||||
0x7F, 0x20, 0x18, 0x20, 0x7F,// W
|
||||
0x63, 0x14, 0x08, 0x14, 0x63,// X
|
||||
0x03, 0x04, 0x78, 0x04, 0x03,// Y
|
||||
0x61, 0x51, 0x49, 0x45, 0x43,// Z
|
||||
0x00, 0x00, 0x7F, 0x41, 0x41,// [
|
||||
0x02, 0x04, 0x08, 0x10, 0x20,// "\"
|
||||
0x41, 0x41, 0x7F, 0x00, 0x00,// ]
|
||||
0x04, 0x02, 0x01, 0x02, 0x04,// ^
|
||||
0x40, 0x40, 0x40, 0x40, 0x40,// _
|
||||
0x00, 0x01, 0x02, 0x04, 0x00,// `
|
||||
0x20, 0x54, 0x54, 0x54, 0x78,// a
|
||||
0x7F, 0x48, 0x44, 0x44, 0x38,// b
|
||||
0x38, 0x44, 0x44, 0x44, 0x20,// c
|
||||
0x38, 0x44, 0x44, 0x48, 0x7F,// d
|
||||
0x38, 0x54, 0x54, 0x54, 0x18,// e
|
||||
0x08, 0x7E, 0x09, 0x01, 0x02,// f
|
||||
0x08, 0x14, 0x54, 0x54, 0x3C,// g
|
||||
0x7F, 0x08, 0x04, 0x04, 0x78,// h
|
||||
0x00, 0x44, 0x7D, 0x40, 0x00,// i
|
||||
0x20, 0x40, 0x44, 0x3D, 0x00,// j
|
||||
0x00, 0x7F, 0x10, 0x28, 0x44,// k
|
||||
0x00, 0x41, 0x7F, 0x40, 0x00,// l
|
||||
0x7C, 0x04, 0x18, 0x04, 0x78,// m
|
||||
0x7C, 0x08, 0x04, 0x04, 0x78,// n
|
||||
0x38, 0x44, 0x44, 0x44, 0x38,// o
|
||||
0x7C, 0x14, 0x14, 0x14, 0x08,// p
|
||||
0x08, 0x14, 0x14, 0x18, 0x7C,// q
|
||||
0x7C, 0x08, 0x04, 0x04, 0x08,// r
|
||||
0x48, 0x54, 0x54, 0x54, 0x20,// s
|
||||
0x04, 0x3F, 0x44, 0x40, 0x20,// t
|
||||
0x3C, 0x40, 0x40, 0x20, 0x7C,// u
|
||||
0x1C, 0x20, 0x40, 0x20, 0x1C,// v
|
||||
0x3C, 0x40, 0x30, 0x40, 0x3C,// w
|
||||
0x44, 0x28, 0x10, 0x28, 0x44,// x
|
||||
0x0C, 0x50, 0x50, 0x50, 0x3C,// y
|
||||
0x44, 0x64, 0x54, 0x4C, 0x44,// z
|
||||
0x00, 0x08, 0x36, 0x41, 0x00,// {
|
||||
0x00, 0x00, 0x7F, 0x00, 0x00,// |
|
||||
0x00, 0x41, 0x36, 0x08, 0x00,// }
|
||||
0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
|
||||
0x08, 0x1C, 0x2A, 0x08, 0x08 // <-
|
||||
};
|
||||
|
||||
// gpio icons 6x8
|
||||
//static char gpio_icon_small[] = {
|
||||
//0x00, 0x1C, 0x22, 0x22, 0x22, 0x1C, //open
|
||||
//0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C //closed
|
||||
//};
|
||||
|
||||
// gpio icons large 7x7
|
||||
static char gpio_icon_large[] = {
|
||||
0x00, 0x3E, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3E, //open
|
||||
0x00, 0x3E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3E //closed
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
39
lkm/global.h
Normal file
39
lkm/global.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef GLOBAL_H
|
||||
#define GLOBAL_H
|
||||
|
||||
//display pixels
|
||||
#define DISPLAY_WIDTH 128
|
||||
#define DISPLAY_HEIGHT 32
|
||||
|
||||
//max chars on display
|
||||
#define LINE_LENGTH 21
|
||||
|
||||
// two spaces after scrolling line
|
||||
#define SCROLL_PADDING 2
|
||||
|
||||
//width off gpio status
|
||||
#define GPIO_WIDTH 81
|
||||
|
||||
//60 seconds
|
||||
#define DISPLAY_TIMEOUT 60000
|
||||
//#define DISPLAY_TIMEOUT 10000
|
||||
|
||||
|
||||
//pixel size of the font
|
||||
#define FONT_WIDTH 6
|
||||
#define FONT_HEIGHT 7
|
||||
|
||||
#define INPUT 'I'
|
||||
#define OUTPUT 'O'
|
||||
|
||||
struct line_t{
|
||||
unsigned long column;
|
||||
unsigned long invert;
|
||||
char *message;
|
||||
unsigned int msg_length;
|
||||
char *bitmap;
|
||||
unsigned int bmp_length;
|
||||
int bmp_idx;
|
||||
};
|
||||
|
||||
#endif
|
||||
BIN
lkm/h1502display.ko
Normal file
BIN
lkm/h1502display.ko
Normal file
Binary file not shown.
57
lkm/h1502display.mod.c
Normal file
57
lkm/h1502display.mod.c
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/vermagic.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
MODULE_INFO(vermagic, VERMAGIC_STRING);
|
||||
|
||||
__visible struct module __this_module
|
||||
__attribute__((section(".gnu.linkonce.this_module"))) = {
|
||||
.name = KBUILD_MODNAME,
|
||||
.init = init_module,
|
||||
#ifdef CONFIG_MODULE_UNLOAD
|
||||
.exit = cleanup_module,
|
||||
#endif
|
||||
.arch = MODULE_ARCH_INIT,
|
||||
};
|
||||
|
||||
static const struct modversion_info ____versions[]
|
||||
__used
|
||||
__attribute__((section("__versions"))) = {
|
||||
{ 0x425785a6, __VMLINUX_SYMBOL_STR(module_layout) },
|
||||
{ 0x6bc3fbc0, __VMLINUX_SYMBOL_STR(__unregister_chrdev) },
|
||||
{ 0x12da5bb2, __VMLINUX_SYMBOL_STR(__kmalloc) },
|
||||
{ 0xf9a482f9, __VMLINUX_SYMBOL_STR(msleep) },
|
||||
{ 0x2e5810c6, __VMLINUX_SYMBOL_STR(__aeabi_unwind_cpp_pr1) },
|
||||
{ 0x47229b5c, __VMLINUX_SYMBOL_STR(gpio_request) },
|
||||
{ 0xc0409705, __VMLINUX_SYMBOL_STR(gpio_to_desc) },
|
||||
{ 0x89ba0ccf, __VMLINUX_SYMBOL_STR(device_destroy) },
|
||||
{ 0x778c69ef, __VMLINUX_SYMBOL_STR(__register_chrdev) },
|
||||
{ 0xb1ad28e0, __VMLINUX_SYMBOL_STR(__gnu_mcount_nc) },
|
||||
{ 0x28cc25db, __VMLINUX_SYMBOL_STR(arm_copy_from_user) },
|
||||
{ 0xe4a48145, __VMLINUX_SYMBOL_STR(mutex_unlock) },
|
||||
{ 0xd74ebe2, __VMLINUX_SYMBOL_STR(kthread_create_on_node) },
|
||||
{ 0xc73af6d, __VMLINUX_SYMBOL_STR(mutex_trylock) },
|
||||
{ 0xfa2a45e, __VMLINUX_SYMBOL_STR(__memzero) },
|
||||
{ 0x6a338294, __VMLINUX_SYMBOL_STR(__mutex_init) },
|
||||
{ 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) },
|
||||
{ 0xb896aaef, __VMLINUX_SYMBOL_STR(kthread_stop) },
|
||||
{ 0xbf8c4e93, __VMLINUX_SYMBOL_STR(class_unregister) },
|
||||
{ 0xbea8798b, __VMLINUX_SYMBOL_STR(gpiod_direction_input) },
|
||||
{ 0x9cd9fd20, __VMLINUX_SYMBOL_STR(device_create) },
|
||||
{ 0x72106bb8, __VMLINUX_SYMBOL_STR(gpiod_direction_output_raw) },
|
||||
{ 0x6e41b470, __VMLINUX_SYMBOL_STR(registered_fb) },
|
||||
{ 0xbf4f2b49, __VMLINUX_SYMBOL_STR(wake_up_process) },
|
||||
{ 0xb3f7646e, __VMLINUX_SYMBOL_STR(kthread_should_stop) },
|
||||
{ 0x37a0cba, __VMLINUX_SYMBOL_STR(kfree) },
|
||||
{ 0x191148f8, __VMLINUX_SYMBOL_STR(class_destroy) },
|
||||
{ 0x13f3e695, __VMLINUX_SYMBOL_STR(gpiod_get_raw_value) },
|
||||
{ 0x8abc5994, __VMLINUX_SYMBOL_STR(__class_create) },
|
||||
};
|
||||
|
||||
static const char __module_depends[]
|
||||
__used
|
||||
__attribute__((section(".modinfo"))) =
|
||||
"depends=";
|
||||
|
||||
|
||||
MODULE_INFO(srcversion, "33E662A1554AB3644F6D6B6");
|
||||
1
lkm/modules.order
Normal file
1
lkm/modules.order
Normal file
@@ -0,0 +1 @@
|
||||
kernel//home/pi/io-state/lkm/h1502display.ko
|
||||
338
lkm/st7565.c
Normal file
338
lkm/st7565.c
Normal file
@@ -0,0 +1,338 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/mutex.h>
|
||||
//#include <linux/backlight.h>
|
||||
#include "st7565.h"
|
||||
#include "global.h"
|
||||
#include "font.h"
|
||||
|
||||
|
||||
#ifdef TEST
|
||||
//raspberry spi bus
|
||||
#define BUS_NUM 1
|
||||
#define CS_NUM 0
|
||||
#define COMMAND_PIN 5
|
||||
#define RESET_PIN 6
|
||||
#else
|
||||
//h1502 spi bus
|
||||
#define BUS_NUM 32766
|
||||
#define CS_NUM 0
|
||||
#define COMMAND_PIN 70
|
||||
#define RESET_PIN 69
|
||||
#endif
|
||||
|
||||
/* Display Commands */
|
||||
#define DISPLAY_CLEAR 0x1 /* Clear the display */
|
||||
#define DISPLAY_HOME 0x2 /* Set cursor at home position */
|
||||
|
||||
#define INSTRUCTION 0
|
||||
#define DATA 1
|
||||
|
||||
|
||||
struct h1502display_dev {
|
||||
unsigned int tx_data;
|
||||
int command_state;
|
||||
struct spi_device *spi;
|
||||
};
|
||||
|
||||
static struct h1502display_dev *h1502_device;
|
||||
//static struct spi_device *spi_device;
|
||||
|
||||
|
||||
// send data to st7565 lcd by spi
|
||||
static int st7565_transfer_data(unsigned int tx_data, int command_state, struct h1502display_dev *dev){
|
||||
int ret;
|
||||
// struct spi_transfer xfer = {
|
||||
// .tx_buf = &tx_data,
|
||||
// .len = 1,
|
||||
//};
|
||||
struct spi_message msg;
|
||||
struct spi_transfer t;
|
||||
|
||||
memset(&t, 0, sizeof(struct spi_transfer));
|
||||
t.tx_buf = &tx_data;
|
||||
t.len = 1;
|
||||
|
||||
gpio_set_value(COMMAND_PIN, command_state);
|
||||
|
||||
spi_message_init(&msg);
|
||||
spi_message_add_tail(&t, &msg);
|
||||
|
||||
//ret = spi_sync(spi_device, &msg);
|
||||
ret = spi_sync(dev.spi, &msg);
|
||||
if(ret != 0){
|
||||
printk(KERN_ERR "ST7565: SPI writing fail");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//clean up spi device
|
||||
void st7565_spi_unreg(void){
|
||||
spi_unregister_device(spi_device);
|
||||
}
|
||||
|
||||
|
||||
//setup the spi device
|
||||
static int st7565_spi_init(void){
|
||||
struct spi_master *master;
|
||||
struct spi_board_info spi_device_infos = {
|
||||
.modalias = "h1502display",
|
||||
.max_speed_hz = 20000000, //20Mhz
|
||||
.bus_num = BUS_NUM,
|
||||
.chip_select = CS_NUM,
|
||||
.mode = SPI_MODE_0,
|
||||
};
|
||||
|
||||
master = spi_busnum_to_master(spi_device_infos.bus_num);
|
||||
if(!master){
|
||||
printk(KERN_ERR "ST7565: SPI Master not found\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
spi_device = spi_new_device(master, &spi_device_infos);
|
||||
if(!spi_device){
|
||||
printk(KERN_ERR "ST7565: SPI Failed to create slave\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if(spi_setup(spi_device) != 0){
|
||||
printk(KERN_ERR "ST7565: SPI Failed to setup slave.\n");
|
||||
spi_unregister_device(spi_device);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//int st7565_set_page(unsigned int page, unsigned int column){
|
||||
static int st7565_set_page(unsigned int page, unsigned int column){
|
||||
unsigned int lsb;
|
||||
unsigned int msb;
|
||||
|
||||
lsb = column & 0x0f;
|
||||
msb = column & 0xf0;
|
||||
msb = msb >> 4;
|
||||
msb = msb | 0x10;
|
||||
|
||||
page = page | 0xb0;
|
||||
|
||||
if(st7565_transfer_data(page, INSTRUCTION) != 0){
|
||||
goto error;
|
||||
}
|
||||
if(st7565_transfer_data(msb, INSTRUCTION) != 0){
|
||||
goto error;
|
||||
}
|
||||
if(st7565_transfer_data(lsb, INSTRUCTION) != 0){
|
||||
goto error;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
printk(KERN_ERR "ST7565: Failed to set page/column.\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
||||
//gpio icons to st7565 LCD
|
||||
static void st7565_gpio_icon(unsigned int page, unsigned int yPos, unsigned int c){
|
||||
unsigned int i;
|
||||
st7565_set_page(page, yPos);
|
||||
for(i = 0; i < 8; i++){
|
||||
st7565_transfer_data(gpio_icon_large[i + (c * 8)], DATA);
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int gpio_icon_offset[] = {
|
||||
66, 58, 50, 42, 34, 26, 18, 10
|
||||
};
|
||||
|
||||
//unsigned int counter;
|
||||
void st7565_draw_gpio(char io, unsigned int bits){
|
||||
int i;
|
||||
|
||||
for(i = 0; i < 8; i++){
|
||||
if(io == INPUT){
|
||||
st7565_gpio_icon(0, gpio_icon_offset[i], bits >> i & 0x1);
|
||||
}else if(io == OUTPUT){
|
||||
st7565_gpio_icon(3, gpio_icon_offset[i], bits >> i & 0x1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//one place on the display
|
||||
void st7565_write_val(unsigned int page, unsigned int yPos, unsigned int invert, unsigned char val){
|
||||
if(yPos > DISPLAY_WIDTH){
|
||||
return;
|
||||
}
|
||||
|
||||
st7565_set_page(page, yPos);
|
||||
if(invert){
|
||||
st7565_transfer_data(~val, DATA);
|
||||
}else{
|
||||
st7565_transfer_data(val, DATA);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char st7565_get_bitmap(unsigned char c, unsigned int pos){
|
||||
if(pos >= 5) //larger then font
|
||||
return 0x00;
|
||||
if(c < 32 || c > 128) //not a writable char
|
||||
return 0x00;
|
||||
|
||||
c -= 32;
|
||||
return font5x7[pos + (c * 5)];
|
||||
}
|
||||
|
||||
|
||||
//Char to st7565 LCD
|
||||
static void st7565_write_char(unsigned int page, unsigned int yPos, unsigned int invert, unsigned char c){
|
||||
unsigned int i;
|
||||
if(yPos > DISPLAY_WIDTH){
|
||||
return;
|
||||
}
|
||||
c -= 32; // adjust for the fact that our table of characters is not really ASCII
|
||||
st7565_set_page(page, yPos);
|
||||
|
||||
for(i = 0; i < 5; i++){
|
||||
if(invert){
|
||||
st7565_transfer_data(~font5x7[i + (c * 5)], DATA);
|
||||
if(i == 4){
|
||||
st7565_transfer_data(0xFF, DATA); //empty line after char
|
||||
}
|
||||
}else{
|
||||
st7565_transfer_data(font5x7[i + (c * 5)], DATA);
|
||||
if(i == 4){
|
||||
st7565_transfer_data(0x00, DATA); //empty line after char
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//string to st7565 LCD pad with spaces
|
||||
void st7565_write_string(unsigned int page, unsigned int yPos, unsigned int invert, char *str){
|
||||
unsigned int i;
|
||||
int j = 0;
|
||||
|
||||
for(i=yPos; i <= DISPLAY_WIDTH; i += FONT_WIDTH){
|
||||
if(str[j] < 32 || str[j] > 128){
|
||||
st7565_write_char(page, i, invert, ' ');
|
||||
j--;
|
||||
}else{
|
||||
st7565_write_char(page, i, invert, str[j]);
|
||||
}
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
int st7565_clear(void){
|
||||
unsigned int i, j;
|
||||
for(i = 0; i < 4; i++){
|
||||
if(st7565_set_page(i, 0) != 0){
|
||||
goto error;
|
||||
}
|
||||
for(j = 0; j < 129; j++){
|
||||
if(st7565_transfer_data(0x0, DATA) != 0){
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
error:
|
||||
printk(KERN_ERR "ST7565: Failed to clear display.\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
static void st7565_backlight(int state){
|
||||
//struct backlight_device *bd;
|
||||
//struct device_node *np;
|
||||
//np =
|
||||
//bd = backlight_device_get_by_type(BACKLIGHT_RAW);
|
||||
//backlight_device_set_brightness(bd, 5);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int st7565_init(void){
|
||||
int ret;
|
||||
|
||||
//st7565_backlight(1);
|
||||
|
||||
//init gpio pins
|
||||
gpio_request(RESET_PIN, "");
|
||||
gpio_request(COMMAND_PIN, "");
|
||||
gpio_direction_output(RESET_PIN, 1);
|
||||
gpio_direction_output(COMMAND_PIN, 1);
|
||||
|
||||
//hardware reset display
|
||||
gpio_set_value(RESET_PIN, 0);
|
||||
udelay(10);
|
||||
gpio_set_value(RESET_PIN, 1);
|
||||
|
||||
ret = st7565_spi_init();
|
||||
if(ret != 0){
|
||||
return ret;
|
||||
}
|
||||
|
||||
if(st7565_transfer_data(0xE2, INSTRUCTION) != 0) //Internal reset
|
||||
goto error;
|
||||
if(st7565_transfer_data(0xA2, INSTRUCTION) != 0) //Sets the LCD drive voltage bias ratio
|
||||
goto error;
|
||||
//A2: 1/33 duty, 1/6 bias
|
||||
//A3: 1/33 duty, 1/5 bias
|
||||
if(st7565_transfer_data(0xA0, INSTRUCTION) != 0) //Sets the display RAM address SEG output correspondence
|
||||
goto error;
|
||||
//A0: normal
|
||||
//A1: reverse
|
||||
if(st7565_transfer_data(0xC8, INSTRUCTION) != 0) //#Select COM output scan direction
|
||||
goto error;
|
||||
//C0~C7: normal direction
|
||||
//C8~CF: reverse direction
|
||||
if(st7565_transfer_data(0x40, INSTRUCTION) != 0) //#Display start line set
|
||||
goto error;
|
||||
//40~7F Display start address
|
||||
if(st7565_transfer_data(0x2F, INSTRUCTION) != 0) //#select internal power supply operating mode
|
||||
goto error;
|
||||
//28~2F: Operating mode
|
||||
if(st7565_transfer_data(0x20, INSTRUCTION) != 0) //#V5 voltage regulator internal resistor ratio set(contrast)
|
||||
goto error;
|
||||
//20~27 small~large
|
||||
if(st7565_transfer_data(0xA6, INSTRUCTION) != 0) //#Sets the LCD display normal/reverse
|
||||
goto error;
|
||||
//A6: normal
|
||||
//A7: reverse
|
||||
if(st7565_transfer_data(0xAF, INSTRUCTION) != 0) //#Display ON/OFF
|
||||
goto error;
|
||||
//AF: ON
|
||||
//AE: OFF
|
||||
if(st7565_transfer_data(0x81, INSTRUCTION) != 0) //#Electronic volume mode set
|
||||
goto error;
|
||||
//81: Set the V5 output voltage
|
||||
if(st7565_transfer_data(0x33, INSTRUCTION) != 0) //#Electronic volume register set
|
||||
goto error;
|
||||
//00~3F: electronic volume register
|
||||
|
||||
if(st7565_clear() != 0)
|
||||
goto error;
|
||||
|
||||
st7565_write_string(0, 0, 0, "I:");
|
||||
st7565_draw_gpio(INPUT, 0x00);
|
||||
|
||||
st7565_write_string(3, 0, 0, "O:");
|
||||
st7565_draw_gpio(OUTPUT, 0x00);
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
printk(KERN_ERR "ST7565: Failed to init st7565.\n");
|
||||
return -EIO;
|
||||
}
|
||||
19
lkm/st7565.h
Normal file
19
lkm/st7565.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#ifndef ST7565_H
|
||||
#define ST7565_H
|
||||
|
||||
void st7565_spi_unreg(void);
|
||||
|
||||
void st7565_draw_gpio(char io, unsigned int bits);
|
||||
|
||||
char st7565_get_bitmap(unsigned char c, unsigned int pos);
|
||||
|
||||
void st7565_write_val(unsigned int page, unsigned int yPos, unsigned int invert, unsigned char val);
|
||||
|
||||
void st7565_write_string(unsigned int page, unsigned int yPos, unsigned int invert, char *str);
|
||||
|
||||
int st7565_clear(void);
|
||||
|
||||
int st7565_init(void);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user