return (data >> (ACPM_PMIC_BULK_SHIFT * i)) & ACPM_PMIC_BULK_MASK;
 }
 
-static void acpm_pmic_set_xfer(struct acpm_xfer *xfer, u32 *cmd,
+static void acpm_pmic_set_xfer(struct acpm_xfer *xfer, u32 *cmd, size_t cmdlen,
                               unsigned int acpm_chan_id)
 {
        xfer->txd = cmd;
        xfer->rxd = cmd;
-       xfer->txlen = sizeof(cmd);
-       xfer->rxlen = sizeof(cmd);
+       xfer->txlen = cmdlen;
+       xfer->rxlen = cmdlen;
        xfer->acpm_chan_id = acpm_chan_id;
 }
 
        int ret;
 
        acpm_pmic_init_read_cmd(cmd, type, reg, chan);
-       acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id);
+       acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id);
 
        ret = acpm_do_xfer(handle, &xfer);
        if (ret)
                return -EINVAL;
 
        acpm_pmic_init_bulk_read_cmd(cmd, type, reg, chan, count);
-       acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id);
+       acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id);
 
        ret = acpm_do_xfer(handle, &xfer);
        if (ret)
        int ret;
 
        acpm_pmic_init_write_cmd(cmd, type, reg, chan, value);
-       acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id);
+       acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id);
 
        ret = acpm_do_xfer(handle, &xfer);
        if (ret)
                return -EINVAL;
 
        acpm_pmic_init_bulk_write_cmd(cmd, type, reg, chan, count, buf);
-       acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id);
+       acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id);
 
        ret = acpm_do_xfer(handle, &xfer);
        if (ret)
        int ret;
 
        acpm_pmic_init_update_cmd(cmd, type, reg, chan, value, mask);
-       acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id);
+       acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id);
 
        ret = acpm_do_xfer(handle, &xfer);
        if (ret)