> +static int pd692x0_send_msg(struct pd692x0_priv *priv, struct pd692x0_msg *msg) > +{ > + const struct i2c_client *client = priv->client; > + int ret; > + > + if (msg->content.key == PD692X0_KEY_CMD && priv->last_cmd_key) { > + while (time_is_after_jiffies(msecs_to_jiffies(30) + priv->last_cmd_key_time)) > + usleep_range(1000, 2000); That is a bit odd. Could you not just calculate how long a sleep is needed, rather than loop? Andrew