
int spi_sync(struct spi_device *spi, struct spi_message *message)
{
    int ret;
    bool need_unlock = false;

    if (spi && spi->controller) {
        mutex_lock(&spi->controller->bus_lock_mutex);
        need_unlock = true;
    }

    ret = __spi_sync(spi, message);

    if (need_unlock && spi && spi->controller)
        mutex_unlock(&spi->controller->bus_lock_mutex);

    return ret;
}
