I am writing a kernel module in which Procfs is created. In write function of procfs I write to a reg using __raw_writel() and then I read back using __raw_readl() but I am getting 0. My device base address is 0xaca10000.
Code:
void* virtaddr;
struct proc_dir_entry *proc_file_entry;
ssize_t write_proc( struct file *filp, const char __user *buff,
unsigned long len, void *data )
{
while(__raw_readl(virtaddr) ! = 8601)
{
__raw_writel(8601,virtaddr)
printf("%d\n",__raw_readl(virtaddr));
}
}
static const struct file_operations proc_file_fops = {
.owner = THIS_MODULE,
.write = write_callback,
.read = read_callback,
};
int __init init_module(void){
virtptr = ioremap_nocache(0xaca10000,4096);
if(!virtptr)
return -ENOMEM;
proc_file_entry = proc_create("proc_file_name", 0, NULL, &proc_file_fops);
if(proc_file_entry == NULL)
return -ENOMEM;
return 0;
}