Lines Matching refs:fru
6206 struct bfa_fru_s *fru = cbarg; in bfa_fru_notify() local
6208 bfa_trc(fru, event); in bfa_fru_notify()
6213 if (fru->op_busy) { in bfa_fru_notify()
6214 fru->status = BFA_STATUS_IOC_FAILURE; in bfa_fru_notify()
6215 fru->cbfn(fru->cbarg, fru->status); in bfa_fru_notify()
6216 fru->op_busy = 0; in bfa_fru_notify()
6233 struct bfa_fru_s *fru = cbarg; in bfa_fru_write_send() local
6235 (struct bfi_fru_write_req_s *) fru->mb.msg; in bfa_fru_write_send()
6238 msg->offset = cpu_to_be32(fru->addr_off + fru->offset); in bfa_fru_write_send()
6239 len = (fru->residue < BFA_FRU_DMA_BUF_SZ) ? in bfa_fru_write_send()
6240 fru->residue : BFA_FRU_DMA_BUF_SZ; in bfa_fru_write_send()
6246 msg->last = (len == fru->residue) ? 1 : 0; in bfa_fru_write_send()
6248 msg->trfr_cmpl = (len == fru->residue) ? fru->trfr_cmpl : 0; in bfa_fru_write_send()
6249 bfi_h2i_set(msg->mh, BFI_MC_FRU, msg_type, bfa_ioc_portid(fru->ioc)); in bfa_fru_write_send()
6250 bfa_alen_set(&msg->alen, len, fru->dbuf_pa); in bfa_fru_write_send()
6252 memcpy(fru->dbuf_kva, fru->ubuf + fru->offset, len); in bfa_fru_write_send()
6253 bfa_ioc_mbox_queue(fru->ioc, &fru->mb); in bfa_fru_write_send()
6255 fru->residue -= len; in bfa_fru_write_send()
6256 fru->offset += len; in bfa_fru_write_send()
6267 struct bfa_fru_s *fru = cbarg; in bfa_fru_read_send() local
6269 (struct bfi_fru_read_req_s *) fru->mb.msg; in bfa_fru_read_send()
6272 msg->offset = cpu_to_be32(fru->addr_off + fru->offset); in bfa_fru_read_send()
6273 len = (fru->residue < BFA_FRU_DMA_BUF_SZ) ? in bfa_fru_read_send()
6274 fru->residue : BFA_FRU_DMA_BUF_SZ; in bfa_fru_read_send()
6276 bfi_h2i_set(msg->mh, BFI_MC_FRU, msg_type, bfa_ioc_portid(fru->ioc)); in bfa_fru_read_send()
6277 bfa_alen_set(&msg->alen, len, fru->dbuf_pa); in bfa_fru_read_send()
6278 bfa_ioc_mbox_queue(fru->ioc, &fru->mb); in bfa_fru_read_send()
6306 bfa_fru_attach(struct bfa_fru_s *fru, struct bfa_ioc_s *ioc, void *dev, in bfa_fru_attach() argument
6309 fru->ioc = ioc; in bfa_fru_attach()
6310 fru->trcmod = trcmod; in bfa_fru_attach()
6311 fru->cbfn = NULL; in bfa_fru_attach()
6312 fru->cbarg = NULL; in bfa_fru_attach()
6313 fru->op_busy = 0; in bfa_fru_attach()
6315 bfa_ioc_mbox_regisr(fru->ioc, BFI_MC_FRU, bfa_fru_intr, fru); in bfa_fru_attach()
6316 bfa_q_qe_init(&fru->ioc_notify); in bfa_fru_attach()
6317 bfa_ioc_notify_init(&fru->ioc_notify, bfa_fru_notify, fru); in bfa_fru_attach()
6318 list_add_tail(&fru->ioc_notify.qe, &fru->ioc->notify_q); in bfa_fru_attach()
6322 fru->dbuf_kva = NULL; in bfa_fru_attach()
6323 fru->dbuf_pa = 0; in bfa_fru_attach()
6336 bfa_fru_memclaim(struct bfa_fru_s *fru, u8 *dm_kva, u64 dm_pa, in bfa_fru_memclaim() argument
6342 fru->dbuf_kva = dm_kva; in bfa_fru_memclaim()
6343 fru->dbuf_pa = dm_pa; in bfa_fru_memclaim()
6344 memset(fru->dbuf_kva, 0, BFA_FRU_DMA_BUF_SZ); in bfa_fru_memclaim()
6362 bfa_fruvpd_update(struct bfa_fru_s *fru, void *buf, u32 len, u32 offset, in bfa_fruvpd_update() argument
6365 bfa_trc(fru, BFI_FRUVPD_H2I_WRITE_REQ); in bfa_fruvpd_update()
6366 bfa_trc(fru, len); in bfa_fruvpd_update()
6367 bfa_trc(fru, offset); in bfa_fruvpd_update()
6369 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2 && in bfa_fruvpd_update()
6370 fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK2) in bfa_fruvpd_update()
6373 if (fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK) in bfa_fruvpd_update()
6376 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_fruvpd_update()
6379 if (fru->op_busy) { in bfa_fruvpd_update()
6380 bfa_trc(fru, fru->op_busy); in bfa_fruvpd_update()
6384 fru->op_busy = 1; in bfa_fruvpd_update()
6386 fru->cbfn = cbfn; in bfa_fruvpd_update()
6387 fru->cbarg = cbarg; in bfa_fruvpd_update()
6388 fru->residue = len; in bfa_fruvpd_update()
6389 fru->offset = 0; in bfa_fruvpd_update()
6390 fru->addr_off = offset; in bfa_fruvpd_update()
6391 fru->ubuf = buf; in bfa_fruvpd_update()
6392 fru->trfr_cmpl = trfr_cmpl; in bfa_fruvpd_update()
6394 bfa_fru_write_send(fru, BFI_FRUVPD_H2I_WRITE_REQ); in bfa_fruvpd_update()
6412 bfa_fruvpd_read(struct bfa_fru_s *fru, void *buf, u32 len, u32 offset, in bfa_fruvpd_read() argument
6415 bfa_trc(fru, BFI_FRUVPD_H2I_READ_REQ); in bfa_fruvpd_read()
6416 bfa_trc(fru, len); in bfa_fruvpd_read()
6417 bfa_trc(fru, offset); in bfa_fruvpd_read()
6419 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2) in bfa_fruvpd_read()
6422 if (fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK && in bfa_fruvpd_read()
6423 fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK2) in bfa_fruvpd_read()
6426 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_fruvpd_read()
6429 if (fru->op_busy) { in bfa_fruvpd_read()
6430 bfa_trc(fru, fru->op_busy); in bfa_fruvpd_read()
6434 fru->op_busy = 1; in bfa_fruvpd_read()
6436 fru->cbfn = cbfn; in bfa_fruvpd_read()
6437 fru->cbarg = cbarg; in bfa_fruvpd_read()
6438 fru->residue = len; in bfa_fruvpd_read()
6439 fru->offset = 0; in bfa_fruvpd_read()
6440 fru->addr_off = offset; in bfa_fruvpd_read()
6441 fru->ubuf = buf; in bfa_fruvpd_read()
6442 bfa_fru_read_send(fru, BFI_FRUVPD_H2I_READ_REQ); in bfa_fruvpd_read()
6456 bfa_fruvpd_get_max_size(struct bfa_fru_s *fru, u32 *max_size) in bfa_fruvpd_get_max_size() argument
6458 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2) in bfa_fruvpd_get_max_size()
6461 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_fruvpd_get_max_size()
6464 if (fru->ioc->attr->card_type == BFA_MFG_TYPE_CHINOOK || in bfa_fruvpd_get_max_size()
6465 fru->ioc->attr->card_type == BFA_MFG_TYPE_CHINOOK2) in bfa_fruvpd_get_max_size()
6484 bfa_tfru_write(struct bfa_fru_s *fru, void *buf, u32 len, u32 offset, in bfa_tfru_write() argument
6487 bfa_trc(fru, BFI_TFRU_H2I_WRITE_REQ); in bfa_tfru_write()
6488 bfa_trc(fru, len); in bfa_tfru_write()
6489 bfa_trc(fru, offset); in bfa_tfru_write()
6490 bfa_trc(fru, *((u8 *) buf)); in bfa_tfru_write()
6492 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2) in bfa_tfru_write()
6495 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_tfru_write()
6498 if (fru->op_busy) { in bfa_tfru_write()
6499 bfa_trc(fru, fru->op_busy); in bfa_tfru_write()
6503 fru->op_busy = 1; in bfa_tfru_write()
6505 fru->cbfn = cbfn; in bfa_tfru_write()
6506 fru->cbarg = cbarg; in bfa_tfru_write()
6507 fru->residue = len; in bfa_tfru_write()
6508 fru->offset = 0; in bfa_tfru_write()
6509 fru->addr_off = offset; in bfa_tfru_write()
6510 fru->ubuf = buf; in bfa_tfru_write()
6512 bfa_fru_write_send(fru, BFI_TFRU_H2I_WRITE_REQ); in bfa_tfru_write()
6530 bfa_tfru_read(struct bfa_fru_s *fru, void *buf, u32 len, u32 offset, in bfa_tfru_read() argument
6533 bfa_trc(fru, BFI_TFRU_H2I_READ_REQ); in bfa_tfru_read()
6534 bfa_trc(fru, len); in bfa_tfru_read()
6535 bfa_trc(fru, offset); in bfa_tfru_read()
6537 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2) in bfa_tfru_read()
6540 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_tfru_read()
6543 if (fru->op_busy) { in bfa_tfru_read()
6544 bfa_trc(fru, fru->op_busy); in bfa_tfru_read()
6548 fru->op_busy = 1; in bfa_tfru_read()
6550 fru->cbfn = cbfn; in bfa_tfru_read()
6551 fru->cbarg = cbarg; in bfa_tfru_read()
6552 fru->residue = len; in bfa_tfru_read()
6553 fru->offset = 0; in bfa_tfru_read()
6554 fru->addr_off = offset; in bfa_tfru_read()
6555 fru->ubuf = buf; in bfa_tfru_read()
6556 bfa_fru_read_send(fru, BFI_TFRU_H2I_READ_REQ); in bfa_tfru_read()
6570 struct bfa_fru_s *fru = fruarg; in bfa_fru_intr() local
6574 bfa_trc(fru, msg->mh.msg_id); in bfa_fru_intr()
6576 if (!fru->op_busy) { in bfa_fru_intr()
6580 bfa_trc(fru, 0x9999); in bfa_fru_intr()
6588 bfa_trc(fru, status); in bfa_fru_intr()
6590 if (status != BFA_STATUS_OK || fru->residue == 0) { in bfa_fru_intr()
6591 fru->status = status; in bfa_fru_intr()
6592 fru->op_busy = 0; in bfa_fru_intr()
6593 if (fru->cbfn) in bfa_fru_intr()
6594 fru->cbfn(fru->cbarg, fru->status); in bfa_fru_intr()
6596 bfa_trc(fru, fru->offset); in bfa_fru_intr()
6598 bfa_fru_write_send(fru, in bfa_fru_intr()
6601 bfa_fru_write_send(fru, in bfa_fru_intr()
6608 bfa_trc(fru, status); in bfa_fru_intr()
6611 fru->status = status; in bfa_fru_intr()
6612 fru->op_busy = 0; in bfa_fru_intr()
6613 if (fru->cbfn) in bfa_fru_intr()
6614 fru->cbfn(fru->cbarg, fru->status); in bfa_fru_intr()
6618 bfa_trc(fru, fru->offset); in bfa_fru_intr()
6619 bfa_trc(fru, len); in bfa_fru_intr()
6621 memcpy(fru->ubuf + fru->offset, fru->dbuf_kva, len); in bfa_fru_intr()
6622 fru->residue -= len; in bfa_fru_intr()
6623 fru->offset += len; in bfa_fru_intr()
6625 if (fru->residue == 0) { in bfa_fru_intr()
6626 fru->status = status; in bfa_fru_intr()
6627 fru->op_busy = 0; in bfa_fru_intr()
6628 if (fru->cbfn) in bfa_fru_intr()
6629 fru->cbfn(fru->cbarg, fru->status); in bfa_fru_intr()
6632 bfa_fru_read_send(fru, in bfa_fru_intr()
6635 bfa_fru_read_send(fru, in bfa_fru_intr()