Lines Matching refs:req

105 pci_cfgacc_io(pci_cfgacc_req_t *req)  in pci_cfgacc_io()  argument
110 bus = PCI_BDF_BUS(req->bdf); in pci_cfgacc_io()
111 dev = PCI_BDF_DEV(req->bdf); in pci_cfgacc_io()
112 func = PCI_BDF_FUNC(req->bdf); in pci_cfgacc_io()
113 ioacc_offset = req->offset; in pci_cfgacc_io()
115 switch (req->size) { in pci_cfgacc_io()
117 if (req->write) in pci_cfgacc_io()
119 ioacc_offset, VAL8(req)); in pci_cfgacc_io()
121 VAL8(req) = (*pci_getb_func)(bus, dev, func, in pci_cfgacc_io()
125 if (req->write) in pci_cfgacc_io()
127 ioacc_offset, VAL16(req)); in pci_cfgacc_io()
129 VAL16(req) = (*pci_getw_func)(bus, dev, func, in pci_cfgacc_io()
133 if (req->write) in pci_cfgacc_io()
135 ioacc_offset, VAL32(req)); in pci_cfgacc_io()
137 VAL32(req) = (*pci_getl_func)(bus, dev, func, in pci_cfgacc_io()
141 if (req->write) { in pci_cfgacc_io()
143 ioacc_offset, VAL64(req) & 0xffffffff); in pci_cfgacc_io()
145 ioacc_offset + 4, VAL64(req) >> 32); in pci_cfgacc_io()
147 VAL64(req) = (*pci_getl_func)(bus, dev, func, in pci_cfgacc_io()
149 VAL64(req) |= (uint64_t)(*pci_getl_func)(bus, dev, func, in pci_cfgacc_io()
157 pci_cfgacc_mmio(pci_cfgacc_req_t *req) in pci_cfgacc_mmio() argument
162 paddr = (paddr_t)req->bdf << 12; in pci_cfgacc_mmio()
163 paddr += mcfg_mem_base + req->offset; in pci_cfgacc_mmio()
168 switch (req->size) { in pci_cfgacc_mmio()
170 if (req->write) in pci_cfgacc_mmio()
171 *((uint8_t *)vaddr) = VAL8(req); in pci_cfgacc_mmio()
173 VAL8(req) = *((uint8_t *)vaddr); in pci_cfgacc_mmio()
176 if (req->write) in pci_cfgacc_mmio()
177 *((uint16_t *)vaddr) = VAL16(req); in pci_cfgacc_mmio()
179 VAL16(req) = *((uint16_t *)vaddr); in pci_cfgacc_mmio()
182 if (req->write) in pci_cfgacc_mmio()
183 *((uint32_t *)vaddr) = VAL32(req); in pci_cfgacc_mmio()
185 VAL32(req) = *((uint32_t *)vaddr); in pci_cfgacc_mmio()
188 if (req->write) in pci_cfgacc_mmio()
189 *((uint64_t *)vaddr) = VAL64(req); in pci_cfgacc_mmio()
191 VAL64(req) = *((uint64_t *)vaddr); in pci_cfgacc_mmio()
199 pci_cfgacc_valid(pci_cfgacc_req_t *req, uint16_t cfgspc_size) in pci_cfgacc_valid() argument
201 int sz = req->size; in pci_cfgacc_valid()
203 if (IS_P2ALIGNED(req->offset, sz) && in pci_cfgacc_valid()
204 (req->offset + sz - 1 < cfgspc_size) && in pci_cfgacc_valid()
209 req->offset, sz); in pci_cfgacc_valid()
214 pci_cfgacc_check_io(pci_cfgacc_req_t *req) in pci_cfgacc_check_io() argument
218 bus = PCI_BDF_BUS(req->bdf); in pci_cfgacc_check_io()
222 pci_cfgacc_find_workaround(req->bdf)) in pci_cfgacc_check_io()
223 req->ioacc = B_TRUE; in pci_cfgacc_check_io()
227 pci_cfgacc_acc(pci_cfgacc_req_t *req) in pci_cfgacc_acc() argument
229 if (!req->write) in pci_cfgacc_acc()
230 VAL64(req) = (uint64_t)-1; in pci_cfgacc_acc()
232 pci_cfgacc_check_io(req); in pci_cfgacc_acc()
234 if (req->ioacc) { in pci_cfgacc_acc()
235 if (pci_cfgacc_valid(req, pci_iocfg_max_offset + 1)) in pci_cfgacc_acc()
236 pci_cfgacc_io(req); in pci_cfgacc_acc()
238 if (pci_cfgacc_valid(req, PCIE_CFG_SPACE_SIZE)) in pci_cfgacc_acc()
239 pci_cfgacc_mmio(req); in pci_cfgacc_acc()