From patchwork Wed Jan 23 10:07:57 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rajeshwari Birje X-Patchwork-Id: 214869 X-Patchwork-Delegate: promsoft@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id F10C92C0082 for ; Wed, 23 Jan 2013 21:01:30 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D51B64A0C3; Wed, 23 Jan 2013 11:01:23 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nO472PS6+bCo; Wed, 23 Jan 2013 11:01:23 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id F16594A100; Wed, 23 Jan 2013 11:00:45 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id DD21C4A0BF for ; Wed, 23 Jan 2013 11:00:30 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4ZKfH3xiw6mt for ; Wed, 23 Jan 2013 11:00:28 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by theia.denx.de (Postfix) with ESMTP id 73F484A0B5 for ; Wed, 23 Jan 2013 11:00:26 +0100 (CET) Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MH200H7IOV7JYK0@mailout1.samsung.com> for u-boot@lists.denx.de; Wed, 23 Jan 2013 19:00:18 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.126]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id D5.A8.03880.2B4BFF05; Wed, 23 Jan 2013 19:00:18 +0900 (KST) X-AuditID: cbfee61b-b7fb06d000000f28-d9-50ffb4b27598 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 75.A8.03880.2B4BFF05; Wed, 23 Jan 2013 19:00:18 +0900 (KST) Received: from rajeshwari-linux.sisodomain.com ([107.108.215.115]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MH2002PJP45GK50@mmp1.samsung.com> for u-boot@lists.denx.de; Wed, 23 Jan 2013 19:00:18 +0900 (KST) From: Rajeshwari Shinde To: u-boot@lists.denx.de Date: Wed, 23 Jan 2013 15:37:57 +0530 Message-id: <1358935677-10876-3-git-send-email-rajeshwari.s@samsung.com> X-Mailer: git-send-email 1.7.4.4 In-reply-to: <1358935677-10876-1-git-send-email-rajeshwari.s@samsung.com> References: <1358935677-10876-1-git-send-email-rajeshwari.s@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrELMWRmVeSWpSXmKPExsWyRsSkTnfTlv8BBp2HZC3e7u1kd2D0OHtn B2MAYxSXTUpqTmZZapG+XQJXxtTDp5gKVmhUzD59iK2B8alCFyMnh4SAicS5fTsZIWwxiQv3 1rN1MXJxCAksZZSY+XspK0zR7h83oRKLGCW23XzDCOGsYpL4970PrJ1NwEhi68lpYLaIgITE r/6rYDazQIzE6/0/2EBsYQFricPdk4FsDg4WAVWJLberQcK8Ah4SDZPuMUMsU5A4NvUr2GJO AU+JdVMesoCUCwHVrJpsBbJWQuAym8Te3iNgNSwCAhLfJh8Cq5EQkJXYdABqjKTEwRU3WCYw Ci9gZFjFKJpakFxQnJSea6RXnJhbXJqXrpecn7uJERiCp/89k97BuKrB4hCjAAejEg9vwrN/ AUKsiWXFlbmHGCU4mJVEeFXW/g8Q4k1JrKxKLcqPLyrNSS0+xJgMtHwis5Rocj4wPvJK4g2N TcxNjU0tjYzMTE1JE1YS52U89SRASCA9sSQ1OzW1ILUIZgsTB6dUA2Oy5PFtdx78cDoTtdry 2hoLlQ0rw/pzdfWPyUzSvdD79Vqpe/S+5d4vqq7s71q35/3Tre3t1WZ1QdwhGQZ/eFIWM6w4 UO4Wd+Qoz8c6+4dxnyIeLfjiskSJ77X54XW3fj3awPx32jOTct3SeW4/Xjy+WPSRx+PCndXn eD4JX2z3ZoxRyj+Z8rFViaU4I9FQi7moOBEAw19edoUCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIIsWRmVeSWpSXmKPExsVy+t9jAd1NW/4HGDz9xGfxdm8nuwOjx9k7 OxgDGKMaGG0yUhNTUosUUvOS81My89JtlbyD453jTc0MDHUNLS3MlRTyEnNTbZVcfAJ03TJz gMYqKZQl5pQChQISi4uV9O0wTQgNcdO1gGmM0PUNCYLrMTJAAwlrGDOmHj7FVLBCo2L26UNs DYxPFboYOTkkBEwkdv+4yQZhi0lcuLceyObiEBJYxCix7eYbRghnFZPEv+99jCBVbAJGEltP TgOzRQQkJH71XwWzmQViJF7v/wE2SVjAWuJw92Qgm4ODRUBVYsvtapAwr4CHRMOke8wQyxQk jk39ygpicwp4Sqyb8pAFpFwIqGbVZKsJjLwLGBlWMYqmFiQXFCel5xrpFSfmFpfmpesl5+du YgQH+DPpHYyrGiwOMQpwMCrx8CY8+xcgxJpYVlyZe4hRgoNZSYRXZe3/ACHelMTKqtSi/Pii 0pzU4kOMyUA3TWSWEk3OB0ZfXkm8obGJuamxqaWJhYmZJWnCSuK8jKeeBAgJpCeWpGanphak FsFsYeLglGpg7Pr7NCVC0qyvPSDu9prv8+9XHP26JjYiZbHchX+s97dOvJN69FiIu9DTLhGB Re/nuBXGKFQsW3ltU1WCUPqPPUv1UvpTwxb4f7r8oGKumfGW+n/u8kpm8/Rk1E+sSZ3cf+P7 jKuzi05OXrZgW/Kf0KZn0vUymms1d7m+vH87S/vMDJ7zQezGDkosxRmJhlrMRcWJALEJKbW0 AgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: patches@linaro.org Subject: [U-Boot] [PATCH 2/2 V2] SMDK5250: Add PMIC voltage settings X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de This patch adds required pmic voltage settings for SMDK5250. Acked-by: Simon Glass Signed-off-by: Rajeshwari Shinde --- Changes in V2: - Corrected the multi line comment style board/samsung/smdk5250/smdk5250.c | 113 ++++++++++++++++++++++++++++++++++++- include/power/max77686_pmic.h | 31 ++++++++++ 2 files changed, 142 insertions(+), 2 deletions(-) diff --git a/board/samsung/smdk5250/smdk5250.c b/board/samsung/smdk5250/smdk5250.c index 7a5f132..12cc03e 100644 --- a/board/samsung/smdk5250/smdk5250.c +++ b/board/samsung/smdk5250/smdk5250.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -35,6 +36,7 @@ #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -80,12 +82,119 @@ int dram_init(void) } #if defined(CONFIG_POWER) +static int pmic_reg_update(struct pmic *p, int reg, uint regval) +{ + u32 val; + int ret = 0; + + ret = pmic_reg_read(p, reg, &val); + if (ret) { + debug("%s: PMIC %d register read failed\n", __func__, reg); + return -1; + } + val |= regval; + ret = pmic_reg_write(p, reg, val); + if (ret) { + debug("%s: PMIC %d register write failed\n", __func__, reg); + return -1; + } + return 0; +} + int power_init_board(void) { + struct pmic *p; + + power_ps_hold_setup(); + + i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); + if (pmic_init(I2C_PMIC)) return -1; - else - return 0; + + p = pmic_get("MAX77686_PMIC"); + if (!p) + return -ENODEV; + + if (pmic_probe(p)) + return -1; + + if (pmic_reg_update(p, MAX77686_REG_PMIC_32KHZ, MAX77686_32KHCP_EN)) + return -1; + + if (pmic_reg_update(p, MAX77686_REG_PMIC_BBAT, + MAX77686_BBCHOSTEN | MAX77686_BBCVS_3_5V)) + return -1; + + /* VDD_MIF */ + if (pmic_reg_write(p, MAX77686_REG_PMIC_BUCK1OUT, + MAX77686_BUCK1OUT_1V)) { + debug("%s: PMIC %d register write failed\n", __func__, + MAX77686_REG_PMIC_BUCK1OUT); + return -1; + } + + if (pmic_reg_update(p, MAX77686_REG_PMIC_BUCK1CRTL, + MAX77686_BUCK1CTRL_EN)) + return -1; + + /* VDD_ARM */ + if (pmic_reg_write(p, MAX77686_REG_PMIC_BUCK2DVS1, + MAX77686_BUCK2DVS1_1_3V)) { + debug("%s: PMIC %d register write failed\n", __func__, + MAX77686_REG_PMIC_BUCK2DVS1); + return -1; + } + + if (pmic_reg_update(p, MAX77686_REG_PMIC_BUCK2CTRL1, + MAX77686_BUCK2CTRL_ON)) + return -1; + + /* VDD_INT */ + if (pmic_reg_write(p, MAX77686_REG_PMIC_BUCK3DVS1, + MAX77686_BUCK3DVS1_1_0125V)) { + debug("%s: PMIC %d register write failed\n", __func__, + MAX77686_REG_PMIC_BUCK3DVS1); + return -1; + } + + if (pmic_reg_update(p, MAX77686_REG_PMIC_BUCK3CTRL, + MAX77686_BUCK3CTRL_ON)) + return -1; + + /* VDD_G3D */ + if (pmic_reg_write(p, MAX77686_REG_PMIC_BUCK4DVS1, + MAX77686_BUCK4DVS1_1_2V)) { + debug("%s: PMIC %d register write failed\n", __func__, + MAX77686_REG_PMIC_BUCK4DVS1); + return -1; + } + + if (pmic_reg_update(p, MAX77686_REG_PMIC_BUCK4CTRL1, + MAX77686_BUCK3CTRL_ON)) + return -1; + + /* VDD_LDO2 */ + if (pmic_reg_update(p, MAX77686_REG_PMIC_LDO2CTRL1, + MAX77686_LD02CTRL1_1_5V | EN_LDO)) + return -1; + + /* VDD_LDO3 */ + if (pmic_reg_update(p, MAX77686_REG_PMIC_LDO3CTRL1, + MAX77686_LD03CTRL1_1_8V | EN_LDO)) + return -1; + + /* VDD_LDO5 */ + if (pmic_reg_update(p, MAX77686_REG_PMIC_LDO5CTRL1, + MAX77686_LD05CTRL1_1_8V | EN_LDO)) + return -1; + + /* VDD_LDO10 */ + if (pmic_reg_update(p, MAX77686_REG_PMIC_LDO10CTRL1, + MAX77686_LD10CTRL1_1_8V | EN_LDO)) + return -1; + + return 0; } #endif diff --git a/include/power/max77686_pmic.h b/include/power/max77686_pmic.h index d949ace..4a5355c 100644 --- a/include/power/max77686_pmic.h +++ b/include/power/max77686_pmic.h @@ -155,4 +155,35 @@ enum { EN_LDO = (0x3 << 6), }; +/* Buck1 1 volt value */ +#define MAX77686_BUCK1OUT_1V 0x5 +#define MAX77686_BUCK1CTRL_EN (3 << 0) +/* Buck2 1.3 volt value */ +#define MAX77686_BUCK2DVS1_1_3V 0x38 +#define MAX77686_BUCK2CTRL_ON (1 << 4) +/* Buck3 1.0125 volt value */ +#define MAX77686_BUCK3DVS1_1_0125V 0x21 +#define MAX77686_BUCK3CTRL_ON (1 << 4) +/* Buck4 1.2 volt value */ +#define MAX77686_BUCK4DVS1_1_2V 0x30 +#define MAX77686_BUCK4CTRL_ON (1 << 4) +/* LDO2 1.5 volt value */ +#define MAX77686_LD02CTRL1_1_5V 0x1c +/* LDO3 1.8 volt value */ +#define MAX77686_LD03CTRL1_1_8V 0x14 +/* LDO5 1.8 volt value */ +#define MAX77686_LD05CTRL1_1_8V 0x14 +/* LDO10 1.8 volt value */ +#define MAX77686_LD10CTRL1_1_8V 0x14 +/* + * MAX77686_REG_PMIC_32KHZ set to 32KH CP output + * is activated + */ +#define MAX77686_32KHCP_EN (1 << 1) +/* + * MAX77686_REG_PMIC_BBAT set to Back up batery charger on + * and limit voltage setting to 3.5v + */ +#define MAX77686_BBCHOSTEN (1 << 0) +#define MAX77686_BBCVS_3_5V (3 << 3) #endif /* __MAX77686_PMIC_H_ */