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
)
39 buf_size
= min(count
, sizeof(buf
) - 1);
40 if (copy_from_user(buf
, user_buf
, buf_size
))
44 err
= strtobool(buf
, &enabled
);
51 bc_prefetch_disable();
56 static const struct file_operations sc_prefetch_fops
= {
58 .llseek
= default_llseek
,
59 .read
= sc_prefetch_read
,
60 .write
= sc_prefetch_write
,
63 static int __init
sc_debugfs_init(void)
65 struct dentry
*dir
, *file
;
67 if (!mips_debugfs_dir
)
70 dir
= debugfs_create_dir("l2cache", mips_debugfs_dir
);
74 file
= debugfs_create_file("prefetch", S_IRUGO
| S_IWUSR
, dir
,
75 NULL
, &sc_prefetch_fops
);
81 late_initcall(sc_debugfs_init
);