Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5879768ybl; Tue, 10 Dec 2019 13:05:36 -0800 (PST) X-Google-Smtp-Source: APXvYqzbxTDe0T4k/5+WrBxIQOZt7xA7U7AMic3haekWUQuxQ/jwxFk1UXCembqFKqsz1pVmnUnh X-Received: by 2002:a54:4e8d:: with SMTP id c13mr821382oiy.27.1576011935987; Tue, 10 Dec 2019 13:05:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576011935; cv=none; d=google.com; s=arc-20160816; b=Wj5VNzyB2lTTmGVTJjIPS3iCuzrWDwxFpadvPPHZObsPd3CmNn/49D/eP8wQovHIoh P4ZRNqsut5uup2wNINggL2IIKs/jilEyAevvMETTSIaMOWcLggfMuxf+gsSWCFOvVz6p UkuGDMYHVYGQTg29mXtXmyg4PGv3oK4wfTDJT4rUrYxzwAzjQ1uO6vPAZirBPxtM+Caw IHPTIr9zQ7cDTmywjny6qqkKCyBpJ8FmJa36yfndtIziUJc03vsSOM6b9PWGLiBmFVfb XCqRHSi1ld8/mvutFQdgZV3WRvJU45dXEpkedtLE2ptgJ8utJU07kKuMgJGpvAKwOMxB Z0KA== 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=GL8p/f4al4GR5ODaxPQiaNiKS+NTZ8lm+2iW04vsVPhE4lEoj6di9jesHKPhvNS0gm PjTmjnViB4WxUM/x++mqwsNdYBno7/dqAbLJK4J9hqVzojAt6CZ+JkzHD24lQGbY7mAt 7Y6LaLKErrdmXpoqeh9WXmCFJXUSYgDeJrgncAW6CBh/kBwBEP59jOAEExF+a9GsrQna U0A5YaA/PTxVECfIO7Pv3EIx9QRLHUBUOFAQRInLDoO5Vex53lUkf/MVy7bvDeffMMCE +ULURFPV/pJpgYC49INUa8Cn6tXloFT1MhOseHoJwX9Zk+ppgzSgDCOH8wTs8unP8lV2 psRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=GYWzKvMm; 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 65si2591140otw.256.2019.12.10.13.05.23; Tue, 10 Dec 2019 13:05:35 -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=GYWzKvMm; 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 S1727317AbfLJVEc (ORCPT + 99 others); Tue, 10 Dec 2019 16:04:32 -0500 Received: from mail.kernel.org ([198.145.29.99]:49434 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727257AbfLJVE1 (ORCPT ); Tue, 10 Dec 2019 16:04:27 -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 EE4EA24654; Tue, 10 Dec 2019 21:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576011866; bh=8sQZi92LYMSGs3wG0gKqFzU+WlXbbH0AzH5Aku7580E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GYWzKvMmotEGSTwHac1rIRFATAANTKlw+VfCRxwecWiuGmROSbdnqBsHEPtkIlBQ4 /uATLyNi+Lp9qvXJiHH+Wi/eudEfEeoRkiUGa6NRFW23ZKZH+a6JiuorH0qv0c2+sl QgbtwrWej8gZK9ia0R+ZNIODkHcs9XDNA9DvZ4rk= 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.4 019/350] iio: tcs3414: fix iio_triggered_buffer_{pre,post}enable positions Date: Tue, 10 Dec 2019 15:58:31 -0500 Message-Id: <20191210210402.8367-19-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191210210402.8367-1-sashal@kernel.org> References: <20191210210402.8367-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