Lines Matching refs:req
88 static u8 peci_request_data_cc(struct peci_request *req)
90 return req->rx.buf[0];
95 * @req: the PECI request that contains response data with completion code
102 int peci_request_status(struct peci_request *req)
104 u8 cc = peci_request_data_cc(req);
107 dev_dbg(&req->device->dev, "ret: %#02x\n", cc);
133 static int peci_request_xfer(struct peci_request *req)
135 struct peci_device *device = req->device;
140 ret = controller->ops->xfer(controller, device->addr, req);
146 static int peci_request_xfer_retry(struct peci_request *req)
149 struct peci_device *device = req->device;
155 if (WARN_ON(req->tx.len == 0))
159 ret = peci_request_xfer(req);
165 if (peci_request_status(req) != -EAGAIN)
169 req->tx.buf[1] |= PECI_RETRY_BIT;
192 struct peci_request *req;
206 req = kzalloc(sizeof(*req), GFP_KERNEL);
207 if (!req)
210 req->device = device;
211 req->tx.len = tx_len;
212 req->rx.len = rx_len;
214 return req;
220 * @req: the PECI request to be freed
222 void peci_request_free(struct peci_request *req)
224 kfree(req);
230 struct peci_request *req;
233 req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN, PECI_GET_DIB_RD_LEN);
234 if (!req)
237 req->tx.buf[0] = PECI_GET_DIB_CMD;
239 ret = peci_request_xfer(req);
241 peci_request_free(req);
245 return req;
251 struct peci_request *req;
254 req = peci_request_alloc(device, PECI_GET_TEMP_WR_LEN, PECI_GET_TEMP_RD_LEN);
255 if (!req)
258 req->tx.buf[0] = PECI_GET_TEMP_CMD;
260 ret = peci_request_xfer(req);
262 peci_request_free(req);
266 return req;
273 struct peci_request *req;
276 req = peci_request_alloc(device, PECI_RDPKGCFG_WR_LEN, PECI_RDPKGCFG_RD_LEN_BASE + len);
277 if (!req)
280 req->tx.buf[0] = PECI_RDPKGCFG_CMD;
281 req->tx.buf[1] = 0;
282 req->tx.buf[2] = index;
283 put_unaligned_le16(param, &req->tx.buf[3]);
285 ret = peci_request_xfer_retry(req);
287 peci_request_free(req);
291 return req;
302 struct peci_request *req;
306 req = peci_request_alloc(device, PECI_RDPCICFGLOCAL_WR_LEN,
308 if (!req)
313 req->tx.buf[0] = PECI_RDPCICFGLOCAL_CMD;
314 req->tx.buf[1] = 0;
315 put_unaligned_le24(pci_addr, &req->tx.buf[2]);
317 ret = peci_request_xfer_retry(req);
319 peci_request_free(req);
323 return req;
330 struct peci_request *req;
334 req = peci_request_alloc(device, PECI_RDENDPTCFG_PCI_WR_LEN,
336 if (!req)
341 req->tx.buf[0] = PECI_RDENDPTCFG_CMD;
342 req->tx.buf[1] = 0;
343 req->tx.buf[2] = msg_type;
344 req->tx.buf[3] = 0;
345 req->tx.buf[4] = 0;
346 req->tx.buf[5] = 0;
347 req->tx.buf[6] = PECI_ENDPTCFG_ADDR_TYPE_PCI;
348 req->tx.buf[7] = seg; /* PCI Segment */
349 put_unaligned_le32(pci_addr, &req->tx.buf[8]);
351 ret = peci_request_xfer_retry(req);
353 peci_request_free(req);
357 return req;
364 struct peci_request *req;
367 req = peci_request_alloc(device, tx_len, PECI_RDENDPTCFG_RD_LEN_BASE + len);
368 if (!req)
371 req->tx.buf[0] = PECI_RDENDPTCFG_CMD;
372 req->tx.buf[1] = 0;
373 req->tx.buf[2] = PECI_ENDPTCFG_TYPE_MMIO;
374 req->tx.buf[3] = 0; /* Endpoint ID */
375 req->tx.buf[4] = 0; /* Reserved */
376 req->tx.buf[5] = bar;
377 req->tx.buf[6] = addr_type;
378 req->tx.buf[7] = seg; /* PCI Segment */
379 req->tx.buf[8] = PCI_DEVFN(dev, func);
380 req->tx.buf[9] = bus; /* PCI Bus */
383 put_unaligned_le32(offset, &req->tx.buf[10]);
385 put_unaligned_le64(offset, &req->tx.buf[10]);
387 ret = peci_request_xfer_retry(req);
389 peci_request_free(req);
393 return req;
396 u8 peci_request_data_readb(struct peci_request *req)
398 return req->rx.buf[1];
402 u16 peci_request_data_readw(struct peci_request *req)
404 return get_unaligned_le16(&req->rx.buf[1]);
408 u32 peci_request_data_readl(struct peci_request *req)
410 return get_unaligned_le32(&req->rx.buf[1]);
414 u64 peci_request_data_readq(struct peci_request *req)
416 return get_unaligned_le64(&req->rx.buf[1]);
420 u64 peci_request_dib_read(struct peci_request *req)
422 return get_unaligned_le64(&req->rx.buf[0]);
426 s16 peci_request_temp_read(struct peci_request *req)
428 return get_unaligned_le16(&req->rx.buf[0]);