Lines Matching refs:range

24  * logic_pio_register_range - register logical PIO range for a host
25 * @new_range: pointer to the IO range to be registered.
28 * If the range already exists, -EEXIST will be returned, which should be
31 * Register a new IO range node in the IO range list.
35 struct logic_pio_hwaddr *range;
50 list_for_each_entry(range, &io_range_list, list) {
51 if (range->fwnode == new_range->fwnode) {
52 /* range already there */
56 if (range->flags == LOGIC_PIO_CPU_MMIO &&
59 if (start >= range->hw_start + range->size ||
60 end < range->hw_start) {
61 mmio_end = range->io_start + range->size;
66 } else if (range->flags == LOGIC_PIO_INDIRECT &&
68 iio_sz += range->size;
72 /* range not registered yet, check for available space */
81 pr_warn("Requested IO range too big, new size set to 64K\n");
104 * logic_pio_unregister_range - unregister a logical PIO range for a host
105 * @range: pointer to the IO range which has been already registered.
107 * Unregister a previously-registered IO range node.
109 void logic_pio_unregister_range(struct logic_pio_hwaddr *range)
112 list_del_rcu(&range->list);
118 * find_io_range_by_fwnode - find logical PIO range for given FW node
119 * @fwnode: FW node handle associated with logical PIO range
127 struct logic_pio_hwaddr *range, *found_range = NULL;
130 list_for_each_entry_rcu(range, &io_range_list, list) {
131 if (range->fwnode == fwnode) {
132 found_range = range;
141 /* Return a registered range given an input PIO token */
144 struct logic_pio_hwaddr *range, *found_range = NULL;
147 list_for_each_entry_rcu(range, &io_range_list, list) {
148 if (in_range(pio, range->io_start, range->size)) {
149 found_range = range;
172 struct logic_pio_hwaddr *range;
174 range = find_io_range(pio);
175 if (range)
176 return range->hw_start + pio - range->io_start;
192 struct logic_pio_hwaddr *range;
194 range = find_io_range_by_fwnode(fwnode);
195 if (!range || range->flags == LOGIC_PIO_CPU_MMIO) {
196 pr_err("IO range not found or invalid\n");
199 if (range->size < size) {
200 pr_err("resource size %pa cannot fit in IO range size %pa\n",
201 &size, &range->size);
204 return addr - range->hw_start + range->io_start;
209 struct logic_pio_hwaddr *range;
212 list_for_each_entry_rcu(range, &io_range_list, list) {
213 if (range->flags != LOGIC_PIO_CPU_MMIO)
215 if (in_range(addr, range->hw_start, range->size)) {
218 cpuaddr = addr - range->hw_start + range->io_start;