• Home
  • Raw
  • Download

Lines Matching full:range

26  * logic_pio_register_range - register logical PIO range for a host
27 * @new_range: pointer to the IO range to be registered.
31 * Register a new IO range node in the IO range list.
35 struct logic_pio_hwaddr *range; in logic_pio_register_range() local
49 list_for_each_entry(range, &io_range_list, list) { in logic_pio_register_range()
50 if (range->fwnode == new_range->fwnode) { in logic_pio_register_range()
51 /* range already there */ in logic_pio_register_range()
54 if (range->flags == LOGIC_PIO_CPU_MMIO && in logic_pio_register_range()
57 if (start >= range->hw_start + range->size || in logic_pio_register_range()
58 end < range->hw_start) { in logic_pio_register_range()
59 mmio_end = range->io_start + range->size; in logic_pio_register_range()
64 } else if (range->flags == LOGIC_PIO_INDIRECT && in logic_pio_register_range()
66 iio_sz += range->size; in logic_pio_register_range()
70 /* range not registered yet, check for available space */ in logic_pio_register_range()
79 pr_warn("Requested IO range too big, new size set to 64K\n"); in logic_pio_register_range()
102 * logic_pio_unregister_range - unregister a logical PIO range for a host
103 * @range: pointer to the IO range which has been already registered.
105 * Unregister a previously-registered IO range node.
107 void logic_pio_unregister_range(struct logic_pio_hwaddr *range) in logic_pio_unregister_range() argument
110 list_del_rcu(&range->list); in logic_pio_unregister_range()
116 * find_io_range_by_fwnode - find logical PIO range for given FW node
117 * @fwnode: FW node handle associated with logical PIO range
125 struct logic_pio_hwaddr *range, *found_range = NULL; in find_io_range_by_fwnode() local
128 list_for_each_entry_rcu(range, &io_range_list, list) { in find_io_range_by_fwnode()
129 if (range->fwnode == fwnode) { in find_io_range_by_fwnode()
130 found_range = range; in find_io_range_by_fwnode()
139 /* Return a registered range given an input PIO token */
142 struct logic_pio_hwaddr *range, *found_range = NULL; in find_io_range() local
145 list_for_each_entry_rcu(range, &io_range_list, list) { in find_io_range()
146 if (in_range(pio, range->io_start, range->size)) { in find_io_range()
147 found_range = range; in find_io_range()
170 struct logic_pio_hwaddr *range; in logic_pio_to_hwaddr() local
172 range = find_io_range(pio); in logic_pio_to_hwaddr()
173 if (range) in logic_pio_to_hwaddr()
174 return range->hw_start + pio - range->io_start; in logic_pio_to_hwaddr()
190 struct logic_pio_hwaddr *range; in logic_pio_trans_hwaddr() local
192 range = find_io_range_by_fwnode(fwnode); in logic_pio_trans_hwaddr()
193 if (!range || range->flags == LOGIC_PIO_CPU_MMIO) { in logic_pio_trans_hwaddr()
194 pr_err("IO range not found or invalid\n"); in logic_pio_trans_hwaddr()
197 if (range->size < size) { in logic_pio_trans_hwaddr()
198 pr_err("resource size %pa cannot fit in IO range size %pa\n", in logic_pio_trans_hwaddr()
199 &size, &range->size); in logic_pio_trans_hwaddr()
202 return addr - range->hw_start + range->io_start; in logic_pio_trans_hwaddr()
207 struct logic_pio_hwaddr *range; in logic_pio_trans_cpuaddr() local
210 list_for_each_entry_rcu(range, &io_range_list, list) { in logic_pio_trans_cpuaddr()
211 if (range->flags != LOGIC_PIO_CPU_MMIO) in logic_pio_trans_cpuaddr()
213 if (in_range(addr, range->hw_start, range->size)) { in logic_pio_trans_cpuaddr()
216 cpuaddr = addr - range->hw_start + range->io_start; in logic_pio_trans_cpuaddr()