Received: by 2002:a25:ca44:0:0:0:0:0 with SMTP id a65csp377148ybg; Tue, 28 Jul 2020 08:15:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxhS7B/FWv4MJKxA//JvLutB0WsVf6DwjpLNr5Bb2avO01ns7UCGbGEPJxZ6hO6wm/EBX8Q X-Received: by 2002:a17:906:af72:: with SMTP id os18mr19180312ejb.43.1595949302303; Tue, 28 Jul 2020 08:15:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595949302; cv=none; d=google.com; s=arc-20160816; b=ThSLqYpVR4O1YK0ZC9J9HXj5Yy5js4Aa6EtzHnoUrTjinWPXMXTmxfu0RFo6lFjBTx 7Zju/ngHYV7lkhYCnc4QuxBkLjpGIeVb3KjMYS+mLlwxnnvFnAWfQIoHLERApLoxRqmx KWhMo7+yVnhL5e41cdtE/8inBziPLHI4Y/GEwwtumzh8fya1COGKDDbxFZCm3581gSOq VF/wyTfKYHMwvjJXA9Uh3ybjUUFH9YxAd1zg+GO5copbV8tiA0mmtRQ1NxJ0dZz0qIM7 G4YBiGCJ+tM+M9YP8JMoOeRrjwjgLVX8xJHaH/W/zygETmDREHgIJAyoIv/WdvkbzT43 UjTg== 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=7g2DMS0FPIZ0c5BtsKEx2bDwtPiWXmFL4GsCilJV19I=; b=Lxo2YbUxhSybOFMfKlK5gBiR1stofNRgpkqYmqjIXwL4HgwCJ87rsPs8S63ij1tEc1 jDSNq+p52tK7ctv8fyDydP+4Mw1ONGDdlC4CgKHHECh1uMhLCmCuhUVYpQuDx7HTVdVk u2y/ucpvT0u63ycfwjjm8dCsjJxlDOkROt6QAX+pmTVVdLPeWLA+9Zstgd2oTyhsLZij N8d9EGmTjRltTC18V4w+xnkdjXEBC6BjvnWv/O880FenRxJ7NDGZZy0eJIwGGe2GMG54 M7/OFhJsbpGmTdsjJBb+oOFfDewAqCBGCWdCLXKe0Kit/vhmvdsXR1QbwNtaAlEb7hRf dSfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=d8eleb4M; 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 f11si6460985edn.492.2020.07.28.08.14.39; Tue, 28 Jul 2020 08:15:02 -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=d8eleb4M; 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 S1730670AbgG1PNh (ORCPT + 99 others); Tue, 28 Jul 2020 11:13:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42442 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730784AbgG1PN2 (ORCPT ); Tue, 28 Jul 2020 11:13:28 -0400 Received: from mail-io1-xd42.google.com (mail-io1-xd42.google.com [IPv6:2607:f8b0:4864:20::d42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2C60CC0619D2 for ; Tue, 28 Jul 2020 08:13:28 -0700 (PDT) Received: by mail-io1-xd42.google.com with SMTP id e64so21074995iof.12 for ; Tue, 28 Jul 2020 08:13:28 -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=7g2DMS0FPIZ0c5BtsKEx2bDwtPiWXmFL4GsCilJV19I=; b=d8eleb4MBB+74R1FQdN2sLvMwPOupEBPNEhXpr/In2/on2ERcbEHLNR3MN4sMtCY05 fIlogS5Gf6IXBuMpceoXrgCKjfhKhFV7MtwSoPBvWnfmg0WeuppStmahExFke5V6klPt aTVh5lRzw6ZPFueGvBUn33rKXHIZZVLLNqaZ4= 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=7g2DMS0FPIZ0c5BtsKEx2bDwtPiWXmFL4GsCilJV19I=; b=p2eI+WGlz4gwG3Ep7ir2NFxsdWr+IiylbwOMYbm2FJMeVQG0MZyY2QhDsF5fFo+5ZA bD1wKBGI2XJMFKzqCc9XChBfFTZ45dY0nFTG/9lAD1Plu+YAgAX1DmAikfQZsTlm59rd 9IEszWE9SH742Inq7Kdy4ZE92cFN8jOgNgjI4kgT/Ul0f7U9am5/F0754FtKu9ouZJw3 2hFsouOFIK350nPwl/xDk2HNwH23CJLfN+Y1ehyTDa3GCagOeOXfPDatSL4GCR406nqI sZfVVQ3IEZgnBvCC5MJutCl3BS0xa6PkpFilz9O85Xj8jXTMULqWIKmfDaCY7Y6hzppY ebGQ== X-Gm-Message-State: AOAM533M4X1uXoxY50quifmkOCPz8R5resFj27r5fDJ8AwgBun/tGa/b NAL7TnMlHGI+1i2+V2yaaIF6WA== X-Received: by 2002:a02:ec4:: with SMTP id 187mr31580705jae.11.1595949207095; Tue, 28 Jul 2020 08:13:27 -0700 (PDT) Received: from derch.Home (97-122-92-59.hlrn.qwest.net. [97.122.92.59]) by smtp.gmail.com with ESMTPSA id q70sm6399781ili.49.2020.07.28.08.13.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jul 2020 08:13:26 -0700 (PDT) From: Daniel Campello To: LKML , LKML Cc: Jonathan Cameron , Stephen Boyd , Douglas Anderson , Daniel Campello , Enrico Granata , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , linux-iio@vger.kernel.org Subject: [PATCH 15/15] iio: sx9310: Enable vdd and svdd regulators at probe Date: Tue, 28 Jul 2020 09:12:58 -0600 Message-Id: <20200728091057.15.Iaf4d717d1908ef22c88922b556e1eb803ae019c6@changeid> X-Mailer: git-send-email 2.28.0.rc0.142.g3c755180ce-goog In-Reply-To: <20200728151258.1222876-1-campello@chromium.org> References: <20200724183954.1.I2e29ae25368ba8a72a9e44121cfbc36ead8ecc6b@changeid> <20200728151258.1222876-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. Reviewed-by: Douglas Anderson Signed-off-by: Stephen Boyd Signed-off-by: Daniel Campello --- 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 202018b726e32f..24a2360b6314ef 100644 --- a/drivers/iio/proximity/sx9310.c +++ b/drivers/iio/proximity/sx9310.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -118,6 +119,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. @@ -873,6 +875,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; @@ -886,6 +895,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); @@ -893,6 +904,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.rc0.142.g3c755180ce-goog