Lines Matching refs:fru
6190 struct bfa_fru_s *fru = cbarg;
6192 bfa_trc(fru, event);
6197 if (fru->op_busy) {
6198 fru->status = BFA_STATUS_IOC_FAILURE;
6199 fru->cbfn(fru->cbarg, fru->status);
6200 fru->op_busy = 0;
6210 * Send fru write request.
6217 struct bfa_fru_s *fru = cbarg;
6219 (struct bfi_fru_write_req_s *) fru->mb.msg;
6222 msg->offset = cpu_to_be32(fru->addr_off + fru->offset);
6223 len = (fru->residue < BFA_FRU_DMA_BUF_SZ) ?
6224 fru->residue : BFA_FRU_DMA_BUF_SZ;
6230 msg->last = (len == fru->residue) ? 1 : 0;
6232 msg->trfr_cmpl = (len == fru->residue) ? fru->trfr_cmpl : 0;
6233 bfi_h2i_set(msg->mh, BFI_MC_FRU, msg_type, bfa_ioc_portid(fru->ioc));
6234 bfa_alen_set(&msg->alen, len, fru->dbuf_pa);
6236 memcpy(fru->dbuf_kva, fru->ubuf + fru->offset, len);
6237 bfa_ioc_mbox_queue(fru->ioc, &fru->mb);
6239 fru->residue -= len;
6240 fru->offset += len;
6244 * Send fru read request.
6251 struct bfa_fru_s *fru = cbarg;
6253 (struct bfi_fru_read_req_s *) fru->mb.msg;
6256 msg->offset = cpu_to_be32(fru->addr_off + fru->offset);
6257 len = (fru->residue < BFA_FRU_DMA_BUF_SZ) ?
6258 fru->residue : BFA_FRU_DMA_BUF_SZ;
6260 bfi_h2i_set(msg->mh, BFI_MC_FRU, msg_type, bfa_ioc_portid(fru->ioc));
6261 bfa_alen_set(&msg->alen, len, fru->dbuf_pa);
6262 bfa_ioc_mbox_queue(fru->ioc, &fru->mb);
6273 /* min driver doesn't need fru */
6283 * @param[in] fru - fru structure
6290 bfa_fru_attach(struct bfa_fru_s *fru, struct bfa_ioc_s *ioc, void *dev,
6293 fru->ioc = ioc;
6294 fru->trcmod = trcmod;
6295 fru->cbfn = NULL;
6296 fru->cbarg = NULL;
6297 fru->op_busy = 0;
6299 bfa_ioc_mbox_regisr(fru->ioc, BFI_MC_FRU, bfa_fru_intr, fru);
6300 bfa_q_qe_init(&fru->ioc_notify);
6301 bfa_ioc_notify_init(&fru->ioc_notify, bfa_fru_notify, fru);
6302 list_add_tail(&fru->ioc_notify.qe, &fru->ioc->notify_q);
6304 /* min driver doesn't need fru */
6306 fru->dbuf_kva = NULL;
6307 fru->dbuf_pa = 0;
6312 * Claim memory for fru
6314 * @param[in] fru - fru structure
6320 bfa_fru_memclaim(struct bfa_fru_s *fru, u8 *dm_kva, u64 dm_pa,
6326 fru->dbuf_kva = dm_kva;
6327 fru->dbuf_pa = dm_pa;
6328 memset(fru->dbuf_kva, 0, BFA_FRU_DMA_BUF_SZ);
6334 * Update fru vpd image.
6336 * @param[in] fru - fru structure
6346 bfa_fruvpd_update(struct bfa_fru_s *fru, void *buf, u32 len, u32 offset,
6349 bfa_trc(fru, BFI_FRUVPD_H2I_WRITE_REQ);
6350 bfa_trc(fru, len);
6351 bfa_trc(fru, offset);
6353 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2 &&
6354 fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK2)
6357 if (fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK)
6360 if (!bfa_ioc_is_operational(fru->ioc))
6363 if (fru->op_busy) {
6364 bfa_trc(fru, fru->op_busy);
6368 fru->op_busy = 1;
6370 fru->cbfn = cbfn;
6371 fru->cbarg = cbarg;
6372 fru->residue = len;
6373 fru->offset = 0;
6374 fru->addr_off = offset;
6375 fru->ubuf = buf;
6376 fru->trfr_cmpl = trfr_cmpl;
6378 bfa_fru_write_send(fru, BFI_FRUVPD_H2I_WRITE_REQ);
6384 * Read fru vpd image.
6386 * @param[in] fru - fru structure
6396 bfa_fruvpd_read(struct bfa_fru_s *fru, void *buf, u32 len, u32 offset,
6399 bfa_trc(fru, BFI_FRUVPD_H2I_READ_REQ);
6400 bfa_trc(fru, len);
6401 bfa_trc(fru, offset);
6403 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2)
6406 if (fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK &&
6407 fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK2)
6410 if (!bfa_ioc_is_operational(fru->ioc))
6413 if (fru->op_busy) {
6414 bfa_trc(fru, fru->op_busy);
6418 fru->op_busy = 1;
6420 fru->cbfn = cbfn;
6421 fru->cbarg = cbarg;
6422 fru->residue = len;
6423 fru->offset = 0;
6424 fru->addr_off = offset;
6425 fru->ubuf = buf;
6426 bfa_fru_read_send(fru, BFI_FRUVPD_H2I_READ_REQ);
6432 * Get maximum size fru vpd image.
6434 * @param[in] fru - fru structure
6435 * @param[out] size - maximum size of fru vpd data
6440 bfa_fruvpd_get_max_size(struct bfa_fru_s *fru, u32 *max_size)
6442 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2)
6445 if (!bfa_ioc_is_operational(fru->ioc))
6448 if (fru->ioc->attr->card_type == BFA_MFG_TYPE_CHINOOK ||
6449 fru->ioc->attr->card_type == BFA_MFG_TYPE_CHINOOK2)
6458 * @param[in] fru - fru structure
6468 bfa_tfru_write(struct bfa_fru_s *fru, void *buf, u32 len, u32 offset,
6471 bfa_trc(fru, BFI_TFRU_H2I_WRITE_REQ);
6472 bfa_trc(fru, len);
6473 bfa_trc(fru, offset);
6474 bfa_trc(fru, *((u8 *) buf));
6476 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2)
6479 if (!bfa_ioc_is_operational(fru->ioc))
6482 if (fru->op_busy) {
6483 bfa_trc(fru, fru->op_busy);
6487 fru->op_busy = 1;
6489 fru->cbfn = cbfn;
6490 fru->cbarg = cbarg;
6491 fru->residue = len;
6492 fru->offset = 0;
6493 fru->addr_off = offset;
6494 fru->ubuf = buf;
6496 bfa_fru_write_send(fru, BFI_TFRU_H2I_WRITE_REQ);
6504 * @param[in] fru - fru structure
6514 bfa_tfru_read(struct bfa_fru_s *fru, void *buf, u32 len, u32 offset,
6517 bfa_trc(fru, BFI_TFRU_H2I_READ_REQ);
6518 bfa_trc(fru, len);
6519 bfa_trc(fru, offset);
6521 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2)
6524 if (!bfa_ioc_is_operational(fru->ioc))
6527 if (fru->op_busy) {
6528 bfa_trc(fru, fru->op_busy);
6532 fru->op_busy = 1;
6534 fru->cbfn = cbfn;
6535 fru->cbarg = cbarg;
6536 fru->residue = len;
6537 fru->offset = 0;
6538 fru->addr_off = offset;
6539 fru->ubuf = buf;
6540 bfa_fru_read_send(fru, BFI_TFRU_H2I_READ_REQ);
6546 * Process fru response messages upon receiving interrupts.
6548 * @param[in] fruarg - fru structure
6554 struct bfa_fru_s *fru = fruarg;
6558 bfa_trc(fru, msg->mh.msg_id);
6560 if (!fru->op_busy) {
6564 bfa_trc(fru, 0x9999);
6572 bfa_trc(fru, status);
6574 if (status != BFA_STATUS_OK || fru->residue == 0) {
6575 fru->status = status;
6576 fru->op_busy = 0;
6577 if (fru->cbfn)
6578 fru->cbfn(fru->cbarg, fru->status);
6580 bfa_trc(fru, fru->offset);
6582 bfa_fru_write_send(fru,
6585 bfa_fru_write_send(fru,
6592 bfa_trc(fru, status);
6595 fru->status = status;
6596 fru->op_busy = 0;
6597 if (fru->cbfn)
6598 fru->cbfn(fru->cbarg, fru->status);
6602 bfa_trc(fru, fru->offset);
6603 bfa_trc(fru, len);
6605 memcpy(fru->ubuf + fru->offset, fru->dbuf_kva, len);
6606 fru->residue -= len;
6607 fru->offset += len;
6609 if (fru->residue == 0) {
6610 fru->status = status;
6611 fru->op_busy = 0;
6612 if (fru->cbfn)
6613 fru->cbfn(fru->cbarg, fru->status);
6616 bfa_fru_read_send(fru,
6619 bfa_fru_read_send(fru,