Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5900872ybl; Tue, 10 Dec 2019 13:26:18 -0800 (PST) X-Google-Smtp-Source: APXvYqyT4shPqQm6A3KKDSxl5zZYtyFrwyfLV520vQ+tDeG65BWyAxfA8AK7S1nHG+bLVhcqCQtN X-Received: by 2002:a9d:4f0e:: with SMTP id d14mr9236836otl.90.1576013178484; Tue, 10 Dec 2019 13:26:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576013178; cv=none; d=google.com; s=arc-20160816; b=c1NECEgP5GyVJ6TG/38NNy59Ok16WOloqzFuTCb8Ej+yYtoeYNlKRD8MnnTYDI1Gv3 7x5ZpBUoUw5hAvEkqifLwFdEAjEoTuVNH//zuJJmczNmI5Yw9UK/kkUKz934Shc0NZl7 ukfbAMyBL8b8ViEzVTtL/mBtuVwPCJa8Cdf5n6Wsa2wIGRLSHJLAAhXVMegvS/5Ebz5d 87AV4X3LM5IEN4I/hFsqlXh+dqOADSulS9SB9EXGWMLYREneNNKeD5/eQucSp+PGhMrA Pd0erEcPn5MCBINe7enNbE8AgwOPiwWrcAPNgKHtEAxPTv74NOL5MkaPgQeuNDf2VaT+ NhEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4UvkH5iRIoewkQEkk8ZjttFo5uR+f9A4Uf1/D1ydaoQ=; b=X3PUWPQYCk6XaSVn5fzPW7jT48+JUUUJm+8A7OFTHi1W9C1djFfowOkSrOXpNK5lw7 x3otQu0XYzTfVwiLx8TMSJbuRUZ4oDwg6BWwxMNpXdOU4uo1K5ObnqKyLdOw2ThFh6mu Xk8FDVxY7+xGr9ZLowp8S/LemLQmK2X3mLff+N/PCRgixJFtU9/E7QC+sAp//J+tyeUI CfL9wnP2zIqfjyf2H3C3ItnXVyNCOrvngHhxZbXrbaPbHBJsBn0cuffv+po4j6a0h17l N8P0DCM/xWKZtxCQ/d2dIDKi9OaAtPVkBZnWQjlnTOF6mHWopfUeJD9H/SRfieGDcowc tCXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UBTrp2qJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p28si2571157oth.296.2019.12.10.13.26.06; Tue, 10 Dec 2019 13:26:18 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UBTrp2qJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727673AbfLJVZl (ORCPT + 99 others); Tue, 10 Dec 2019 16:25:41 -0500 Received: from mail.kernel.org ([198.145.29.99]:56506 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729499AbfLJVZ3 (ORCPT ); Tue, 10 Dec 2019 16:25:29 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6AA0420836; Tue, 10 Dec 2019 21:25:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576013129; bh=8sQZi92LYMSGs3wG0gKqFzU+WlXbbH0AzH5Aku7580E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UBTrp2qJ7Q9h5G2sM3sjdYSIVBYYsSD1GyljiSeVIzj76U27a+oKeaFOVAvjjcFop eKyM7neXRGzdbofm74dKuOrP5XWahPw5aaN+s2eqGPwPNpky/1Hbo0gudnjnSSrB+7 9ahgxWuRUyfUUNUogcVTuwLhosRJPSVxPJv8FraU= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Alexandru Ardelean , Jonathan Cameron , Sasha Levin , linux-iio@vger.kernel.org Subject: [PATCH AUTOSEL 5.3 014/292] iio: tcs3414: fix iio_triggered_buffer_{pre,post}enable positions Date: Tue, 10 Dec 2019 16:20:33 -0500 Message-Id: <20191210212511.11392-14-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191210212511.11392-1-sashal@kernel.org> References: <20191210212511.11392-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexandru Ardelean [ Upstream commit 0fe2f2b789190661df24bb8bf62294145729a1fe ] The iio_triggered_buffer_{predisable,postenable} functions attach/detach the poll functions. For the predisable hook, the disable code should occur before detaching the poll func, and for the postenable hook, the poll func should be attached before the enable code. The driver was slightly reworked. The preenable hook was moved to the postenable, to add some symmetry to the postenable/predisable part. Signed-off-by: Alexandru Ardelean Signed-off-by: Jonathan Cameron Signed-off-by: Sasha Levin --- drivers/iio/light/tcs3414.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/drivers/iio/light/tcs3414.c b/drivers/iio/light/tcs3414.c index 7c0291c5fe76e..b542e5619ead8 100644 --- a/drivers/iio/light/tcs3414.c +++ b/drivers/iio/light/tcs3414.c @@ -240,32 +240,42 @@ static const struct iio_info tcs3414_info = { .attrs = &tcs3414_attribute_group, }; -static int tcs3414_buffer_preenable(struct iio_dev *indio_dev) +static int tcs3414_buffer_postenable(struct iio_dev *indio_dev) { struct tcs3414_data *data = iio_priv(indio_dev); + int ret; + + ret = iio_triggered_buffer_postenable(indio_dev); + if (ret) + return ret; data->control |= TCS3414_CONTROL_ADC_EN; - return i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL, + ret = i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL, data->control); + if (ret) + iio_triggered_buffer_predisable(indio_dev); + + return ret; } static int tcs3414_buffer_predisable(struct iio_dev *indio_dev) { struct tcs3414_data *data = iio_priv(indio_dev); - int ret; - - ret = iio_triggered_buffer_predisable(indio_dev); - if (ret < 0) - return ret; + int ret, ret2; data->control &= ~TCS3414_CONTROL_ADC_EN; - return i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL, + ret = i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL, data->control); + + ret2 = iio_triggered_buffer_predisable(indio_dev); + if (!ret) + ret = ret2; + + return ret; } static const struct iio_buffer_setup_ops tcs3414_buffer_setup_ops = { - .preenable = tcs3414_buffer_preenable, - .postenable = &iio_triggered_buffer_postenable, + .postenable = tcs3414_buffer_postenable, .predisable = tcs3414_buffer_predisable, }; -- 2.20.1