.. | .. |
---|
14 | 14 | #include <asm/div64.h> |
---|
15 | 15 | |
---|
16 | 16 | #ifndef FPGA_PLATFORM |
---|
| 17 | +#ifdef CONFIG_PM_DEVFREQ |
---|
17 | 18 | #include <../drivers/devfreq/governor.h> |
---|
| 19 | +#endif |
---|
18 | 20 | #endif |
---|
19 | 21 | |
---|
20 | 22 | #include "rknpu_drv.h" |
---|
.. | .. |
---|
44 | 46 | unsigned long flags; |
---|
45 | 47 | int i; |
---|
46 | 48 | int load; |
---|
47 | | - uint64_t busy_time_total, div_value; |
---|
| 49 | + uint64_t total_busy_time, div_value; |
---|
48 | 50 | |
---|
49 | 51 | seq_puts(m, "NPU load: "); |
---|
50 | 52 | for (i = 0; i < rknpu_dev->config->num_irqs; i++) { |
---|
.. | .. |
---|
55 | 57 | |
---|
56 | 58 | spin_lock_irqsave(&rknpu_dev->irq_lock, flags); |
---|
57 | 59 | |
---|
58 | | - busy_time_total = subcore_data->timer.busy_time_record; |
---|
| 60 | + total_busy_time = subcore_data->timer.total_busy_time; |
---|
59 | 61 | |
---|
60 | 62 | spin_unlock_irqrestore(&rknpu_dev->irq_lock, flags); |
---|
61 | 63 | |
---|
62 | | - div_value = (RKNPU_LOAD_INTERVAL / 100000); |
---|
63 | | - do_div(busy_time_total, div_value); |
---|
64 | | - load = busy_time_total; |
---|
| 64 | + div_value = (RKNPU_LOAD_INTERVAL / 100); |
---|
| 65 | + do_div(total_busy_time, div_value); |
---|
| 66 | + load = total_busy_time > 100 ? 100 : total_busy_time; |
---|
65 | 67 | |
---|
66 | 68 | if (rknpu_dev->config->num_irqs > 1) |
---|
67 | 69 | seq_printf(m, "%2.d%%,", load); |
---|
.. | .. |
---|
191 | 193 | return 0; |
---|
192 | 194 | } |
---|
193 | 195 | |
---|
| 196 | +#ifdef CONFIG_PM_DEVFREQ |
---|
194 | 197 | static ssize_t rknpu_freq_set(struct file *file, const char __user *ubuf, |
---|
195 | 198 | size_t len, loff_t *offp) |
---|
196 | 199 | { |
---|
.. | .. |
---|
233 | 236 | |
---|
234 | 237 | return len; |
---|
235 | 238 | } |
---|
| 239 | +#else |
---|
| 240 | +static ssize_t rknpu_freq_set(struct file *file, const char __user *ubuf, |
---|
| 241 | + size_t len, loff_t *offp) |
---|
| 242 | +{ |
---|
| 243 | + return -EFAULT; |
---|
| 244 | +} |
---|
| 245 | +#endif |
---|
236 | 246 | |
---|
237 | 247 | static int rknpu_volt_show(struct seq_file *m, void *data) |
---|
238 | 248 | { |
---|
.. | .. |
---|
447 | 457 | #ifdef CONFIG_ROCKCHIP_RKNPU_PROC_FS |
---|
448 | 458 | static int rknpu_procfs_open(struct inode *inode, struct file *file) |
---|
449 | 459 | { |
---|
| 460 | +#if KERNEL_VERSION(6, 1, 0) > LINUX_VERSION_CODE |
---|
450 | 461 | struct rknpu_debugger_node *node = PDE_DATA(inode); |
---|
| 462 | +#else |
---|
| 463 | + struct rknpu_debugger_node *node = pde_data(inode); |
---|
| 464 | +#endif |
---|
451 | 465 | |
---|
452 | 466 | return single_open(file, node->info_ent->show, node); |
---|
453 | 467 | } |
---|