Lines Matching defs:arg

140     fbl::unique_free_ptr<zx_pci_init_arg_t> arg;
142 if (len < sizeof(*arg) || len > ZX_PCI_INIT_ARG_MAX_SIZE) {
151 arg.reset(static_cast<zx_pci_init_arg_t*>(malloc(len)));
152 if (!arg) {
157 arg.get(), len);
164 TRACEF("%u address window%s found in init arg\n", arg->addr_window_count,
165 (arg->addr_window_count == 1) ? "" : "s");
166 for (uint32_t i = 0; i < arg->addr_window_count; i++) {
170 arg->addr_windows[i].is_mmio, arg->addr_windows[i].has_ecam,
171 arg->addr_windows[i].base, arg->addr_windows[i].size,
172 arg->addr_windows[i].bus_start, arg->addr_windows[i].bus_end);
176 const uint32_t win_count = arg->addr_window_count;
177 if (len != sizeof(*arg) + sizeof(arg->addr_windows[0]) * win_count) {
181 if (arg->num_irqs > fbl::count_of(arg->irqs)) {
186 for (unsigned int i = 0; i < arg->num_irqs; ++i) {
187 uint32_t irq = arg->irqs[i].global_irq;
192 arg->irqs[i].global_irq = ZX_PCI_NO_IRQ_MAPPING;
193 pci_irq_swizzle_lut_remove_irq(&arg->dev_pin_to_global_irq, irq);
198 if (arg->irqs[i].level_triggered) {
202 if (arg->irqs[i].active_high) {
216 if (arg->addr_windows[0].bus_start != 0) {
220 if (arg->addr_windows[0].bus_start > arg->addr_windows[0].bus_end) {
227 unsigned int num_buses = arg->addr_windows[0].bus_end -
228 arg->addr_windows[0].bus_start + 1;
229 paddr_t end = arg->addr_windows[0].base +
235 if (end < arg->addr_windows[0].base) {
238 arg->addr_windows[0].size = ROUNDDOWN(end - arg->addr_windows[0].base,
240 uint64_t new_bus_end = (arg->addr_windows[0].size / PCIE_ECAM_BYTE_PER_BUS) +
241 arg->addr_windows[0].bus_start - 1;
245 arg->addr_windows[0].bus_end = static_cast<uint8_t>(new_bus_end);
249 if (arg->addr_windows[0].is_mmio) {
250 if (arg->addr_windows[0].size < PCIE_ECAM_BYTE_PER_BUS) {
253 if (arg->addr_windows[0].size / PCIE_ECAM_BYTE_PER_BUS >
254 PCIE_MAX_BUSSES - arg->addr_windows[0].bus_start) {
260 ASSERT(arg->addr_windows[0].base < fbl::numeric_limits<paddr_t>::max());
266 .phys_base = static_cast<paddr_t>(arg->addr_windows[0].base),
267 .size = arg->addr_windows[0].size,
269 .bus_end = static_cast<uint8_t>((arg->addr_windows[0].size / PCIE_ECAM_BYTE_PER_BUS) - 1),
282 auto root = PcieRootLUTSwizzle::Create(*pcie, 0, arg->dev_pin_to_global_irq);
287 pcie->EnablePIOWorkaround(!arg->addr_windows[0].is_mmio);