| .. | .. |
|---|
| 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 | } |
|---|