diff --git a/driver/cache/Makefile b/driver/cache/Makefile
deleted file mode 100644
index 01ade28..0000000
--- a/driver/cache/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-export ARCH=arm64
-export CROSS_COMPILE=aarch64-linux-gnu-
-#KERNELDIR = /public/liweihua/workspace/linux-5.15.40
-KERNELDIR = /public/liweihua/workspace/linux-5.10.165
-OBJ = SM_DDR
-
-PWD = $(shell pwd)
-# Kernel modules
-ifeq ($(OBJ),SM_DDR)
- obj-m=ucp4008cache.o
- #ucp4008cache-objs=osp_sm_ddr.o
- #ucp4008cache-objs = cache.o osp_sm_ddr.o
- ucp4008cache-y:=osp_sm_ddr.o cache.o
-endif
-
-# Specify flags for the module compilation.
-ccflags-y = -g -O0
-#INCLUDE += -l./../../common/
-build: kernel_modules
-kernel_modules:
- make -C $(KERNELDIR) M=$(PWD) modules
-clean:
- make -C $(KERNELDIR) M=$(PWD) clean
-
-
diff --git a/driver/cache/cache.S b/driver/cache/cache.S
deleted file mode 100644
index 833a460..0000000
--- a/driver/cache/cache.S
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Cache maintenance
- *
- * Copyright (C) 2001 Deep Blue Solutions Ltd.
- * Copyright (C) 2012 ARM Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#include
-#include
-#include
-//#include
-#include
-#include
-
-/*
- * dcache_line_size - get the safe D-cache line size across all CPUs
- */
- .macro mydcache_line_size, reg, tmp
- //read_ctr \tmp
- mrs \tmp, ctr_el0
- ubfm \tmp, \tmp, #16, #19 // cache line size encoding
- mov \reg, #4 // bytes per word
- lsl \reg, \reg, \tmp // actual cache line size
- .endm
-
-/*
- * __inval_dcache_area(kaddr, size)
- *
- * Ensure that any D-cache lines for the interval [kaddr, kaddr+size)
- * are invalidated. Any partial lines at the ends of the interval are
- * also cleaned to PoC to prevent data loss.
- *
- * - kaddr - kernel address
- * - size - size in question
- */
-SYM_FUNC_START(__myinval_dcache_area)
- /* FALLTHROUGH */
-/*
- * __dma_inv_area(start, size)
- * - start - virtual start address of region
- * - size - size in question
- */
-__mydma_inv_area:
- add x1, x1, x0
- mydcache_line_size x2, x3
- sub x3, x2, #1
- tst x1, x3 // end cache line aligned?
- bic x1, x1, x3
- b.eq 1f
- dc civac, x1 // clean & invalidate D / U line
-1: tst x0, x3 // start cache line aligned?
- bic x0, x0, x3
- b.eq 2f
- dc civac, x0 // clean & invalidate D / U line
- b 3f
-2: dc ivac, x0 // invalidate D / U line
-3: add x0, x0, x2
- cmp x0, x1
- b.lo 2b
- dsb sy
- ret
-//ENDPIPROC(__myinval_dcache_area)
-//SYM_FUNC_END(__mydma_inv_area)
-SYM_FUNC_END(__myinval_dcache_area)
-
-
diff --git a/driver/cache/osp_sm_ddr.c b/driver/cache/osp_sm_ddr.c
deleted file mode 100644
index e193a17..0000000
--- a/driver/cache/osp_sm_ddr.c
+++ /dev/null
@@ -1,532 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-/*函数原型*/
-static int __init ucp_sm_ddr_module_init(void);
-int ucp_sm_ddr_cache_open(struct inode *inode, struct file *filp);
-int ucp_sm_ddr_noncache_open(struct inode *inode, struct file *filp);
-
-int ucp_sm_ddr_cache_release(struct inode *inode, struct file *filp);
-int ucp_sm_ddr_noncache_release(struct inode *inode, struct file *filp);
-
-ssize_t ucp_sm_ddr_cache_read(struct file *filp, char __user *buf, size_t size_in, loff_t *ppos);
-ssize_t ucp_sm_ddr_noncache_read(struct file *filp, char __user *buf, size_t size_in, loff_t *ppos);
-
-ssize_t ucp_sm_ddr_cache_write(struct file *filp, char __user *buf, size_t size, loff_t *ppos);
-ssize_t ucp_sm_ddr_noncache_write(struct file *filp, char __user *buf, size_t size, loff_t *ppos);
-
-static long ucp_sm_ddr_cache_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
-static long ucp_sm_ddr_noncache_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
-
-static int ucp_sm_ddr_cache_mmap(struct file *filp, struct vm_area_struct *vma);
-static int ucp_sm_ddr_noncache_mmap(struct file *filp, struct vm_area_struct *vma);
-
-static ssize_t ucp_mem_show(struct device *dev,struct device_attribute *attr, char *buf);
-static void __exit ucp_sm_ddr_module_exit(void);
-
-extern void __myinval_dcache_area(unsigned long vir_cache_add, unsigned long len);
-
-
-
-static const struct vm_operations_struct osp_mmap_mem_ops = {
-#ifdef CONFIG_HAVE_IOREMAP_PROT
- .access = generic_access_phys
-#endif
-};
-
-
-
-/*申请设备名称*/
-#define DEVICE_NAME_SM_DDR_CACHE "ucp_sm_ddr_cache"
-#define DEVICE_NAME_SM_DDR_NONCACHE "ucp_sm_ddr_noncache"
-
-
-/*设备物理地址*/
-#if 1 //4008 add
-#define ECS_SM_BASE 0x07200000ul
-#define PET_SM_BASE 0x08700000ul
-#define SHARE_SM_BASE 0x09d00000ul
-#define DDR_BASE 0x10000000ul
-#define ARM_APE_MSG_BASE_PHY_ADDR 0x0A0000000UL
-#define ARM_STACK_BASE_PHY_ADDR 0x100000000UL //0x0B8000000UL
-
-
-
-
-
-/*size num*/
-#define S128KB 0x00020000ul // 128K
-#define S8MB 0x00800000ul // 8M
-#define S16GB 0x1F0000000ul //0x400000000ul // 16G
-#define LEN_OF_ARM_STACK 0x100000000UL
-#define LEN_OF_ARM_APE_MSG 0x008000000UL
-
-
-/*设备空间大小*/
-#define ECS_SM_SIZE 0x000060000UL
-#define ECS_SM_MAX 0x00725fffful
-
-#define PET_SM_SIZE 0x000060000UL
-#define PET_SM_MAX 0x00875fffful
-
-#define SHARE_SM_SIZE S8MB
-#define SHARE_SM_MAX 0x0a4ffffful
-
-
-#define DDR_SIZE S16GB
-#define DDR_MAX 0x1fffffffful
-
-
-#endif
-
-
-#if 0 //1002 add
-#define ECS_SM_BASE 0x02360000ul
-#define PET_SM_BASE 0x03860000ul
-
-#define SHARE_SM_BASE 0x04e60000ul
-#define DDR_BASE 0x10000000ul
-
-#define S128KB 0x00020000ul // 128K
-#define S8MB 0x00800000ul // 8M
-#define S16GB 0x400000000ul // 16G
-
-#define ECS_SM_SIZE S128KB
-#define ECS_SM_MAX 0x0237fffful
-
-#define PET_SM_SIZE S128KB
-#define PET_SM_MAX 0x0387fffful
-
-#define SHARE_SM_SIZE S8MB
-#define SHARE_SM_MAX 0x0565fffful
-
-#define DDR_SIZE S16GB
-
-#define DDR_MAX 0x40ffffffful
-
-#endif
-
-
-
-/*error num*/
-#define EINVAL 22 /* Invalid argument */
-
-
-/*全局变量声明初始化*/
-
-/*file operation structure*/
-static const struct file_operations ucp_sm_ddr_cache_fops =
-{
- .owner = THIS_MODULE,
- .open = ucp_sm_ddr_cache_open,
- .unlocked_ioctl = ucp_sm_ddr_cache_ioctl,
- .mmap = ucp_sm_ddr_cache_mmap,
- .release = ucp_sm_ddr_cache_release,
-};
-
-static const struct file_operations ucp_sm_ddr_noncache_fops =
-{
- .owner = THIS_MODULE,
- .open = ucp_sm_ddr_noncache_open,
- .unlocked_ioctl = ucp_sm_ddr_noncache_ioctl,
- .mmap = ucp_sm_ddr_noncache_mmap,
- .release = ucp_sm_ddr_noncache_release,
-};
-
-
-
-static struct miscdevice ucp_sm_ddr_cache_miscdev = {
- .minor = MISC_DYNAMIC_MINOR,
- .name = DEVICE_NAME_SM_DDR_CACHE,
- .fops = &ucp_sm_ddr_cache_fops,
-};
-
-static struct miscdevice ucp_sm_ddr_noncache_miscdev = {
- .minor = MISC_DYNAMIC_MINOR,
- .name = DEVICE_NAME_SM_DDR_NONCACHE,
- .fops = &ucp_sm_ddr_noncache_fops,
-};
-
-
-void __iomem * g_vir_ecs_sm_cache_add = NULL;
-void __iomem * g_vir_pet_sm_cache_add = NULL;
-void __iomem * g_vir_share_sm_cache_add = NULL;
-void __iomem * g_vir_ddr_cache_add = NULL;
-void __iomem * g_vir_msg_cache_add = NULL;
-void __iomem * g_vir_stack_cache_add = NULL;
-
-
-
-static DEVICE_ATTR(ucp_sm_ddr_cache, S_IRUGO, ucp_mem_show, NULL);
-static DEVICE_ATTR(ucp_sm_ddr_noncache, S_IRUGO, ucp_mem_show, NULL);
-
-/********************************************************************/
-/*********************sm0~sm5 & ddr driver init function********************/
-/********************************************************************/
-static int __init ucp_sm_ddr_module_init(void)
-{
- int iRet=0;
-
- /*注册 设备驱动*/
- iRet = misc_register(&ucp_sm_ddr_cache_miscdev);
- if(iRet)
- {
- goto sm_ddr_misc_err;
- }
- iRet = misc_register(&ucp_sm_ddr_noncache_miscdev);
- if(iRet)
- {
- goto sm_ddr_misc_err;
- }
-
- /*在/sys/class 目录下创建对应的属性文件*/
- iRet = device_create_file(ucp_sm_ddr_cache_miscdev.this_device, &dev_attr_ucp_sm_ddr_cache);
- if (iRet)
- {
- goto sm_ddr_cache_attr_err;
- printk(KERN_EMERG "ucp_sm_ddr_cache_module_init failed \r\n");
-
- }
-
- printk(KERN_EMERG "ucp_sm_ddr_cache_module_init ok cat /sys/devices/virtual/misc/ucp_sm_ddr_cache\r\n");
-
- iRet = device_create_file(ucp_sm_ddr_noncache_miscdev.this_device, &dev_attr_ucp_sm_ddr_noncache);
- if (iRet)
- {
- goto sm_ddr_noncache_attr_err;
- printk(KERN_EMERG "ucp_sm_ddr_noncache_module_init failed \r\n");
-
- }
-
- printk(KERN_EMERG "ucp_sm_ddr_noncache_module_init ok cat /sys/devices/virtual/misc/ucp_sm_ddr_noncache\r\n");
-
- g_vir_ecs_sm_cache_add = ioremap(ECS_SM_BASE, ECS_SM_SIZE);
-
- g_vir_pet_sm_cache_add = ioremap(PET_SM_BASE, PET_SM_SIZE);
-
- g_vir_share_sm_cache_add = ioremap(SHARE_SM_BASE, SHARE_SM_SIZE);
-
- g_vir_msg_cache_add = ioremap(ARM_APE_MSG_BASE_PHY_ADDR, LEN_OF_ARM_APE_MSG);
- g_vir_stack_cache_add = ioremap(ARM_STACK_BASE_PHY_ADDR, LEN_OF_ARM_STACK);
-
-
- printk(KERN_EMERG "globle g_vir_ecs_sm_cache_add = 0x%lx \n ",(uint64_t)g_vir_ecs_sm_cache_add);
-
- printk(KERN_EMERG "globle g_vir_pet_sm_cache_add = 0x%lx \n ",(uint64_t)g_vir_pet_sm_cache_add);
-
- printk(KERN_EMERG "globle g_vir_share_sm_cache_add = 0x%lx \n ",(uint64_t)g_vir_share_sm_cache_add);
-
- //printk(KERN_EMERG "globle g_vir_ddr_cache_add = 0x%lx \n ",g_vir_ddr_cache_add);
-
- printk(KERN_EMERG "globle g_vir_msg_cache_add = 0x%lx \n ",(uint64_t)g_vir_msg_cache_add);
-
- printk(KERN_EMERG "globle g_vir_stack_cache_add = 0x%lx \n ",(uint64_t)g_vir_stack_cache_add);
-
- return 0;
-
-sm_ddr_cache_attr_err:
- misc_deregister(&ucp_sm_ddr_cache_miscdev);
-sm_ddr_noncache_attr_err:
- misc_deregister(&ucp_sm_ddr_noncache_miscdev);
-sm_ddr_misc_err:
- return -EINVAL;
-}
-/********************************************************************/
-/********************************************************************/
-
-
-
-/********************************************************************/
-/*********************sm0~sm5 & ddr driver open function********************/
-/********************************************************************/
-int ucp_sm_ddr_cache_open(struct inode *inode, struct file *filp)
-{
- /* device structure pointer assgined to file private data pointer */
- printk("enter %s\n",__func__);
- return 0;
-}
-int ucp_sm_ddr_noncache_open(struct inode *inode, struct file *filp)
-{
- /* device structure pointer assgined to file private data pointer */
- printk("enter %s\n",__func__);
- return 0;
-}
-
-/********************************************************************/
-/********************************************************************/
-
-
-/********************************************************************/
-/*********************sm0~sm5 & ddr driver release function*******************/
-/********************************************************************/
-int ucp_sm_ddr_cache_release(struct inode *inode, struct file *filp)
-{
- return 0;
-}
-int ucp_sm_ddr_noncache_release(struct inode *inode, struct file *filp)
-{
- return 0;
-}
-
-/********************************************************************/
-/********************************************************************/
-
-
-
-/********************************************************************/
-/*********************sm0~sm5 & ddr driver read function*******************/
-/********************************************************************/
-ssize_t ucp_sm_ddr_cache_read(struct file *filp, char __user *buf, size_t size_in, loff_t *ppos)
-{
- return 0;
-}
-ssize_t ucp_sm_ddr_noncache_read(struct file *filp, char __user *buf, size_t size_in, loff_t *ppos)
-{
- return 0;
-}
-
-/********************************************************************/
-/********************************************************************/
-
-
-
-/********************************************************************/
-/*********************sm0~sm5 & ddr driver write function*******************/
-/********************************************************************/
-ssize_t ucp_sm_ddr_cache_write(struct file *filp, char __user *buf, size_t size, loff_t *ppos)
-{
- return 0;
-}
-ssize_t ucp_sm_ddr_noncache_write(struct file *filp, char __user *buf, size_t size, loff_t *ppos)
-{
- return 0;
-}
-
-/********************************************************************/
-/********************************************************************/
-
-
-
-/********************************************************************/
-/*********************sm0~sm5 & ddr driver ioctl function*******************/
-/********************************************************************/
-static long ucp_sm_ddr_cache_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-{
-
- void __iomem *vir_cache_add = NULL;
-
- unsigned long uiOffset= 0, addr = arg, len = cmd;
-
-
- //printk("enter %s\n\n",__func__);
-
- //printk("addr = %#lx len = %#lx\n\n",cmd,arg);
-
- if(addr >= ECS_SM_BASE && addr <= ECS_SM_MAX)
- {
-
- uiOffset = addr - ECS_SM_BASE;
-
- vir_cache_add = g_vir_ecs_sm_cache_add + uiOffset ;
-
- }
- else if(addr >= PET_SM_BASE && addr <= PET_SM_MAX)
- {
-
- uiOffset = addr - PET_SM_BASE;
-
- vir_cache_add = g_vir_pet_sm_cache_add + uiOffset ;
-
- }
- else if(addr >= SHARE_SM_BASE && addr <= SHARE_SM_MAX)
- {
-
- uiOffset = addr - SHARE_SM_BASE;
-
- vir_cache_add = g_vir_share_sm_cache_add + uiOffset ;
-
- }
- else if(addr >= ARM_APE_MSG_BASE_PHY_ADDR && addr < ARM_APE_MSG_BASE_PHY_ADDR + LEN_OF_ARM_APE_MSG)
- {
-
- uiOffset = addr - ARM_APE_MSG_BASE_PHY_ADDR;
-
- vir_cache_add = g_vir_msg_cache_add + uiOffset ;
- }
- else if(addr >= ARM_STACK_BASE_PHY_ADDR && addr < ARM_STACK_BASE_PHY_ADDR + LEN_OF_ARM_STACK)
- {
-
- uiOffset = addr - ARM_STACK_BASE_PHY_ADDR;
-
- vir_cache_add = g_vir_stack_cache_add + uiOffset ;
- }
- else
- {
-
- printk("ucp_sm_ddr_cache_ioctl phy add out of range \n ");
-
- return -1;
- }
-
- //__mydma_inv_area(vir_cache_add, arg);
- __myinval_dcache_area((unsigned long)vir_cache_add, len);
-
-
- return 0;
-}
-
-static long ucp_sm_ddr_noncache_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-{
- return 0;
-}
-
-/********************************************************************/
-/********************************************************************/
-
-
-/********************************************************************/
-/*********************sm0~sm5 & ddr driver mmap function*******************/
-/********************************************************************/
-static int ucp_sm_ddr_cache_mmap(struct file *filp, struct vm_area_struct *vma)
-{
-
- unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
- unsigned long vmsize = vma->vm_end - vma->vm_start;
- unsigned long psize = PAGE_SIZE - offset;
- pgprot_t prot = vma->vm_page_prot;
-
- /* 设置IO标志 */
-
- /*if(vmsize > psize) {
-
- return -ENXIO;
- }*/
- printk("enter %s,phyaddr = %#lx,vm_start = %#lx\n",__func__,offset,vma->vm_start);
- //printk(KERN_EMERG "titan : cached mode is cache \n");
- //printk(KERN_EMERG "titan : vma->vm_pgoff = 0x%x \n",offset);
-
- vma->vm_ops = &osp_mmap_mem_ops;
-
- if(remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, vmsize, prot) != 0) {
-
- return -EAGAIN;
- }
-
- //printk(KERN_EMERG "titan : vma->vm_start = 0x%x \n",vma->vm_start);
-
- return 0;
-
-
-}
-
-static int ucp_sm_ddr_noncache_mmap(struct file *filp, struct vm_area_struct *vma)
-{
-
- unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
- unsigned long vmsize = vma->vm_end - vma->vm_start;
- unsigned long psize = PAGE_SIZE - offset;
- pgprot_t prot = vma->vm_page_prot;
-
- /* 设置IO标志 */
-
-// vir_sm_noncache_add = ioremap_nocache(SM_BASE, SM_SIZE);
-
-// vir_ddr_noncache_add = ioremap_nocache(DDR_BASE, DDR_SIZE);
-
-
- /*if(vmsize > psize) {
-
- return -ENXIO;
- } */
- printk("enter %s,phyaddr = %#lx,vm_start = %#lx\n",__func__,offset,vma->vm_start);
-
- //printk(KERN_EMERG "titan : vma->vm_pgoff = 0x%x \n",offset);
-
- prot = pgprot_writecombine(prot);
-
- vma->vm_ops = &osp_mmap_mem_ops;
-
- //printk(KERN_EMERG "titan : cached mode is non cache \n");
-
- if(remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, vmsize, prot) != 0) {
-
- return -EAGAIN;
- }
-
- return 0;
-}
-
-
-/********************************************************************/
-/********************************************************************/
-static ssize_t ucp_mem_show(struct device *dev,struct device_attribute *attr, char *buf)
-{
- return 0;
-}
-
-/********************************************************************/
-/*********************sm0~sm5 & ddr driver exit function*******************/
-/********************************************************************/
-/* module unload function*/
-static void __exit ucp_sm_ddr_module_exit(void)
-{
-
- iounmap(g_vir_ecs_sm_cache_add);
- iounmap(g_vir_pet_sm_cache_add);
- iounmap(g_vir_share_sm_cache_add);
- iounmap(g_vir_ddr_cache_add);
-
-
- device_remove_file(ucp_sm_ddr_cache_miscdev.this_device, &dev_attr_ucp_sm_ddr_cache);
- device_remove_file(ucp_sm_ddr_noncache_miscdev.this_device, &dev_attr_ucp_sm_ddr_noncache);
-
-
- misc_deregister(&ucp_sm_ddr_cache_miscdev);
- misc_deregister(&ucp_sm_ddr_noncache_miscdev);
-
-
-
-}
-/********************************************************************/
-/********************************************************************/
-
-
-/*
- * a simple char device driver: ExtInt without mutex
- *
- * Copyright (C) 2014 Barry Song (baohua@kernel.org)
- *
- * Licensed under GPLv2 or later.
- */
-
-
-MODULE_AUTHOR ("lte team");
-MODULE_DESCRIPTION ("ucp_sm_ddr driver module" );
-MODULE_LICENSE ("GPL");
-module_init(ucp_sm_ddr_module_init);
-module_exit(ucp_sm_ddr_module_exit);
-MODULE_INFO(intree, "Y");
-
-
-
-
-
-
-
-
diff --git a/driver/ioreg/Makefile b/driver/ioreg/Makefile
deleted file mode 100644
index 67219d6..0000000
--- a/driver/ioreg/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-export ARCH = arm64
-export CROSS_COMPILE = aarch64-linux-gnu-
-
-ARCH=arm64
-CROSS_COMPILE = aarch64-linux-gnu-
-
-KERNELDIR ?= /public/linboheng/workspace/ucp4008_nr_integrated_small_cell_new_kernel/kernel/linux-5.10.165
-PWD = $(shell pwd)
-obj-m := ioreg.o
-
-# Specify flags for the module compilation.
-ccflags-y = -g -O0
-
-build: kernel_modules
-kernel_modules:
- make -C $(KERNELDIR) M=$(PWD) modules
-clean:
- make -C $(KERNELDIR) M=$(PWD) clean
-
-
diff --git a/driver/ioreg/ioreg.c b/driver/ioreg/ioreg.c
deleted file mode 100644
index 4064b76..0000000
--- a/driver/ioreg/ioreg.c
+++ /dev/null
@@ -1,182 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-
-#define IOCTL_MMAPREG _IO('k',0x20)
-
-
-#define DEVICE_NAME "ioreg"
-
-void __iomem * addr;
-
-/*file open function*/
-int ioreg_open(struct inode *inode, struct file *filp)
-{
- /* device structure pointer assgined to file private data pointer */
- return 0;
-}
-
-/*file release function*/
-int ioreg_release(struct inode *inode, struct file *filp)
-{
- return 0;
-}
-
-/* ioctl device control function */
-static long ioreg_ioctl(struct file *filp, u32 cmd, unsigned long arg)
-{
-
- u32 val;
-
-
- switch ((int)cmd)
- {
-
- case IOCTL_MMAPREG:
- get_user(val, (unsigned long *)arg);
- addr = ioremap(val, 4096);
-
- break;
-
-
-
- default:
- return - EINVAL;
- }
-
- return 0;
-}
-
-ssize_t ioreg_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos)
-{
-
- if (copy_to_user(buf, (void *)(addr), size))
- {
-
- return -EFAULT;
- }
- iounmap(addr);
- return 0;
-}
-
-ssize_t ioreg_write(struct file *filp,const char __user *buf, size_t size, loff_t *ppos)
-{
- if(copy_from_user((void *)(addr), buf, size))
- {
-
- return -EFAULT;
- }
-
-
- iounmap(addr);
- return 0;
-}
-
-/*file operation structure*/
-static const struct file_operations ioreg_fops =
-{
- .owner = THIS_MODULE,
- .open = ioreg_open,
- .read = ioreg_read,
- .write = ioreg_write,
- .unlocked_ioctl = ioreg_ioctl,
- .release = ioreg_release,
-};
-
-
-
-
-static struct miscdevice ioreg_miscdev = {
- .minor = MISC_DYNAMIC_MINOR,
- .name = DEVICE_NAME,
- .fops = &ioreg_fops,
-};
-
-
-
-
-
-
-static int __init ioreg_module_init(void)
-{
-
- struct device_node *np;
- int ret;
-
-
- ret = misc_register(&ioreg_miscdev);
- if(ret)
- {
- return -1;
-
- }
-
-
- printk(KERN_EMERG "ioreg_module_init ok ");
-
- return 0;
-
-}
-
-/* module unload function*/
-static void __exit ioreg_module_exit(void)
-{
-
- misc_deregister(&ioreg_miscdev);
-
-}
-
-
-
-
-
-
-/*
- * a simple char device driver: ExtInt without mutex
- *
- * Copyright (C) 2014 Barry Song (baohua@kernel.org)
- *
- * Licensed under GPLv2 or later.
- */
-
-
-MODULE_AUTHOR ("lte team");
-MODULE_DESCRIPTION ("FRAME_SYNC driver module" );
-MODULE_LICENSE ("GPL");
-module_init(ioreg_module_init);
-module_exit(ioreg_module_exit);
-
-
-
-
-
-
-
-
-
diff --git a/driver/mem_dump/mem_dump.c b/driver/mem_dump/mem_dump.c
deleted file mode 100644
index 565f601..0000000
--- a/driver/mem_dump/mem_dump.c
+++ /dev/null
@@ -1,288 +0,0 @@
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include //remap_pfn_range
-
-/* 主设备号 */
-#define BSP_DEV_MAJOR 0
-/* 主设备名 */
-#define BSP_DEV_NAME "mem_dump"
-
-/* 模块加载函数 */
-static int osp_mem_init(void);
-/* 模块卸载函数 */
-static void osp_mem_exit(void);
-/* 打开设备函数 */
-int mem_bsp_open(struct inode *inode, struct file *filp);
-/* 释放设备函数 */
-int mem_bsp_release(struct inode *inode, struct file *filp);
-/* 读函数 */
-static ssize_t mem_bsp_read (struct file *filp, __user char *buf, size_t count, loff_t *f_pos);
-/* ioctl函数 */
-long mem_bsp_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
-/* mmap函数 */
-int mem_bsp_mmap(struct file *filp, struct vm_area_struct *vma);
-/* 写函数 */
-ssize_t mem_bsp_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos);
-
-
-
-/******************************* 局部宏定义 ***********************************/
-/* bsp 主设备号 */
-
-
-typedef struct mem_struct{
- int g_s32BspDevMajor ;
- unsigned int g_u32CacheCoherent;
- struct cdev g_struBspDev;
- struct class *cls;
- dev_t g_devno;
- struct device *parent;
- struct device *this_device;
-
-}mem_st;
-
-
-/******************************* 函数实现 *************************************/
-/*******************************************************************************
-* 函数名: mem_init
-* 描述: 模块加载时的入口函数
-* 相关文档:
-* 函数存储类型:int
-* 参数: 无
-* 返回值:
-* 0 成功
-* <0 失败
-* 说明:具体失败参考Linux错误信息头文件
-*******************************************************************************/
-
-static mem_st mem_dev ={
- .g_s32BspDevMajor = 0,
- .g_u32CacheCoherent = 0,
- .g_devno = 0,
-
-
-};
-
-static struct file_operations g_struBspOp = {
- .owner = THIS_MODULE,
- .read = mem_bsp_read,
- .write = mem_bsp_write,
- .open = mem_bsp_open,
- .release = mem_bsp_release,
- .mmap = mem_bsp_mmap,
- .unlocked_ioctl = mem_bsp_ioctl,
-};
-
-static int osp_mem_init(void)
-{
- /*函数调用结果*/
- int result;
- /*设备编号*/
- dev_t devno;
-
- printk("bsp_init.\n");
-
- /* 获取设备号 */
- if (0 == mem_dev.g_s32BspDevMajor)
- {
- /* 分配设备区域 */
- result = alloc_chrdev_region(&devno, 0, 1, BSP_DEV_NAME);
-
- /* 判断返回值 */
- if (result < 0)
- {
- printk(KERN_WARNING "bsp: alloc_chrdev_region error! errno = %d\n", result);
- return result;
- }
- mem_dev.g_devno = devno;
- /* 保存主设备号信息 */
- mem_dev.g_s32BspDevMajor = MAJOR(devno);
-
- /* 初始化dev变量 */
- cdev_init(&(mem_dev.g_struBspDev), &g_struBspOp);
- /* 设备dev相应变量值 */
- mem_dev.g_struBspDev.owner = THIS_MODULE;
- mem_dev.g_struBspDev.ops = &g_struBspOp;
- /* 向系统增加dev设备 */
- result = cdev_add(&mem_dev.g_struBspDev, devno, 1);
- if (result < 0)
- {
- printk ("cdev_add error!errno = %d", result);
- }
-
- // ret = device_create_file(ucp_smem_miscdev.this_device, &dev_attr_ucp_smem);
- mem_dev.cls = class_create(THIS_MODULE, "mem_dump");
- device_create(mem_dev.cls, NULL, devno, NULL, "mem_dump");
-
- printk("bsp module init success!\n");
- /* 返回成功 */
- return 0;
- }
- else
- {
- printk("bsp module already init!\n");
- /* 返回 */
- return -EBUSY;
- }
-}
-
-/*******************************************************************************
-* 函数名: ad9371_exit
-* 描述: 模块卸载函数
-* 相关文档:
-* 函数存储类型:void
-* 参数: 无
-* 返回值: 无
-* 说明:
-*******************************************************************************/
-static void osp_mem_exit(void)
-{
- /* 判断是否执行过模块加载 */
- if(mem_dev.g_s32BspDevMajor > 0)
- {
- /* 删除该字符设备 */
- device_destroy(mem_dev.cls, mem_dev.g_devno);
- class_destroy(mem_dev.cls);
- cdev_del(&(mem_dev.g_struBspDev));
- /* 释放已分配的空间 */
- unregister_chrdev_region(MKDEV(mem_dev.g_s32BspDevMajor, 0), 1);
- /* 清空主设备号 */
- mem_dev.g_s32BspDevMajor = 0;
- /* 调试信息输出 */
- printk("bsp module cleanup success!\n");
-
- }
- return;
-}
-
-/*******************************************************************************
-* 函数名: ad9731_bsp_open
-* 描述: 打开文件
-* 相关文档:
-* 函数存储类型:int
-* 参数:
-*
-* 参数名 类型 输入/输出 描述
-* -------- ---- --- -----------
-* inode struct inode* input 文件节点结构
-* filp struct file* input 文件结构
-* 返回值:
-* 0 成功
-* 说明:
-*******************************************************************************/
-int mem_bsp_open(struct inode *inode, struct file *filp)
-{
- return 0;
-}
-
-/*******************************************************************************
-* 函数名: ad9731_bsp_release
-* 描述: 关闭文件
-* 相关文档:
-* 函数存储类型:int
-* 参数:
-*
-* 参数名 类型 输入/输出 描述
-* -------- ---- --- -----------
-* inode struct inode* input 文件节点结构
-* filp struct file* input 文件结构
-* 返回值:
-* 0 成功
-* 说明:
-*******************************************************************************/
-int mem_bsp_release(struct inode *inode, struct file *filp)
-{
- /* 操作成功 */
- return 0;
-}
-
-/*******************************************************************************
-* 函数名: ad9731_bsp_read ()
-*
-* 描述: 读操作。
-* 相关文档: <描述此函数的相关协议名称、版本及在协议中的位置>
-* 函数存储类型:
-
-*******************************************************************************/
-static ssize_t mem_bsp_read (struct file *filp, char *buf, size_t count, loff_t *f_pos)
-{
- return 0;
-}
-
-/*******************************************************************************
-* 函数名: ad9731_bsp_write ()
-*
-* 描述: 写操作。
-* 相关文档: <描述此函数的相关协议名称、版本及在协议中的位置>
-* 函数存储类型:
-
-*******************************************************************************/
-ssize_t mem_bsp_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos)
-{
- return 0;
-}
-
-/*******************************************************************************
-* 函数名: ad9731_bsp_ioctl
-* 描述: IO控制
-* 相关文档:
-* 函数存储类型:int
-* 参数:
-
-*******************************************************************************/
-long mem_bsp_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-{
- return 0;
-}
-
-/*******************************************************************************
-* 函数名: mem_bsp_mmap
-* 描述: IO内存映射
-* 相关文档:
-* 函数存储类型:int
-* 参数:
-*
-*******************************************************************************/
-
-int mem_bsp_mmap(struct file *filp, struct vm_area_struct *vma)
-{
- /* 设置IO标志 */
-
- vma->vm_flags |= VM_IO;
-
-
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- printk("mmap start\n\r");
-
- /* 建立映射 */
- if (remap_pfn_range(vma,
- vma->vm_start,
- vma->vm_pgoff,
- vma->vm_end-vma->vm_start,
- vma->vm_page_prot) < 0)
- {
- return -EAGAIN;
- }
-
- return 0;
-}
-
-
-MODULE_AUTHOR ("mr yang");
-MODULE_DESCRIPTION ("mem_dump" );
-MODULE_LICENSE ("GPL");
-module_init(osp_mem_init);
-module_exit(osp_mem_exit);
-
-/******************************* 源文件结束 ***********************************/
-
diff --git a/driver/stc-dev/Makefile b/driver/stc-dev/Makefile
deleted file mode 100644
index 6cb9c08..0000000
--- a/driver/stc-dev/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-export ARCH=arm64
-export CROSS_COMPILE=aarch64-linux-gnu-
-#KERNELDIR = /public/liweihua/workspace/linux-5.0.21
-KERNELDIR = /public/liweihua/workspace/linux-5.10.165
-
-OBJ = ARM_STC
-
-PWD = $(shell pwd)
-# Kernel modules
-ifeq ($(OBJ),ARM_STC)
- obj-m = stc.o
- #mycache-objs = osp_sm_ddr.o cache.o
- stc-y := stc-dev.o
-endif
-
-# Specify flags for the module compilation.
-ccflags-y = -g -O2
-#INCLUDE += -l./../../common/
-build: kernel_modules
-kernel_modules:
- make -C $(KERNELDIR) M=$(PWD) modules
-clean:
- make -C $(KERNELDIR) M=$(PWD) clean
-
-
diff --git a/driver/stc-dev/stc-dev.c b/driver/stc-dev/stc-dev.c
deleted file mode 100644
index acbf6c4..0000000
--- a/driver/stc-dev/stc-dev.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Driver for stc module.
- *
- * Copyright (C) 2022, liweihua@smartlogictech.com
- * Copyright 2022
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include "stc_def.h"
-
-#define UCP4008_STC_MODULE_VERSION ("V1.0")
-#define UCP4008_STC_DEVICE_NAME "stc_irq"
-
-struct stc_driver g_stc_drv;
-
-static irqreturn_t stc_tod_1pps_handler(int irqid, void *param)
-{
- struct stc_driver *pirqstc = param;
-
- __raw_writel(0x1,pirqstc->io_base_addr + 4); //clear int
- pirqstc->irq_1pps_tod_cnt++;
- pirqstc->cond_1pps_tod = STC_TOD_1PPS;
- //printk("enter:%s,complete_cond = %d,\n",__func__,pirqstc->complete_cond);
- wake_up_interruptible(&pirqstc->pp1s_tod_queue);
-
- return IRQ_HANDLED;
-}
-
-static irqreturn_t stc_1pps_in_handler(int irqid, void *param)
-{
- struct stc_driver *pirqstc = param;
-
- __raw_writel(0x2,pirqstc->io_base_addr + 4); //clear int
- pirqstc->irq_1pps_in_cnt++;
- pirqstc->cond_1pps_in = STC_EX_1PPS_IN;
- //printk("enter:%s,complete_cond = %d,\n",__func__,pirqstc->complete_cond);
- wake_up_interruptible(&pirqstc->pp1s_in_queue);
-
- return IRQ_HANDLED;
-}
-
-static irqreturn_t stc_hscc_dump_handler(int irqid, void *param)
-{
- struct stc_driver *pirqstc = param;
-
- __raw_writel(0x4,pirqstc->io_base_addr + 4); //clear int
- pirqstc->irq_hscc_dump_cnt++;
- pirqstc->cond_hscc_dump = STC_HSCC_DUMP;
- //printk("enter:%s,complete_cond = %d,\n",__func__,pirqstc->complete_cond);
- wake_up_interruptible(&pirqstc->hscc_dump_queue);
-
- return IRQ_HANDLED;
-}
-
-static int stc_open(struct inode* inode, struct file* file)
-{
- printk(KERN_INFO "[%s]\n", __func__);
- return 0;
-}
-
-static ssize_t stc_read(struct file* file, char __user* buf, size_t size, loff_t* pos)
-{
- sint32 ret;
- uint32 cond_value;
-
- if(STC_TOD_1PPS == size)
- {
- ret = wait_event_interruptible(g_stc_drv.pp1s_tod_queue, g_stc_drv.cond_1pps_tod);
- cond_value = g_stc_drv.irq_1pps_tod_cnt;
- g_stc_drv.cond_1pps_tod = STC_INT_RESERVED;
- }
- else if(STC_EX_1PPS_IN == size)
- {
- ret = wait_event_interruptible(g_stc_drv.pp1s_in_queue, g_stc_drv.cond_1pps_in);
- cond_value = g_stc_drv.irq_1pps_in_cnt;
- g_stc_drv.cond_1pps_in = STC_INT_RESERVED;
- }
- else if(STC_HSCC_DUMP == size)
- {
- ret = wait_event_interruptible(g_stc_drv.hscc_dump_queue, g_stc_drv.cond_hscc_dump);
- cond_value = g_stc_drv.irq_hscc_dump_cnt;
- g_stc_drv.cond_hscc_dump = STC_INT_RESERVED;
- }
- else
- {
- return FAILURE;
- }
-
- if(ret != 0)
- {
- printk("exe:%s error!\n",__func__);
- return FAILURE;
- }
- ret = copy_to_user(buf, &cond_value, sizeof(uint32));
-
- return ret;
-}
-
-static ssize_t stc_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt)
-{
- return 0;
-}
-
-static sint64 stc_ioctl(struct file* file, unsigned int cmd, unsigned long arg)
-{
- sint32 s32Ret = SUCCESS;
- stc_int_type_e int_type;
- struct stc_driver *stc_drv = &g_stc_drv;
- uint32 irq_enable = __raw_readl(g_stc_drv.io_base_addr + 8);
-
- printk("enter:%s\n",__func__);
-
- switch(cmd)
- {
- case STC_INT_CFG:
- {
- s32Ret = copy_from_user(&int_type, (void __user*)arg, sizeof(stc_int_type_e));
- if(s32Ret != 0)
- {
- printk(KERN_INFO "[%s]Copy user data failed!\n", __func__);
- return FAILURE;
- }
-
- switch(int_type)
- {
- case STC_TOD_1PPS:
- {
- s32Ret = request_irq(stc_drv->irq_1pps_tod, stc_tod_1pps_handler, IRQF_SHARED, "tod_1pps", (void *)stc_drv);
- if(s32Ret != SUCCESS)
- {
- free_irq(stc_drv->irq_1pps_tod, stc_drv);
- printk(KERN_INFO "[%s]irq_ipps_tod request error!\n", __func__);
- return FAILURE;
- }
-
- irq_enable |= 1;
- __raw_writel(irq_enable,g_stc_drv.io_base_addr + 8); //
- break;
- }
- case STC_EX_1PPS_IN:
- {
- s32Ret = request_irq(stc_drv->irq_1pps_in, stc_1pps_in_handler, IRQF_SHARED, "1pps_in", (void *)stc_drv);
- if(s32Ret != SUCCESS)
- {
- free_irq(stc_drv->irq_1pps_in, stc_drv);
- printk(KERN_INFO "[%s]irq_ipps_in request error!\n", __func__);
- return FAILURE;
- }
- printk(KERN_INFO "[%s]enable irq_ipps_in int!\n", __func__);
- irq_enable |= 2;
- __raw_writel(irq_enable,g_stc_drv.io_base_addr + 8); //
- break;
- }
- case STC_HSCC_DUMP:
- {
- s32Ret = request_irq(stc_drv->irq_hscc_dump, stc_hscc_dump_handler, IRQF_SHARED,"hscc_dump" ,(void *)stc_drv);
- if(s32Ret != SUCCESS)
- {
- free_irq(stc_drv->irq_hscc_dump, stc_drv);
- printk(KERN_INFO "[%s]irq_hscc_dump request error!\n", __func__);
- return FAILURE;
- }
- irq_enable |= 4;
- __raw_writel(irq_enable,g_stc_drv.io_base_addr + 8); //
- break;
- }
- default:break;
- }
- break;
- }
- default:
- {
- s32Ret = FAILURE;
- break;
- }
- }
-
- return s32Ret;
-}
-
-static int stc_release(struct inode* inode, struct file* file)
-{
- printk(KERN_INFO "[%s]realease \n", __func__);
- return 0;
-}
-
-static struct file_operations stc_fops = {
- .owner = THIS_MODULE,
- .open = stc_open,
- .read = stc_read,
- .write = stc_write,
- .release = stc_release,
- .unlocked_ioctl = stc_ioctl,
-};
-
-static struct miscdevice g_stc_dev = {
- .minor = MISC_DYNAMIC_MINOR,
- .name = "stc_dev",
- .fops = &stc_fops,
-};
-
-#if 0
-static int stc_module_init(void)
-{
- sint32 iRet;
- uint32 u32idx;
-
- iRet = misc_register(&g_stc_dev);
- if(iRet != SUCCESS)
- {
- printk("misc_register error! iRet = %d\n", iRet);
- return -1;
- }
-
- memset(&g_stc_drv, 0, sizeof(struct stc_driver));
-
- g_stc_drv.irq_ipps_in = UCP4008_IRQ_1PPS_IN;
- g_stc_drv.irq_hscc_dump = UCP4008_IRQ_HSCC_DUMP;
- g_stc_drv.irq_ipps_tod = UCP4008_IRQ_1PPS_TOD;
- g_stc_drv.irq_ipps_in_cnt = 0;
- g_stc_drv.irq_hscc_dump_cnt = 0;
- g_stc_drv.irq_ipps_tod_cnt = 0;
-
- init_waitqueue_head(&g_stc_drv.complete_queue);
- g_stc_drv.complete_cond = STC_INT_RESERVED;
-
- g_stc_drv.io_base_addr = ioremap(STC_REG_BASE_ADDR,STC_REG_LEN);
-
- //init timer
- #if 0
- init_timer(&g_stc_drv.avcn_timer_list);
-
- setup_timer(&g_stc_drv.avcn_timer_list, avcn_debounce_timer, GPIO_INT_FUNC_RESET);
- #else
- //timer_setup(&g_stc_drv.avcn_timer_list, avcn_debounce_timer, 0);
- #endif
- printk(KERN_INFO "[%s] module version %s init...\n", __func__, UCP4008_STC_MODULE_VERSION);
- return 0;
-}
-
-static void stc_module_exit(void)
-{
- misc_deregister(&g_stc_dev);
-
- free_irq(g_stc_drv.irq_ipps_in , &g_stc_drv);
- free_irq(g_stc_drv.irq_ipps_tod , &g_stc_drv);
- free_irq(g_stc_drv.irq_hscc_dump , &g_stc_drv);
-
- printk(KERN_INFO "[%s] module version %s exit...\n", __func__, UCP4008_STC_MODULE_VERSION);
-}
-#endif
-
-static int smartlogic_stc_probe(struct platform_device *pdev)
-{
- struct resource *res_common;
- struct device *dev = &pdev->dev;
- int i, irq, iRet;
- int irq_no[3];
-
- printk("enter:%s\n",__func__);
-
- iRet = misc_register(&g_stc_dev);
- if(iRet != SUCCESS)
- {
- printk("misc_register error! iRet = %d\n", iRet);
- return -1;
- }
-
- for (i = 0; i < 3; ++i)
- {
- irq = platform_get_irq(pdev, i);
- if (irq < 0) {
- dev_err(dev, "failed to get irq index %d\n", i);
- return -ENODEV;
- }
- irq_no[i] = irq;
- }
-
- g_stc_drv.irq_1pps_tod = irq_no[0];
- g_stc_drv.irq_1pps_in = irq_no[1];
- g_stc_drv.irq_hscc_dump = irq_no[2];
-
- res_common = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res_common)
- {
- dev_err(&pdev->dev, "memory resource not found");
- return -EINVAL;
- }
-
- g_stc_drv.io_base_addr = devm_ioremap_resource(dev, res_common);
- if (IS_ERR(g_stc_drv.io_base_addr))
- {
- return PTR_ERR(g_stc_drv.io_base_addr);
- }
-
- init_waitqueue_head(&g_stc_drv.pp1s_tod_queue);
- init_waitqueue_head(&g_stc_drv.pp1s_in_queue);
- init_waitqueue_head(&g_stc_drv.hscc_dump_queue);
- g_stc_drv.cond_1pps_tod = STC_INT_RESERVED;
- g_stc_drv.cond_1pps_in = STC_INT_RESERVED;
- g_stc_drv.cond_hscc_dump = STC_INT_RESERVED;
- g_stc_drv.irq_1pps_tod_cnt = 0;
- g_stc_drv.irq_1pps_in_cnt = 0;
- g_stc_drv.irq_hscc_dump_cnt = 0;
-
- return 0;
-}
-
-static int smartlogic_stc_remove(struct platform_device *pdev)
-{
- misc_deregister(&g_stc_dev);
-
- free_irq(g_stc_drv.irq_1pps_in , &g_stc_drv);
- free_irq(g_stc_drv.irq_1pps_tod , &g_stc_drv);
- free_irq(g_stc_drv.irq_hscc_dump , &g_stc_drv);
-
- printk(KERN_INFO "[%s] module version %s exit...\n", __func__, UCP4008_STC_MODULE_VERSION);
-
- return 0;
-}
-
-static const struct of_device_id smartlogic_stc_match[] = {
- { .compatible = "smartlogic,stc" },
- {},
-};
-MODULE_DEVICE_TABLE(of, smartlogic_stc_match);
-
-static struct platform_driver smartlogic_stc_driver = {
- .driver = {
- .name = "smartlogic_stc",
- .of_match_table = smartlogic_stc_match,
- },
- .probe = smartlogic_stc_probe,
- .remove = smartlogic_stc_remove,
-};
-module_platform_driver(smartlogic_stc_driver);
-
-MODULE_AUTHOR("liweihua@smartlogictech.com");
-MODULE_DESCRIPTION ("Smartlogictech STC module driver!");
-MODULE_LICENSE ("GPL");
-
diff --git a/driver/stc-dev/stc_def.h b/driver/stc-dev/stc_def.h
deleted file mode 100644
index 35ffa9b..0000000
--- a/driver/stc-dev/stc_def.h
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef _STC_DEF_H_
-#define _STC_DEF_H_
-
-#include
-#include /*声明printk()这个内核态的函数*/
-#include /*文件系统有关的,结构体file_operations也在fs头文件定义*/
-#include /*init和exit相关宏*/
-#include
-#include
-#include /*linux中断定义*/
-#include
-#include /*包含与中断相关的大部分宏及结构体的定义,request_irq()等*/
-#include /*linux中的用户态内存交互函数,copy_from_user(),copy_to_user()等*/
-#include
-#include
-#include /*misc混合设备注册与注销*/
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-typedef char sint8;
-typedef unsigned char uint8;
-typedef int sint32;
-typedef unsigned int uint32;
-typedef long sint64;
-typedef unsigned long uint64;
-
-
-#define SUCCESS (0)
-#define FAILURE (-1)
-#define IRQ_EXCEPTION (0xFFFFFF)
-
-#define STC_MODULE_MAGIC 'g'
-#define STC_INT_CFG _IOWR(STC_MODULE_MAGIC, 0x01, uint32)
-
-#define STC_REG_BASE_ADDR (0x08568000ull) //STC鍩哄湴鍧
-#define STC_REG_LEN (0x08000)
-
-typedef enum
-{
- STC_INT_RESERVED = 0, /* Reserved*/ /* Reserved*/
- STC_TOD_1PPS, /* stc 1pps*/
- STC_EX_1PPS_IN, /* external 1pps */
- STC_HSCC_DUMP = 4 /* HSCC_DUMP */
-} stc_int_type_e;
-
-struct stc_driver{
- sint32 irq_1pps_tod;
- sint32 irq_1pps_in;
- sint32 irq_hscc_dump;
- uint32 irq_1pps_tod_cnt;
- uint32 irq_1pps_in_cnt;
- uint32 irq_hscc_dump_cnt;
- stc_int_type_e cond_1pps_tod;
- stc_int_type_e cond_1pps_in;
- stc_int_type_e cond_hscc_dump;
- wait_queue_head_t pp1s_tod_queue;
- wait_queue_head_t pp1s_in_queue;
- wait_queue_head_t hscc_dump_queue;
- void __iomem *io_base_addr;
-};
-
-#endif
diff --git a/driver/tsc/Makefile b/driver/tsc/Makefile
deleted file mode 100644
index c67d1ba..0000000
--- a/driver/tsc/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-PWD := $(shell pwd)
-
-#KERNELDIR := /public/liweihua/workspace/linux-5.0.21
-KERNELDIR := /public/liweihua/workspace/linux-5.10.165
-
-obj-m := tsc.o
-
-modules:
- $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
-
-modules_install:
- $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
-
-clean:
- rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.symvers *.order irq-test
-
-.PHONY: modules modules_install clean
-
diff --git a/driver/tsc/tsc.c b/driver/tsc/tsc.c
deleted file mode 100644
index 3926405..0000000
--- a/driver/tsc/tsc.c
+++ /dev/null
@@ -1,67 +0,0 @@
-#include
-#include
-#include
-
-#define ARMV8_PMCR_MASK 0x3f
-#define ARMV8_PMCR_E (1 << 0)
-#define ARMV8_PMCR_LC (1 << 6)
-
-static inline u32 armv8pmu_pmcr_read(void)
-{
- u64 val = 0;
- asm volatile("mrs %0, pmcr_el0" : "=r" (val));
- return (u32)val;
-}
-static inline void armv8pmu_pmcr_write(u32 val)
-{
- val &= ARMV8_PMCR_MASK;
- isb();
- asm volatile("msr pmcr_el0, %0" : : "r" ((u64)val));
-}
-
-static inline long long armv8_read_CNTPCT_EL0(void)
-{
- long long val;
- asm volatile("mrs %0, CNTVCT_EL0" : "=r" (val));
- return val;
-}
-
-static void
-enable_cpu_counters(void* data)
-{
- asm volatile("msr pmuserenr_el0, %0" : : "r"(0xf));
- armv8pmu_pmcr_write(ARMV8_PMCR_LC|ARMV8_PMCR_E);
- asm volatile("msr PMCNTENSET_EL0, %0" :: "r" ((u32)(1<<31)));
- armv8pmu_pmcr_write(armv8pmu_pmcr_read() | ARMV8_PMCR_E|ARMV8_PMCR_LC);
- printk("\nCPU:%d ", smp_processor_id());
-}
-
-static void
-disable_cpu_counters(void* data)
-{
- printk(KERN_INFO "\ndisabling user-mode PMU access on CPU #%d",
- smp_processor_id());
-
- armv8pmu_pmcr_write(armv8pmu_pmcr_read() |~ARMV8_PMCR_E);
- asm volatile("msr pmuserenr_el0, %0" : : "r"((u64)0));
-}
-
-static int __init init(void)
-{
- on_each_cpu(enable_cpu_counters, NULL, 1);
- printk(KERN_INFO "Enable Access PMU Initialized");
- return 0;
-}
-
-static void __exit fini(void)
-{
- on_each_cpu(disable_cpu_counters, NULL, 1);
- printk(KERN_INFO "Access PMU Disabled");
-}
-
-module_init(init);
-module_exit(fini);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("titan");
-
-
diff --git a/driver/ucp_2_revmem/Makefile b/driver/ucp_2_revmem/Makefile
deleted file mode 100644
index f37efb0..0000000
--- a/driver/ucp_2_revmem/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-
-KERN_DIR = /public/liweihua/workspace/linux-5.0.21
-
-all:
- make -C ${KERN_DIR} M=`pwd` modules
-
-clean:
- make -C ${KERN_DIR} M=`pwd` modules clean
- rm -rf modules.order
-
-obj-m += ucp_2_revmem.o
-
diff --git a/driver/ucp_2_revmem/build_env.sh b/driver/ucp_2_revmem/build_env.sh
deleted file mode 100644
index f27456d..0000000
--- a/driver/ucp_2_revmem/build_env.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-export ARCH=arm64
-export CROSS_COMPILE=/public/liweihua/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
-make
diff --git a/driver/ucp_2_revmem/ucp_2_revmem.c b/driver/ucp_2_revmem/ucp_2_revmem.c
deleted file mode 100644
index 42778a0..0000000
--- a/driver/ucp_2_revmem/ucp_2_revmem.c
+++ /dev/null
@@ -1,325 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-#include "ucp_2_revmem.h"
-
-/*鏆傛椂灏唘cp_mem鐨勪富璁惧鍙峰畾涔変负10 */
-
-typedef struct tag_OSP_CACHE_REV
-{
- unsigned int phy_addr;
- unsigned int len;
-}OSP_CACHE_REV;
-
-struct ucp_2_rev_device{
- struct device *dev;
- struct miscdevice *miscdev;
- void __iomem *vir_head;
- unsigned int phy_head;
-};
-
-struct ucp_2_rev_device *ucp_2_rev_dev;
-
-#define DEVICE_NAME "ucp_2_revmem"
-//#define DEVICE_NAME "ucp_2_mmap"
-
-
-#define IOCTL_CACHE_INVALID _IO('k',0x10)
-#define IOCTL_CACHE_FLUSH _IO('k',0x20)
-#define IOCTL_SET_CACHE _IO('k',0x30)
-#define IOCTL_SET_NOCACHE _IO('k',0x40)
-
-#define UP_ALIGNED(num, n) (((num) + (n) - 1) & (~((n) - 1)))
-
-#define REV_WITH_CACHE 2
-#define REV_WITH_NOCACHE 3
-
-int is_cached=0;
-
-extern void arch_sync_dma_for_device_p(struct device *dev, void *addr,
- size_t size, enum dma_data_direction dir);
-extern void arch_sync_dma_for_cpu_p(struct device *dev, void *addr,
- size_t size, enum dma_data_direction dir);
-
-/*file open function*/
-int ucp_2_revmem_open(struct inode *inode, struct file *filp)
-{
- /* device structure pointer assgined to file private data pointer */
- printk("enter %s !!!\n",__func__);
- return 0;
-}
-
-ssize_t ucp_2_revmem_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos)
-{
-
- return 0;
-}
-
-
-/*file release function*/
-int ucp_2_revmem_release(struct inode *inode, struct file *filp)
-{
- return 0;
-}
-
-/* ioctl device control function */
-static long ucp_2_revmem_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-{
- OSP_CACHE_REV operation;
- void __iomem *vir;
- struct ucp_2_rev_device *rev_dev = ucp_2_rev_dev;
- struct miscdevice *miscdev = rev_dev->miscdev;
-
-// printk("%s\n",miscdev->name);
-
- switch(cmd)
- {
- case IOCTL_SET_CACHE:
- is_cached = REV_WITH_CACHE;
-// dev_info(rev_dev->dev,"ioctl set with cache");
- break;
- case IOCTL_SET_NOCACHE:
- is_cached = REV_WITH_NOCACHE;
-// dev_info(rev_dev->dev,"ioctl set no cache");
- break;
- case IOCTL_CACHE_FLUSH:
- if(copy_from_user((void *)(&operation), (char *)arg, sizeof(OSP_CACHE_REV)))
- {
- dev_info(rev_dev->dev,"ioctl copy_from_user error");
- return - EINVAL;
- }
-
- if(operation.phy_addr<=0 || operation.len <=0)
- {
- dev_info(rev_dev->dev,"ioctl user arg error");
- return - EINVAL;
- }
-
- operation.len = UP_ALIGNED(operation.len,4);
-
-// vir = ioremap_cache(operation.phy_addr,operation.len);
- vir = rev_dev->vir_head + (operation.phy_addr - rev_dev->phy_head);
- if(vir == NULL)
- {
- dev_info(rev_dev->dev,"ioctl vir error");
- return - EINVAL;
- }
- arch_sync_dma_for_device_p(rev_dev->dev, vir, operation.len, DMA_TO_DEVICE);
- break;
-
- case IOCTL_CACHE_INVALID:
- if(copy_from_user((void *)(&operation), (char *)arg, sizeof(OSP_CACHE_REV)))
- {
- dev_info(rev_dev->dev,"ioctl copy_from_user error");
- return - EINVAL;
- }
-
- if(operation.phy_addr<=0 || operation.len <=0)
- {
- dev_info(rev_dev->dev,"ioctl user arg error");
- return - EINVAL;
- }
-
- operation.len = UP_ALIGNED(operation.len,4);
-
-// vir = ioremap_cache(operation.phy_addr,operation.len);
- vir = rev_dev->vir_head + (operation.phy_addr - rev_dev->phy_head);
- if(vir == NULL)
- {
- dev_info(rev_dev->dev,"ioctl vir error");
- return - EINVAL;
- }
- arch_sync_dma_for_cpu_p(rev_dev->dev, vir, operation.len, DMA_FROM_DEVICE);
- break;
-
-
- default:
- return - EINVAL;
- }
-// iounmap(vir);
- return 0;
-}
-
-
-static int ucp_2_revmem_mmap(struct file *filp, struct vm_area_struct *vma)
-{
- struct ucp_2_rev_device *rev_dev = ucp_2_rev_dev;
- struct miscdevice *miscdev = rev_dev->miscdev;
- uint64_t offset = vma->vm_pgoff << PAGE_SHIFT;
-
- printk("enter %s !!!\n",__func__);
-
- printk("ucp_revmem_mmap offset = %#llx,start = %#llx\n",offset,vma->vm_start);
-
-
- vma->vm_flags |= VM_IO | VM_LOCKED;
-
- if(offset < ARM_STACK_BASE_PHY_ADDR)
- {
- vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
- }
-#if 0
- if(is_cached == REV_WITH_NOCACHE)
- {
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- }
- else if(is_cached == REV_WITH_CACHE)
- {
-
- }
- else
- {
- dev_info(rev_dev->dev,"flag is_cached is error %d\n",is_cached);
- return -EAGAIN;
- }
-
-
- vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
-#endif
- if (remap_pfn_range(vma,
- vma->vm_start,
- vma->vm_pgoff,
- vma->vm_end-vma->vm_start,
- vma->vm_page_prot) < 0)
- {
- return -EAGAIN;
- }
-// dev_info(rev_dev->dev,"ucp_revmem_mmap:%d ok\n",is_cached);
- printk("leave %s !!!\n",__func__);
-
- is_cached = 0;
- return 0;
-}
-
-
-/*file operation structure*/
-static const struct file_operations ucp_2_revmem_fops =
-{
- .owner = THIS_MODULE,
- .open = ucp_2_revmem_open,
- .unlocked_ioctl = ucp_2_revmem_ioctl,
- .mmap = ucp_2_revmem_mmap,
- .release = ucp_2_revmem_release,
-};
-
-static ssize_t ucp_2_revmem_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- int len=0;
-
- len += sprintf(buf+len, "%s\r\n", "ucp_2_mem attribute OK!");
-
- return len;
-}
-
-static DEVICE_ATTR(ucp_2_revmem, S_IRUGO, ucp_2_revmem_show, NULL);
-
-static struct miscdevice ucp_2_revmem_miscdev = {
- .minor = MISC_DYNAMIC_MINOR,
- .name = DEVICE_NAME,
- .fops = &ucp_2_revmem_fops,
-};
-
-static int __init ucp_2_revmem_module_init(void)
-{
- int ret;
- struct miscdevice *misc_device;
- void __iomem * vir_addr;
- dma_addr_t phy_addr;
- int i;
-
- ucp_2_rev_dev = (struct ucp_2_rev_device *)kzalloc(sizeof(*ucp_2_rev_dev), GFP_KERNEL);
- if (!ucp_2_rev_dev)
- return -ENOMEM;
-
- misc_device = &ucp_2_revmem_miscdev;
- ret = misc_register(&ucp_2_revmem_miscdev);
- if(ret)
- {
- goto misc_err;
- }
-
- ret = device_create_file(ucp_2_revmem_miscdev.this_device, &dev_attr_ucp_2_revmem);
- if (ret)
- {
- goto attr_err;
- }
- ucp_2_rev_dev->dev = ucp_2_revmem_miscdev.this_device;
- ucp_2_rev_dev->miscdev = &ucp_2_revmem_miscdev;
- dev_set_drvdata(ucp_2_revmem_miscdev.this_device, ucp_2_rev_dev);
-
- ucp_2_rev_dev->phy_head = UCP_2_APE_REV_MEM_START;
- ucp_2_rev_dev->vir_head = ioremap_cache(UCP_2_APE_REV_MEM_START,UCP_2_APE_REM_MEM_LEN);
-
- dma_coerce_mask_and_coherent(ucp_2_rev_dev->dev, DMA_BIT_MASK(32));
-
-/*
- for(i = 0; i< 100; i++)
- { //GFP_ATOMIC,GFP_KERNEL
- vir_addr = dma_alloc_coherent(ucp_2_rev_dev->dev, 0x64000, (dma_addr_t *)&phy_addr, GFP_ATOMIC);
- if(vir_addr == NULL)
- {
- printk("revmem dma_alloc_coherent error:%d\n",i);
- }
- }
-*/
-
- dev_info(ucp_2_rev_dev->dev,"ucp_2_revem_module_init ok\n");
- return 0;
-misc_err:
- device_remove_file(ucp_2_revmem_miscdev.this_device, &dev_attr_ucp_2_revmem);
-attr_err:
- misc_deregister(&ucp_2_revmem_miscdev);
- return -1;
-
-}
-
-/* module unload function*/
-static void __exit ucp_2_revmem_module_exit(void)
-{
- device_remove_file(ucp_2_revmem_miscdev.this_device, &dev_attr_ucp_2_revmem);
- misc_deregister(&ucp_2_revmem_miscdev);
-}
-
-
-
-
-
-
-/*
- * a simple char device driver: ExtInt without mutex
- *
- * Copyright (C) 2014 Barry Song (baohua@kernel.org)
- *
- * Licensed under GPLv2 or later.
- */
-
-
-MODULE_AUTHOR ("lte team");
-MODULE_DESCRIPTION ("ucp_mem driver module" );
-MODULE_LICENSE ("GPL");
-module_init(ucp_2_revmem_module_init);
-module_exit(ucp_2_revmem_module_exit);
-
-
-
-
-
-
-
-
-
diff --git a/driver/ucp_2_revmem/ucp_2_revmem.h b/driver/ucp_2_revmem/ucp_2_revmem.h
deleted file mode 100644
index be36ef3..0000000
--- a/driver/ucp_2_revmem/ucp_2_revmem.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __HPP_REVMEM_H__
-#define __HPP_REVMEM_H__
-
-
-
-
-#define UCP_2_APE_REV_MEM_START 0x90000000
-#define UCP_2_APE_REV_MEM_BLOCK_SIZE 0x100000
-#define UCP_2_APE_REV_MEM_BLOCK_NUM 18
-/*#define HPP_APE_REM_MEM_LEN (HPP_APE_REV_MEM_BLOCK_NUM * HPP_APE_REV_MEM_BLOCK_SIZE)*/
-#define UCP_2_APE_REM_MEM_LEN 0x20000000
-
-#define SHARE_MEM_BASE_PHY_ADDR 0x009D00000UL
-#define LEN_OF_SHARE_MEM 0x000800000UL
-#define SHARE_MEM_END_PHY_ADDR (SHARE_MEM_BASE_PHY_ADDR + LEN_OF_SHARE_MEM)
-
-#define ARM_STACK_BASE_PHY_ADDR 0x0B8000000UL
-//
-
-
-
-
-
-#endif
\ No newline at end of file