linux driver simple sample
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/wait.h>
#include <linux/ioport.h>
#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/proc_fs.h>
#include <linux/irq.h>
#include <linux/io.h>
#include <linux/delay.h>
#include "dev_gpio.h"
#if 0
static int major = GPIO_MAJOR_DEF;
static struct file_operations gpio_fops =
{
// .open = gpio_open,
// .release = gpio_release,
// .poll = gpio_poll,
// .ioctl = gpio_ioctl,
};
#endif
static __init int gpio_init( void )
{
printk("\nRegister %s Ok\n\n", GPIO_DEV_NAME );
/*
major &= 0xff;
if( !register_chrdev( major, GPIO_DEV_NAME, &gpio_fops ) ){
printk("\nRgister device %s Ok (major=%d)\n", GPIO_DEV_NAME, major );
} else {
printk("\nUnable to get major %d for %s \n", major, GPIO_DEV_NAME );
return -EBUSY;
}
*/
return 0;
}
static __exit void gpio_free( void )
{
//unregister_chrdev( major, GPIO_DEV_NAME );
printk("\nUnregister %s Ok\n\n", GPIO_DEV_NAME );
}
module_init(gpio_init);
module_exit(gpio_free);
MODULE_AUTHOR("dhkim1027");
MODULE_LICENSE("GPL");
#ifndef _DEV_GPIO_H_
#define _DEV_GPIO_H_
#define GPIO_MAJOR_DEF 203
#define GPIO_DEV_NAME "GPIO Ver 1.0"
#endif
# Define variables to be used within the build
obj-m += dev_gpio.o
#CROSS_COMPILE=/home/dhkim/project/IF-S200N/face/LINUX/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
CROSS_COMPILE=/home/dhkim/project/IF-S200N/face/LINUX/android/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
KERNEL_DIR ?= /home/dhkim/project/IF-S200N/face/LINUX/android/out/target/product/if_s200n/obj/KERNEL_OBJ
MODULE_SIGN_FILE = /home/dhkim/project/IF-S200N/face/LINUX/android/kernel/msm-3.18/scripts/sign-file
MODSECKEY = /home/dhkim/project/IF-S200N/face/LINUX/android/out/target/product/if_s200n/obj/kernel/msm-3.18/signing_key.priv
MODPUBKEY = /home/dhkim/project/IF-S200N/face/LINUX/android/out/target/product/if_s200n/obj/kernel/msm-3.18/signing_key.x509
#CROSS_COMPILE=/home/dhkim/project/msm8909w/trunk/LINUX/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
#KERNEL_DIR ?= /home/dhkim/project/msm8909w/trunk/LINUX/android/out/target/product/if_w520demo/obj/KERNEL_OBJ
default:
make -C $(KERNEL_DIR) M=$(PWD) ARCH=arm64 CROSS_COMPILE=$(CROSS_COMPILE) modules
#perl $(MODULE_SIGN_FILE) sha512 $(MODSECKEY) $(MODPUBKEY) dev_gpio.ko
# define to clean the directory
clean:
rm -f *.ko *.o *.mod.* modules.*