> +/**
> + * mucse_mbx_powerup - Echo fw to powerup
> + * @hw: pointer to the HW structure
> + * @is_powerup: true for powerup, false for powerdown
> + *
> + * mucse_mbx_powerup echo fw to change working frequency
> + * to normal after received true, and reduce working frequency
> + * if false.
> + *
> + * Return: 0 on success, negative errno on failure
> + **/
> +int mucse_mbx_powerup(struct mucse_hw *hw, bool is_powerup)
> +{
> +     struct mbx_fw_cmd_req req = {};
> +     int len;
> +     int err;
> +
> +     build_powerup(&req, is_powerup);
> +     len = le16_to_cpu(req.datalen);
> +     mutex_lock(&hw->mbx.lock);
> +
> +     if (is_powerup) {
> +             err = mucse_write_posted_mbx(hw, (u32 *)&req,
> +                                          len);
> +     } else {
> +             err = mucse_write_mbx_pf(hw, (u32 *)&req,
> +                                      len);
> +     }

It looks odd that this is asymmetric. Why is a different low level
function used between power up and power down?

> +int mucse_mbx_reset_hw(struct mucse_hw *hw)
> +{
> +     struct mbx_fw_cmd_reply reply = {};
> +     struct mbx_fw_cmd_req req = {};
> +
> +     build_reset_hw_req(&req);
> +     return mucse_fw_send_cmd_wait(hw, &req, &reply);
> +}

And this uses a third low level API different to power up and power
down?

        Andrew

Reply via email to