in spmi-pmic-arb.c [393:411]
static int pmic_arb_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
u16 addr, u8 *buf, size_t len)
{
struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl);
unsigned long flags;
u32 cmd, offset;
int rc;
rc = pmic_arb_fmt_read_cmd(pmic_arb, opc, sid, addr, len, &cmd,
&offset);
if (rc)
return rc;
raw_spin_lock_irqsave(&pmic_arb->lock, flags);
rc = pmic_arb_read_cmd_unlocked(ctrl, cmd, offset, sid, addr, buf, len);
raw_spin_unlock_irqrestore(&pmic_arb->lock, flags);
return rc;
}