Lines Matching +full:device +full:- +full:level
2 * Support for hardware-assisted userspace interrupt masking.
13 #include <linux/device.h>
23 show_intc_userimask(struct device *dev, in show_intc_userimask()
30 store_intc_userimask(struct device *dev, in store_intc_userimask()
34 unsigned long level; in store_intc_userimask() local
37 ret = kstrtoul(buf, 10, &level); in store_intc_userimask()
42 * Minimal acceptable IRQ levels are in the 2 - 16 range, but in store_intc_userimask()
45 * Level 1 is a special case on some CPUs in that it's not in store_intc_userimask()
47 * certain level, we don't care about this limitation here. in store_intc_userimask()
48 * Level 0 on the other hand equates to user masking disabled. in store_intc_userimask()
50 * We use the default priority level as a cut off so that only in store_intc_userimask()
51 * special case opt-in IRQs can be mangled. in store_intc_userimask()
53 if (level >= intc_get_dfl_prio_level()) in store_intc_userimask()
54 return -EINVAL; in store_intc_userimask()
56 __raw_writel(0xa5 << 24 | level << 4, uimask); in store_intc_userimask()
67 struct device *dev_root; in userimask_sysdev_init()
71 return -ENXIO; in userimask_sysdev_init()
85 return -EBUSY; in register_intc_userimask()
89 return -ENOMEM; in register_intc_userimask()
91 pr_info("userimask support registered for levels 0 -> %d\n", in register_intc_userimask()
92 intc_get_dfl_prio_level() - 1); in register_intc_userimask()