static void ads7846_disable(struct ads7846 *ts)
{
- mutex_lock(&ts->lock);
+ guard(mutex)(&ts->lock);
if (!ts->disabled) {
ts->disabled = true;
}
-
- mutex_unlock(&ts->lock);
}
static void ads7846_enable(struct ads7846 *ts)
{
- mutex_lock(&ts->lock);
+ guard(mutex)(&ts->lock);
if (ts->disabled) {
if (!ts->suspended)
__ads7846_enable(ts);
}
-
- mutex_unlock(&ts->lock);
}
/*--------------------------------------------------------------------------*/
{
struct spi_device *spi = to_spi_device(dev);
struct ads7846 *ts = dev_get_drvdata(dev);
- struct ser_req *req;
int status;
- req = kzalloc_obj(*req);
+ struct ser_req *req __free(kfree) = kzalloc_obj(*req);
if (!req)
return -ENOMEM;
CS_CHANGE(req->xfer[7]);
spi_message_add_tail(&req->xfer[7], &req->msg);
- mutex_lock(&ts->lock);
- ads7846_stop(ts);
- status = spi_sync(spi, &req->msg);
- ads7846_restart(ts);
- mutex_unlock(&ts->lock);
+ scoped_guard(mutex, &ts->lock) {
+ ads7846_stop(ts);
+ status = spi_sync(spi, &req->msg);
+ ads7846_restart(ts);
+ }
if (status == 0) {
/* on-wire is a must-ignore bit, a BE12 value, then padding */
status &= 0x0fff;
}
- kfree(req);
return status;
}
{
struct spi_device *spi = to_spi_device(dev);
struct ads7846 *ts = dev_get_drvdata(dev);
- struct ads7845_ser_req *req;
int status;
- req = kzalloc_obj(*req);
+ struct ads7845_ser_req *req __free(kfree) = kzalloc_obj(*req);
if (!req)
return -ENOMEM;
req->xfer[0].len = 3;
spi_message_add_tail(&req->xfer[0], &req->msg);
- mutex_lock(&ts->lock);
- ads7846_stop(ts);
- status = spi_sync(spi, &req->msg);
- ads7846_restart(ts);
- mutex_unlock(&ts->lock);
+ scoped_guard(mutex, &ts->lock) {
+ ads7846_stop(ts);
+ status = spi_sync(spi, &req->msg);
+ ads7846_restart(ts);
+ }
if (status == 0) {
/* BE12 value, then padding */
status &= 0x0fff;
}
- kfree(req);
return status;
}
{
struct ads7846 *ts = dev_get_drvdata(dev);
- mutex_lock(&ts->lock);
+ guard(mutex)(&ts->lock);
if (!ts->suspended) {
ts->suspended = true;
}
- mutex_unlock(&ts->lock);
-
return 0;
}
{
struct ads7846 *ts = dev_get_drvdata(dev);
- mutex_lock(&ts->lock);
+ guard(mutex)(&ts->lock);
if (ts->suspended) {
__ads7846_enable(ts);
}
- mutex_unlock(&ts->lock);
-
return 0;
}