Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2444625pxa; Mon, 3 Aug 2020 16:43:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwwMeeKJ5Z6lTa0m2IM/EG0VBkL1bw8VnBGp7A7O6XfrrcSeTtS6IW8YE4oAMasoVPHg6pu X-Received: by 2002:a17:906:a24a:: with SMTP id bi10mr18464932ejb.227.1596498181618; Mon, 03 Aug 2020 16:43:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596498181; cv=none; d=google.com; s=arc-20160816; b=HEVrF3JCsmKY5GMEWaX7tL7okKdI1OYavc2ay5z6VaoRmLCbzjRBkAb0C5TwhoZGmu YWMAareO23Mb/+QnuHyjtlUtzd51T3oitAI/5oE/KP86UB4V5xGX5nQHbVMyjoMvp1Cp CVxq3lHVI8UmxRomnOiggg907xB2+6Z7te+xqtK7jl/UESE7dPy+fuN8Aj0b+JMQxLsC 3pYDULhfPbb5lHS9E5aapHJYjFfiI8MWGFlj8tOZVwIuV5K8VoXgZc+7PS8nMkR7YFaM ef5ivumvdc+aEbMH+H6V4HEXF2VH+ShnKFSse2vOlIhWF314Qlod4KZOAx0EoVzPzl+J RgWw== 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=Lln6JBYYKdkFr9fLVLldmukzP3b+qcX1x2upAv1i08M=; b=QlUiLsSzVEPDTq/xR546njVN3gCc1ONGPtnpZaOzHYjwrbIsa3QTTj2l0TsFwvCLxv gMc7eKXxyQSNxTuYDgzqFqBwh2rqDFC/fevRQtHnCLI1TOixfi7dl4oZ7Yc8pXnrtjXP aolYp+h7zk1bBu6yxWcjAmOCgrsC3cVg1aAcYJ+zlrAQvLvBsIsNvUoYC42xfVIEElXZ XveiJCngga0ziaSnV8jeg+4MpEQszcI8OAdGdx/D+caQsKUWiTWiSq1MlmHg/bHA/SKs AmTyKQg8aXS3RbqiFh3P843BKv4rq59DUhArWe3FvJCVJgMtcuwNel6uHiHQfxFxmRlz usLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=H5mu5GLE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z25si10975296ejr.598.2020.08.03.16.42.39; Mon, 03 Aug 2020 16:43:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=H5mu5GLE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729094AbgHCXmS (ORCPT + 99 others); Mon, 3 Aug 2020 19:42:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728996AbgHCXmO (ORCPT ); Mon, 3 Aug 2020 19:42:14 -0400 Received: from mail-io1-xd43.google.com (mail-io1-xd43.google.com [IPv6:2607:f8b0:4864:20::d43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D6876C061757 for ; Mon, 3 Aug 2020 16:42:13 -0700 (PDT) Received: by mail-io1-xd43.google.com with SMTP id l17so40362117iok.7 for ; Mon, 03 Aug 2020 16:42:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Lln6JBYYKdkFr9fLVLldmukzP3b+qcX1x2upAv1i08M=; b=H5mu5GLEbAav9nWv/vcrIv0kD3UYIsL3qvoKbPqU02gHbkTG0Yw4Mai4/Xsr0ZAWbA zJXT4mQuuojDD1UV5GyyTD1XkLIEVCsKuSiKEPFHSeHgRmLD83RxMoV75LGx28K7RBy6 0Y2gAgqxnCLM0YmO/9/tMORLfLrEoEZYC8aXg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Lln6JBYYKdkFr9fLVLldmukzP3b+qcX1x2upAv1i08M=; b=eduyrnIbfIITcXJSkWyfRPut5FP5SxDcwdCOUwUxbUHt7u4TRwC8qSZadfsA++7+1p hFhxkE8qL0sxw2S+Bb52G13PgK5+5jkdMf5DSIe+l7sXXrpS9FqlhPGAcZ4r3oqoWeLT Do2rJl0+cPrJvrAyizGj5Kr/sTXK9obIHZrsOP75mjR9YwkAfPArmGfsnhlVmRIDlwMw PBC4zG8Mh0sdbLgXR8mnZjPnKu/r3pTvx1+uY3Q8o7HtC4iTpnN+uKPNblBZR7pCj5Cx uLa0oY+4t+efncoV4m46HHM+ZlPX2rpAlUy7QK4my2QjLGK7fGjWL2QZmPtc/3W680xI 3AFw== X-Gm-Message-State: AOAM531tgGn2a9m5lFqaqg4jk20cVYMFc1u8JHLj7WT99B7o6XAqyU5S vCBTOcSguTwK8MzYcFC3p5Gh5g== X-Received: by 2002:a6b:b7ce:: with SMTP id h197mr2414554iof.60.1596498133234; Mon, 03 Aug 2020 16:42:13 -0700 (PDT) Received: from derch.Home (97-122-92-59.hlrn.qwest.net. [97.122.92.59]) by smtp.gmail.com with ESMTPSA id g2sm5468435ioe.4.2020.08.03.16.42.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Aug 2020 16:42:12 -0700 (PDT) From: Daniel Campello To: LKML , LKML Cc: Jonathan Cameron , Stephen Boyd , Douglas Anderson , Daniel Campello , Andy Shevchenko , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , linux-iio@vger.kernel.org Subject: [PATCH v4 14/15] iio: sx9310: Enable vdd and svdd regulators at probe Date: Mon, 3 Aug 2020 17:41:53 -0600 Message-Id: <20200803131544.v4.14.Ib7bdc8340021d8515b430498fb6686eedf22c9f2@changeid> X-Mailer: git-send-email 2.28.0.163.g6104cc2f0b6-goog In-Reply-To: <20200803234154.320400-1-campello@chromium.org> References: <20200803234154.320400-1-campello@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Stephen Boyd Enable the main power supply (vdd) and digital IO power supply (svdd) during probe so that the i2c communication and device works properly on boards that aggressively power gate these supplies. Signed-off-by: Stephen Boyd Reviewed-by: Douglas Anderson Signed-off-by: Daniel Campello Reviewed-by: Andy Shevchenko --- Changes in v4: None Changes in v3: None Changes in v2: None drivers/iio/proximity/sx9310.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/iio/proximity/sx9310.c b/drivers/iio/proximity/sx9310.c index 2e0ea84dba2118..a6e345bb9ffe5c 100644 --- a/drivers/iio/proximity/sx9310.c +++ b/drivers/iio/proximity/sx9310.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -119,6 +120,7 @@ struct sx9310_data { struct i2c_client *client; struct iio_trigger *trig; struct regmap *regmap; + struct regulator_bulk_data supplies[2]; /* * Last reading of the proximity status for each channel. * We only send an event to user space when this changes. @@ -875,6 +877,13 @@ static int sx9310_set_indio_dev_name(struct device *dev, return 0; } +static void sx9310_regulator_disable(void *_data) +{ + struct sx9310_data *data = _data; + + regulator_bulk_disable(ARRAY_SIZE(data->supplies), data->supplies); +} + static int sx9310_probe(struct i2c_client *client) { int ret; @@ -888,6 +897,8 @@ static int sx9310_probe(struct i2c_client *client) data = iio_priv(indio_dev); data->client = client; + data->supplies[0].supply = "vdd"; + data->supplies[1].supply = "svdd"; mutex_init(&data->mutex); init_completion(&data->completion); @@ -895,6 +906,21 @@ static int sx9310_probe(struct i2c_client *client) if (IS_ERR(data->regmap)) return PTR_ERR(data->regmap); + ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(data->supplies), + data->supplies); + if (ret) + return ret; + + ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies); + if (ret) + return ret; + /* Must wait for Tpor time after initial power up */ + usleep_range(1000, 1100); + + ret = devm_add_action_or_reset(dev, sx9310_regulator_disable, data); + if (ret) + return ret; + ret = regmap_read(data->regmap, SX9310_REG_WHOAMI, &data->whoami); if (ret) { dev_err(dev, "error in reading WHOAMI register: %d\n", ret); -- 2.28.0.163.g6104cc2f0b6-goog