From patchwork Mon Oct 26 10:36:40 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alim Akhtar X-Patchwork-Id: 535820 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-ob0-x23a.google.com (mail-ob0-x23a.google.com [IPv6:2607:f8b0:4003:c01::23a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 22045140E4A for ; Mon, 26 Oct 2015 21:47:13 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.b=XBqUW3Zx; dkim-atps=neutral Received: by obbza9 with SMTP id za9sf17819024obb.1 for ; Mon, 26 Oct 2015 03:47:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=mime-version:from:to:cc:subject:date:message-id:in-reply-to :references:dlp-filter:x-original-sender :x-original-authentication-results:reply-to:content-type:precedence :mailing-list:list-id:x-spam-checked-in-group:list-post:list-help :list-archive:sender:list-subscribe:list-unsubscribe; bh=YlerkGBbEz9csl2QcvWkmYwdzyTqDWqk7ZbA6tTpbJ4=; b=XBqUW3ZxCx4YrgiUI/YjYHrarYT4KXX829fWXd8AYdSCj7ulidUJIuOTVscUUp9I3k LQYl9viZKD4A31dbQecI1FX4zrsRE6NGcNQ9WKK08SyiZwlusaJfnqzI7wGjD87NbcaK CYPzXwXpkm8L1Cl8FnWhwJTJw+ATKnPs8G6DSMiOKHPRPQb5CXVSCUlhfAzCPXlQjSc5 a+cZHqmQQUqagZbqOv3/xcSXl7aWdCnpE2/AAN1L1qaa0O31nrc0ZfZnjN938R7N+ftO YMY0RjzVKKoJI2ZXlKNgKRb1xF4HGgLmx65crUtp7xtCvbETB60JS9hu+PcXPpCftzvG XV1w== X-Received: by 10.50.67.179 with SMTP id o19mr290373igt.3.1445856431181; Mon, 26 Oct 2015 03:47:11 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: rtc-linux@googlegroups.com Received: by 10.50.4.66 with SMTP id i2ls825552igi.12.canary; Mon, 26 Oct 2015 03:47:10 -0700 (PDT) X-Received: by 10.50.82.98 with SMTP id h2mr15354237igy.1.1445856430942; Mon, 26 Oct 2015 03:47:10 -0700 (PDT) Received: from mailout2.samsung.com (mailout2.samsung.com. [203.254.224.25]) by gmr-mx.google.com with ESMTPS id pe1si3458283pac.2.2015.10.26.03.47.10 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 26 Oct 2015 03:47:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of alim.akhtar@samsung.com designates 203.254.224.25 as permitted sender) client-ip=203.254.224.25; Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0NWT02FKZPYLA6B0@mailout2.samsung.com> for rtc-linux@googlegroups.com; Mon, 26 Oct 2015 19:47:09 +0900 (KST) Received: from epcpsbgm1new.samsung.com ( [172.20.52.124]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 21.40.05272.CA40E265; Mon, 26 Oct 2015 19:47:09 +0900 (KST) X-AuditID: cbfee68e-f791c6d000001498-36-562e04acb546 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1new.samsung.com (EPCPMTA) with SMTP id 3C.AA.23663.CA40E265; Mon, 26 Oct 2015 19:47:08 +0900 (KST) Received: from exypnos.sisodomain.com ([107.108.73.28]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0NWT006MIPVU1230@mmp1.samsung.com>; Mon, 26 Oct 2015 19:47:08 +0900 (KST) From: Alim Akhtar To: lee.jones@linaro.org, broonie@kernel.org Cc: k.kozlowski@samsung.com, mturquette@baylibre.com, linux-samsung-soc@vger.kernel.org, linux-clk@vger.kernel.org, rtc-linux@googlegroups.com, linux-kernel@vger.kernel.org, Thomas Abraham Subject: [rtc-linux] [PATCH v2 2/5] mfd: sec: Add support for S2MPS15 PMIC Date: Mon, 26 Oct 2015 16:06:40 +0530 Message-id: <1445855803-26973-3-git-send-email-alim.akhtar@samsung.com> X-Mailer: git-send-email 1.7.10.4 In-reply-to: <1445855803-26973-1-git-send-email-alim.akhtar@samsung.com> References: <1445855803-26973-1-git-send-email-alim.akhtar@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGLMWRmVeSWpSXmKPExsWyRsSkRncti16YQd80ToupD5+wWbx+YWhx /+tRRouPPfdYLS7vmsNmMeP8PiaLi6dcLfZ3djBadCxjdOD0eH+jld1jz8STbB6bVnWyedy5 tofNo2/LKkaPz5vkAtiiuGxSUnMyy1KL9O0SuDIWTmxkKjjrULFo6mH2BsYrpl2MnBwSAiYS x5//YYewxSQu3FvP1sXIxSEksIJRonHjXhaYol8PvjBDJJYySlzb+J8JwvnJKDF94xawdjYB bYm707cAJTg4RAR0JK7fSAepYRa4xSjRvGsyWFxYwE5i+vY8kHIWAVWJow/OsILYvALuEo/X TmGFWKYo0f1sAhuIzSngIXHy+T8mEFsIqKZxxTxGiJpN7BInG/Ug5ghIfJt8iAVkvISArMSm A8wQJZISB1fcYJnAKLyAkWEVo2hqQXJBcVJ6kZFecWJucWleul5yfu4mRmDwn/73rG8H480D 1ocYBTgYlXh4X/DohgmxJpYVV+YeYjQF2jCRWUo0OR8YY3kl8YbGZkYWpiamxkbmlmZK4rwJ Uj+DhQTSE0tSs1NTC1KL4otKc1KLDzEycXBKNTAy/GF/sq6B7QRv+eIsp6aZJ2e0uXx03h94 2kmimkn3GJfLnw6j3Avn9Vjz3pybM6uq9Y5DXMLZiw5ztP5khdu+3pK1RDivYfu/OVYrjrL3 P3WNs/ny12S55y+vP98Op0h9vhhcG9zWGS4ss+NwV8UmK8e9GdsPhE1SXKsgve6Cx9vjl1YU T3quxFKckWioxVxUnAgAfkaat3kCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCIsWRmVeSWpSXmKPExsVy+t9jAd01LHphBjtPmFlMffiEzeL1C0OL +1+PMlp87LnHanF51xw2ixnn9zFZXDzlarG/s4PRomMZowOnx/sbreweeyaeZPPYtKqTzePO tT1sHn1bVjF6fN4kF8AW1cBok5GamJJapJCal5yfkpmXbqvkHRzvHG9qZmCoa2hpYa6kkJeY m2qr5OIToOuWmQN0k5JCWWJOKVAoILG4WEnfDtOE0BA3XQuYxghd35AguB4jAzSQsIYxY+HE RqaCsw4Vi6YeZm9gvGLaxcjJISFgIvHrwRdmCFtM4sK99WxdjFwcQgJLGSWubfzPBOH8ZJSY vnELO0gVm4C2xN3pW4ASHBwiAjoS12+kg9QwC9xilGjeNRksLixgJzF9ex5IOYuAqsTRB2dY QWxeAXeJx2unsEIsU5TofjaBDcTmFPCQOPn8HxOILQRU07hiHuMERt4FjAyrGCVSC5ILipPS cw3zUsv1ihNzi0vz0vWS83M3MYJj7JnUDsaDu9wPMQpwMCrx8L7g0Q0TYk0sK67MPcQowcGs JMLr8xsoxJuSWFmVWpQfX1Sak1p8iNEU6LCJzFKiyfnA+M8riTc0NjE3NTa1NLEwMbNUEue9 kKERJiSQnliSmp2aWpBaBNPHxMEp1cA4p0lTrMbQvT3a76DZaaHQ5xcyg78Xyje7bjxoFVzn tve7ukvTJL28aycyTC2cThovvJQgEbAxpvVdTUIBq7/lvowP20IPn8xZmvl35U3XrbNf237+ avMie85u/zV2c530zrYkvv+bUltm6hUybUu4XnP8jyOvvdedFOqMnn0sNC5P9EPL/qlKLMUZ iYZazEXFiQBFvd6zxwIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Original-Sender: alim.akhtar@samsung.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of alim.akhtar@samsung.com designates 203.254.224.25 as permitted sender) smtp.mailfrom=alim.akhtar@samsung.com Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: rtc-linux@googlegroups.com X-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , From: Thomas Abraham Add support for S2MPS15 PMIC which is similar to S2MPS11 PMIC. The S2MPS15 PMIC supports 27 LDO regulators, 10 buck regulators, RTC, three 32.768KHz clock outputs and battery charger. This patch adds initial support for LDO and buck regulators of S2MPS15 device. Signed-off-by: Thomas Abraham Signed-off-by: Alim Akhtar [Alim: Added s2mps15_devs like rtc and clk and related changes] Reviewed-by: Krzysztof Kozlowski --- drivers/mfd/sec-core.c | 31 +++++++ drivers/mfd/sec-irq.c | 8 ++ include/linux/mfd/samsung/core.h | 1 + include/linux/mfd/samsung/s2mps15.h | 161 +++++++++++++++++++++++++++++++++++ 4 files changed, 201 insertions(+) create mode 100644 include/linux/mfd/samsung/s2mps15.h diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c index 2626fc0b5b8c..db3d4d4ff805 100644 --- a/drivers/mfd/sec-core.c +++ b/drivers/mfd/sec-core.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -96,6 +97,17 @@ static const struct mfd_cell s2mps14_devs[] = { } }; +static const struct mfd_cell s2mps15_devs[] = { + { + .name = "s2mps15-pmic", + }, { + .name = "s2mps15-rtc", + }, { + .name = "s2mps15-clk", + .of_compatible = "samsung,s2mps15-clk", + }, +}; + static const struct mfd_cell s2mpa01_devs[] = { { .name = "s2mpa01-pmic", @@ -125,6 +137,9 @@ static const struct of_device_id sec_dt_match[] = { .compatible = "samsung,s2mps14-pmic", .data = (void *)S2MPS14X, }, { + .compatible = "samsung,s2mps15-pmic", + .data = (void *)S2MPS15X, + }, { .compatible = "samsung,s2mpa01-pmic", .data = (void *)S2MPA01, }, { @@ -226,6 +241,15 @@ static const struct regmap_config s2mps14_regmap_config = { .cache_type = REGCACHE_FLAT, }; +static const struct regmap_config s2mps15_regmap_config = { + .reg_bits = 8, + .val_bits = 8, + + .max_register = S2MPS15_REG_LDODSCH4, + .volatile_reg = s2mps11_volatile, + .cache_type = REGCACHE_FLAT, +}; + static const struct regmap_config s2mpu02_regmap_config = { .reg_bits = 8, .val_bits = 8, @@ -387,6 +411,9 @@ static int sec_pmic_probe(struct i2c_client *i2c, case S2MPS14X: regmap = &s2mps14_regmap_config; break; + case S2MPS15X: + regmap = &s2mps15_regmap_config; + break; case S5M8763X: regmap = &s5m8763_regmap_config; break; @@ -445,6 +472,10 @@ static int sec_pmic_probe(struct i2c_client *i2c, sec_devs = s2mps14_devs; num_sec_devs = ARRAY_SIZE(s2mps14_devs); break; + case S2MPS15X: + sec_devs = s2mps15_devs; + num_sec_devs = ARRAY_SIZE(s2mps15_devs); + break; case S2MPU02: sec_devs = s2mpu02_devs; num_sec_devs = ARRAY_SIZE(s2mpu02_devs); diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c index 806fa8dbb22d..d77de431cc50 100644 --- a/drivers/mfd/sec-irq.c +++ b/drivers/mfd/sec-irq.c @@ -407,6 +407,11 @@ static const struct regmap_irq_chip s2mps14_irq_chip = { S2MPS1X_IRQ_CHIP_COMMON_DATA, }; +static const struct regmap_irq_chip s2mps15_irq_chip = { + .name = "s2mps15", + S2MPS1X_IRQ_CHIP_COMMON_DATA, +}; + static const struct regmap_irq_chip s2mpu02_irq_chip = { .name = "s2mpu02", .irqs = s2mpu02_irqs, @@ -466,6 +471,9 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic) case S2MPS14X: sec_irq_chip = &s2mps14_irq_chip; break; + case S2MPS15X: + sec_irq_chip = &s2mps15_irq_chip; + break; case S2MPU02: sec_irq_chip = &s2mpu02_irq_chip; break; diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h index a06098639399..6bc4bcd488ac 100644 --- a/include/linux/mfd/samsung/core.h +++ b/include/linux/mfd/samsung/core.h @@ -44,6 +44,7 @@ enum sec_device_type { S2MPS11X, S2MPS13X, S2MPS14X, + S2MPS15X, S2MPU02, }; diff --git a/include/linux/mfd/samsung/s2mps15.h b/include/linux/mfd/samsung/s2mps15.h new file mode 100644 index 000000000000..7443af6a4bba --- /dev/null +++ b/include/linux/mfd/samsung/s2mps15.h @@ -0,0 +1,161 @@ +/* + * s2mps15.h + * + * Copyright (c) 2015 Samsung Electronics Co., Ltd + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef __LINUX_MFD_S2MPS15_H +#define __LINUX_MFD_S2MPS15_H + +/* S2MPS15 registers */ +enum s2mps15_reg { + S2MPS15_REG_ID, + S2MPS15_REG_INT1, + S2MPS15_REG_INT2, + S2MPS15_REG_INT3, + S2MPS15_REG_INT1M, + S2MPS15_REG_INT2M, + S2MPS15_REG_INT3M, + S2MPS15_REG_ST1, + S2MPS15_REG_ST2, + S2MPS15_REG_PWRONSRC, + S2MPS15_REG_OFFSRC, + S2MPS15_REG_BU_CHG, + S2MPS15_REG_RTC_BUF, + S2MPS15_REG_CTRL1, + S2MPS15_REG_CTRL2, + S2MPS15_REG_RSVD1, + S2MPS15_REG_RSVD2, + S2MPS15_REG_RSVD3, + S2MPS15_REG_RSVD4, + S2MPS15_REG_RSVD5, + S2MPS15_REG_RSVD6, + S2MPS15_REG_CTRL3, + S2MPS15_REG_RSVD7, + S2MPS15_REG_RSVD8, + S2MPS15_REG_RSVD9, + S2MPS15_REG_B1CTRL1, + S2MPS15_REG_B1CTRL2, + S2MPS15_REG_B2CTRL1, + S2MPS15_REG_B2CTRL2, + S2MPS15_REG_B3CTRL1, + S2MPS15_REG_B3CTRL2, + S2MPS15_REG_B4CTRL1, + S2MPS15_REG_B4CTRL2, + S2MPS15_REG_B5CTRL1, + S2MPS15_REG_B5CTRL2, + S2MPS15_REG_B6CTRL1, + S2MPS15_REG_B6CTRL2, + S2MPS15_REG_B7CTRL1, + S2MPS15_REG_B7CTRL2, + S2MPS15_REG_B8CTRL1, + S2MPS15_REG_B8CTRL2, + S2MPS15_REG_B9CTRL1, + S2MPS15_REG_B9CTRL2, + S2MPS15_REG_B10CTRL1, + S2MPS15_REG_B10CTRL2, + S2MPS15_REG_BBCTRL1, + S2MPS15_REG_BBCTRL2, + S2MPS15_REG_BRAMP, + S2MPS15_REG_LDODVS1, + S2MPS15_REG_LDODVS2, + S2MPS15_REG_LDODVS3, + S2MPS15_REG_LDODVS4, + S2MPS15_REG_L1CTRL, + S2MPS15_REG_L2CTRL, + S2MPS15_REG_L3CTRL, + S2MPS15_REG_L4CTRL, + S2MPS15_REG_L5CTRL, + S2MPS15_REG_L6CTRL, + S2MPS15_REG_L7CTRL, + S2MPS15_REG_L8CTRL, + S2MPS15_REG_L9CTRL, + S2MPS15_REG_L10CTRL, + S2MPS15_REG_L11CTRL, + S2MPS15_REG_L12CTRL, + S2MPS15_REG_L13CTRL, + S2MPS15_REG_L14CTRL, + S2MPS15_REG_L15CTRL, + S2MPS15_REG_L16CTRL, + S2MPS15_REG_L17CTRL, + S2MPS15_REG_L18CTRL, + S2MPS15_REG_L19CTRL, + S2MPS15_REG_L20CTRL, + S2MPS15_REG_L21CTRL, + S2MPS15_REG_L22CTRL, + S2MPS15_REG_L23CTRL, + S2MPS15_REG_L24CTRL, + S2MPS15_REG_L25CTRL, + S2MPS15_REG_L26CTRL, + S2MPS15_REG_L27CTRL, + S2MPS15_REG_LDODSCH1, + S2MPS15_REG_LDODSCH2, + S2MPS15_REG_LDODSCH3, + S2MPS15_REG_LDODSCH4, +}; + +/* S2MPS15 regulator ids */ +enum s2mps15_regulators { + S2MPS15_LDO1, + S2MPS15_LDO2, + S2MPS15_LDO3, + S2MPS15_LDO4, + S2MPS15_LDO5, + S2MPS15_LDO6, + S2MPS15_LDO7, + S2MPS15_LDO8, + S2MPS15_LDO9, + S2MPS15_LDO10, + S2MPS15_LDO11, + S2MPS15_LDO12, + S2MPS15_LDO13, + S2MPS15_LDO14, + S2MPS15_LDO15, + S2MPS15_LDO16, + S2MPS15_LDO17, + S2MPS15_LDO18, + S2MPS15_LDO19, + S2MPS15_LDO20, + S2MPS15_LDO21, + S2MPS15_LDO22, + S2MPS15_LDO23, + S2MPS15_LDO24, + S2MPS15_LDO25, + S2MPS15_LDO26, + S2MPS15_LDO27, + S2MPS15_BUCK1, + S2MPS15_BUCK2, + S2MPS15_BUCK3, + S2MPS15_BUCK4, + S2MPS15_BUCK5, + S2MPS15_BUCK6, + S2MPS15_BUCK7, + S2MPS15_BUCK8, + S2MPS15_BUCK9, + S2MPS15_BUCK10, + S2MPS15_BUCK11, + S2MPS15_REGULATOR_MAX, +}; + +#define S2MPS15_LDO_VSEL_MASK (0x3F) +#define S2MPS15_BUCK_VSEL_MASK (0xFF) + +#define S2MPS15_ENABLE_SHIFT (0x06) +#define S2MPS15_ENABLE_MASK (0x03 << S2MPS15_ENABLE_SHIFT) + +#define S2MPS15_LDO_N_VOLTAGES (S2MPS15_LDO_VSEL_MASK + 1) +#define S2MPS15_BUCK_N_VOLTAGES (S2MPS15_BUCK_VSEL_MASK + 1) + +#endif /* __LINUX_MFD_S2MPS15_H */