2 * Copyright (C) 2015 Imagination Technologies
3 * Author: Paul Burton <paul.burton@mips.com>
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version.
11 #include <asm/bcache.h>
12 #include <asm/debug.h>
13 #include <linux/uaccess.h>
14 #include <linux/debugfs.h>
15 #include <linux/init.h>
17 static ssize_t
sc_prefetch_read(struct file
*file
, char __user
*user_buf
,
18 size_t count
, loff_t
*ppos
)
20 bool enabled
= bc_prefetch_is_enabled();
23 buf
[0] = enabled
? 'Y' : 'N';
27 return simple_read_from_buffer(user_buf
, count
, ppos
, buf
, 2);
30 static ssize_t
sc_prefetch_write(struct file
*file
,
31 const char __user
*user_buf
,
32 size_t count
, loff_t
*ppos
)
37 err
= kstrtobool_from_user(user_buf
, count
, &enabled
);
44 bc_prefetch_disable();
49 static const struct file_operations sc_prefetch_fops
= {
51 .llseek
= default_llseek
,
52 .read
= sc_prefetch_read
,
53 .write
= sc_prefetch_write
,
56 static int __init
sc_debugfs_init(void)
58 struct dentry
*dir
, *file
;
60 if (!mips_debugfs_dir
)
63 dir
= debugfs_create_dir("l2cache", mips_debugfs_dir
);
67 file
= debugfs_create_file("prefetch", S_IRUGO
| S_IWUSR
, dir
,
68 NULL
, &sc_prefetch_fops
);
74 late_initcall(sc_debugfs_init
);