From patchwork Tue Apr 5 05:59:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivaylo Dimitrov X-Patchwork-Id: 8747821 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 2F3D19F336 for ; Tue, 5 Apr 2016 06:00:36 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4CBAA202F0 for ; Tue, 5 Apr 2016 06:00:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4360C2028D for ; Tue, 5 Apr 2016 06:00:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757352AbcDEGAJ (ORCPT ); Tue, 5 Apr 2016 02:00:09 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34936 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753938AbcDEGAF (ORCPT ); Tue, 5 Apr 2016 02:00:05 -0400 Received: by mail-wm0-f67.google.com with SMTP id a140so1306392wma.2; Mon, 04 Apr 2016 23:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=LBBjrjmw2VQ6WuPJWA+s/zpcx5kJilx/FEG2FUX4/PQ=; b=fEOod+9nExD2au0F/TBUkitxQPyWFqI2OSS1xvmONfGBOgVbSmNt0KeuwNB7tbSWZ2 D36dt/uzMSB0sv8EzAbzchZ7Ry+9OS6pWgIYeqeYCuifEAVqsuMwY8dYNUviT7zqG/FV OSLtY3CVt6aiC4UpmPrhN2amq3My/pV8dLzSr+mjzVzBZPTIijxZi0/OBQpQgm3ywXG+ ULe8svhPp5CyJK8dnFnE60OL9h5wRtFclSl+039tRqXFGddLjcAfqD2DPvEc9xqDCnS5 255OMZxhZptZISa6d2XBApacIVDjK5OyoSfWljVIZng7dfge8Wyevcdz2dR97+T9Aae3 5mUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=LBBjrjmw2VQ6WuPJWA+s/zpcx5kJilx/FEG2FUX4/PQ=; b=LQBAQAaeR4AvZCfqb3cM1l0dDxWLCioxZPn6XcjPNi1Xn8fqgmXjYGM9hb+vZrtfnB T7duVyPTnh6nC+Xo4WwZ5MrayK5gKCTPz/hG01g1+s65qP6co7WaIcgk0cdCh/Y5PNP9 XGMi+tQwbNZLHhuWaDTIHL8IWfaxU3DL5SNzGL+pFFOcyNBkZPxN5Or7K8dSt78PFelT XjHnj/yGX5xSd8axHLerW/MYTonTkaMKmv8LcbDioKKNTKgPLr8QjYfye4KWrtpQkeBa vKCoYjU7jufiZEsqoXKLsqPAaYg5c/OdoZjYdvj7s4lMNKXhTPK3dQ7tZnz1Aknz9zC4 oz0w== X-Gm-Message-State: AD7BkJK9skIGCA/noTEzsJ/8hhS+uxA+KUCGSXUjR54ISLkmrB/n+t95y+rd8e+dFM54HA== X-Received: by 10.194.84.2 with SMTP id u2mr21908369wjy.61.1459836002855; Mon, 04 Apr 2016 23:00:02 -0700 (PDT) Received: from localhost.localdomain ([46.249.74.23]) by smtp.gmail.com with ESMTPSA id 198sm17614562wml.22.2016.04.04.23.00.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 04 Apr 2016 23:00:02 -0700 (PDT) From: Ivaylo Dimitrov To: broonie@kernel.org, robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com, ijc+devicetree@hellion.org.uk, galak@codeaurora.org, tony@atomide.com, lgirdwood@gmail.com Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Ivaylo Dimitrov Subject: [PATCH v1] regulator: twl: Provide of_map_mode for twl4030 Date: Tue, 5 Apr 2016 08:59:34 +0300 Message-Id: <1459835974-31664-1-git-send-email-ivo.g.dimitrov.75@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <20160404222638.GM2350@sirena.org.uk> References: <20160404222638.GM2350@sirena.org.uk> Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP of_map_mode is needed so to be possible to set initial regulators mode from the board DTS. Otherwise, for DT boot, regulators are left in their default state after reset/reboot. Document device specific modes as well. Signed-off-by: Ivaylo Dimitrov Acked-by: Rob Herring --- .../bindings/regulator/twl-regulator.txt | 6 ++++++ drivers/regulator/twl-regulator.c | 22 +++++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/regulator/twl-regulator.txt b/Documentation/devicetree/bindings/regulator/twl-regulator.txt index 75b0c16..74a91c4 100644 --- a/Documentation/devicetree/bindings/regulator/twl-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/twl-regulator.txt @@ -57,6 +57,12 @@ For twl4030 regulators/LDOs Optional properties: - Any optional property defined in bindings/regulator/regulator.txt +For twl4030 regulators/LDOs: + - regulator-initial-mode: + - 0x08 - Sleep mode, the nominal output voltage is maintained with low power + consumption with low load current capability. + - 0x0e - Active mode, the regulator can deliver its nominal output voltage + with full-load current capability. Example: diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c index aad748b0..53fcbb0 100644 --- a/drivers/regulator/twl-regulator.c +++ b/drivers/regulator/twl-regulator.c @@ -395,6 +395,18 @@ static int twl4030reg_set_mode(struct regulator_dev *rdev, unsigned mode) return twl4030_send_pb_msg(message); } +static inline unsigned int twl4030reg_map_mode(unsigned int mode) +{ + switch (mode) { + case RES_STATE_ACTIVE: + return REGULATOR_MODE_NORMAL; + case RES_STATE_SLEEP: + return REGULATOR_MODE_STANDBY; + default: + return -EINVAL; + } +} + static int twl6030reg_set_mode(struct regulator_dev *rdev, unsigned mode) { struct twlreg_info *info = rdev_get_drvdata(rdev); @@ -897,10 +909,11 @@ static struct regulator_ops twlsmps_ops = { #define TWL4030_FIXED_LDO(label, offset, mVolts, num, turnon_delay, \ remap_conf) \ TWL_FIXED_LDO(label, offset, mVolts, num, turnon_delay, \ - remap_conf, TWL4030, twl4030fixed_ops) + remap_conf, TWL4030, twl4030fixed_ops, \ + twl4030reg_map_mode) #define TWL6030_FIXED_LDO(label, offset, mVolts, turnon_delay) \ TWL_FIXED_LDO(label, offset, mVolts, 0x0, turnon_delay, \ - 0x0, TWL6030, twl6030fixed_ops) + 0x0, TWL6030, twl6030fixed_ops, 0x0) #define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_conf) \ static const struct twlreg_info TWL4030_INFO_##label = { \ @@ -917,6 +930,7 @@ static const struct twlreg_info TWL4030_INFO_##label = { \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE, \ .enable_time = turnon_delay, \ + .of_map_mode = twl4030reg_map_mode, \ }, \ } @@ -932,6 +946,7 @@ static const struct twlreg_info TWL4030_INFO_##label = { \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE, \ .enable_time = turnon_delay, \ + .of_map_mode = twl4030reg_map_mode, \ }, \ } @@ -977,7 +992,7 @@ static const struct twlreg_info TWL6032_INFO_##label = { \ } #define TWL_FIXED_LDO(label, offset, mVolts, num, turnon_delay, remap_conf, \ - family, operations) \ + family, operations, map_mode) \ static const struct twlreg_info TWLFIXED_INFO_##label = { \ .base = offset, \ .id = num, \ @@ -992,6 +1007,7 @@ static const struct twlreg_info TWLFIXED_INFO_##label = { \ .owner = THIS_MODULE, \ .min_uV = mVolts * 1000, \ .enable_time = turnon_delay, \ + .of_map_mode = map_mode, \ }, \ }