mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 00:21:32 +00:00
scsi: pm80xx: tag allocation for phy control request.
tag is taken from the tag pool instead of using the hardcoded tag value(1). Signed-off-by: Deepak Ukey <deepak.ukey@microsemi.com> Signed-off-by: Viswas G <Viswas.G@microsemi.com> Acked-by: Jack Wang <jinpu.wang@profitbricks.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
6c85e4bcfd
commit
25c6edbde2
@ -3198,11 +3198,13 @@ pm8001_mpi_get_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb)
|
||||
|
||||
int pm8001_mpi_local_phy_ctl(struct pm8001_hba_info *pm8001_ha, void *piomb)
|
||||
{
|
||||
u32 tag;
|
||||
struct local_phy_ctl_resp *pPayload =
|
||||
(struct local_phy_ctl_resp *)(piomb + 4);
|
||||
u32 status = le32_to_cpu(pPayload->status);
|
||||
u32 phy_id = le32_to_cpu(pPayload->phyop_phyid) & ID_BITS;
|
||||
u32 phy_op = le32_to_cpu(pPayload->phyop_phyid) & OP_BITS;
|
||||
tag = le32_to_cpu(pPayload->tag);
|
||||
if (status != 0) {
|
||||
PM8001_MSG_DBG(pm8001_ha,
|
||||
pm8001_printk("%x phy execute %x phy op failed!\n",
|
||||
@ -3211,6 +3213,7 @@ int pm8001_mpi_local_phy_ctl(struct pm8001_hba_info *pm8001_ha, void *piomb)
|
||||
PM8001_MSG_DBG(pm8001_ha,
|
||||
pm8001_printk("%x phy execute %x phy op success!\n",
|
||||
phy_id, phy_op));
|
||||
pm8001_tag_free(pm8001_ha, tag);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -4500,17 +4500,20 @@ static int pm80xx_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha,
|
||||
static int pm80xx_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha,
|
||||
u32 phyId, u32 phy_op)
|
||||
{
|
||||
u32 tag;
|
||||
int rc;
|
||||
struct local_phy_ctl_req payload;
|
||||
struct inbound_queue_table *circularQ;
|
||||
int ret;
|
||||
u32 opc = OPC_INB_LOCAL_PHY_CONTROL;
|
||||
memset(&payload, 0, sizeof(payload));
|
||||
rc = pm8001_tag_alloc(pm8001_ha, &tag);
|
||||
if (rc)
|
||||
return rc;
|
||||
circularQ = &pm8001_ha->inbnd_q_tbl[0];
|
||||
payload.tag = cpu_to_le32(1);
|
||||
payload.tag = cpu_to_le32(tag);
|
||||
payload.phyop_phyid =
|
||||
cpu_to_le32(((phy_op & 0xFF) << 8) | (phyId & 0xFF));
|
||||
ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
|
||||
return ret;
|
||||
return pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
|
||||
}
|
||||
|
||||
static u32 pm80xx_chip_is_our_interupt(struct pm8001_hba_info *pm8001_ha)
|
||||
|
Loading…
Reference in New Issue
Block a user