android13/kernel-5.10/drivers/video/rockchip/vehicle/vehicle_dev.c

117 lines
2.3 KiB
C

// SPDX-License-Identifier: GPL-2.0
/*
* drivers/video/rockchip/video/vehicle_dev.c
*
* Copyright (C) 2022 Rockchip Electronics Co.Ltd
* Authors:
* Zhiqin Wei <wzq@rock-chips.com>
*
*
*/
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/fcntl.h>
#include <linux/mm.h>
#include <linux/miscdevice.h>
#include <linux/proc_fs.h>
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/string.h>
#include <linux/list.h>
#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/proc_fs.h>
#include <linux/poll.h>
#include <linux/bitops.h>
#include <linux/moduleparam.h>
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include "vehicle_main.h"
#include "vehicle_cfg.h"
static int vechile_open(struct inode *inode, struct file *file)
{
return 0;
}
static int vechile_close(struct inode *inode, struct file *file)
{
return 0;
}
static ssize_t vechile_write(struct file *file, const char __user *buf,
size_t size, loff_t *ppos)
{
int ret = 0;
char data[22] = "";
ret = copy_from_user(data, buf, 18);
if (ret)
return -1;
if (memcmp(data, "88", 2) == 0) {
vehicle_android_is_ready_notify();
VEHICLE_INFO("android already up, set vehicle in bottom\n");
} else {
vehicle_apk_state_change(data);
VEHICLE_INFO("apk_state_change, open dvr\n");
}
return size;
}
static ssize_t
vechile_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
{
return 1;
}
static const struct file_operations vechile_fops = {
.owner = THIS_MODULE,
/*.compat_ioctl = vechile_ioctl,*/
.open = vechile_open,
.release = vechile_close,
.write = vechile_write,
.read = vechile_read,
};
static struct miscdevice vechile_dev = {
.minor = MISC_DYNAMIC_MINOR,
.name = "vehicle",
.fops = &vechile_fops,
};
static int __init vechile_module_init(void)
{
int ret = 0;
/* register misc device*/
ret = misc_register(&vechile_dev);
if (ret) {
VEHICLE_DGERR("ERROR: could not register vechile dev\n");
return ret;
}
return 0;
}
void vechile_module_exit(void)
{
misc_deregister(&vechile_dev);
}
module_init(vechile_module_init);
MODULE_LICENSE("GPL");