From patchwork Thu Jan 5 10:17:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jaehoon Chung X-Patchwork-Id: 711314 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 3tvNt420T7z9s3T for ; Thu, 5 Jan 2017 21:18:04 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id CF681B391F; Thu, 5 Jan 2017 11:17:43 +0100 (CET) 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 fPdsIlcMNBnw; Thu, 5 Jan 2017 11:17:43 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 393FCB38E4; Thu, 5 Jan 2017 11:17:29 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5D594A75C2 for ; Thu, 5 Jan 2017 11:17:15 +0100 (CET) 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 YES8p6s6IUw1 for ; Thu, 5 Jan 2017 11:17:15 +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 mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by theia.denx.de (Postfix) with ESMTPS id C7D27A75FB for ; Thu, 5 Jan 2017 11:17:14 +0100 (CET) Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OJA01SE9XWHL010@mailout3.samsung.com> for u-boot@lists.denx.de; Thu, 05 Jan 2017 19:17:05 +0900 (KST) Received: from epsmges5p1.samsung.com (unknown [182.195.40.70]) by epcas1p2.samsung.com (KnoxPortal) with ESMTP id 20170105101705epcas1p2794e0890272b8a445e5c4ca99f4b61e3~W2LsUsHZo1563315633epcas1p2D; Thu, 5 Jan 2017 10:17:05 +0000 (GMT) Received: from epcas5p3.samsung.com ( [182.195.41.41]) by epsmges5p1.samsung.com (EPCPMTA) with SMTP id 28.C5.31243.12D1E685; Thu, 5 Jan 2017 19:17:05 +0900 (KST) Received: from epcpsbgm2new.samsung.com (u27.gpu120.samsung.co.kr [203.254.230.27]) by epcas5p1.samsung.com (KnoxPortal) with ESMTP id 20170105101704epcas5p10680a97e198b2512e678aafdbd453fe3~W2Lr-kGro3017730177epcas5p1D; Thu, 5 Jan 2017 10:17:04 +0000 (GMT) X-AuditID: b6c32a2c-f79ad6d000007a0b-cd-586e1d21378f Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id 7A.C0.28332.02D1E685; Thu, 5 Jan 2017 19:17:04 +0900 (KST) Received: from localhost.localdomain ([10.113.62.216]) by mmp2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OJA00305XWFEMB0@mmp2.samsung.com>; Thu, 05 Jan 2017 19:17:04 +0900 (KST) From: Jaehoon Chung To: u-boot@lists.denx.de Date: Thu, 05 Jan 2017 19:17:01 +0900 Message-id: <20170105101702.19111-8-jh80.chung@samsung.com> X-Mailer: git-send-email 2.10.2 In-reply-to: <20170105101702.19111-1-jh80.chung@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrBKsWRmVeSWpSXmKPExsWy7bCmpq6ibF6EwcJ3fBY3frWxWnQcaWG0 +LZlG6PF272d7A4sHrMbLrJ4nL2zg9Gjb8sqxgDmqFSbjNTElNQihdS85PyUzLx0WyXv4Hjn eFMzA0NdQ0sLcyWFvMTcVFslF58AXbfMHKB1SgpliTmlQKGAxOJiJX07m6L80pJUhYz84hJb pWhDQyM9QwNzPSMjIz0T41grI1OgkoTUjPlHLjMVnDCv2PHlH2sD4w3tLkZODgkBE4kNL56x QdhiEhfurQeyuTiEBJYySqzePpEFwmlnkti0fgorTMfJI5tZIRJzGCX+ffwD1fKDUeLktrXM IFVsAjoS278dZwKxRQQkJH71X2UEsZkFQiRmzl8PViMsECkx+e5vIJuDg0VAVeLDE06QMK+A tcTRhsNQy+QlFp4/AjaGU8BG4u/RdWCLJQQus0k8Wn2IDaRXQkBWYtMBZoh6F4mHq3dC2cIS r45vYYewpSX+Lr3FCNHbDXT0l41sEE4Po8StrauZIKqMJe4/uMcMcSifRO/vJ0wQC3glOtqE IEo8JP49a2SBsB0lNv3aDvaXkEA/o8SeB0oTGGUWMDKsYhRLLSjOTU8tNi0w1CtOzC0uzUvX S87P3cQITiVaOjsY7y3wPsQowMGoxMNbcSE3Qog1say4MvcQowQHs5IIr5R0XoQQb0piZVVq UX58UWlOavEhRlNgME1klhJNzgemubySeEMTM0MTI0sgNDc0VxLnXVBhHSEkkJ5YkpqdmlqQ WgTTx8TBKdXAyDZ7gauFg3a6/sMF7Xp/9r0Muc0d8+x7dXNmVsfGdtXw+p5HaS5MLKJZ859d X/LoeIbMBI+LrTYTDgsHPA/TmVTK9f1LJVcXDwfPT7Yd+UyXDM+fvxulZbltTp7Bnzjv91wn n/Edd/76kkVAvDz9ddT5uU+uOJ4s3FH69fL/OEkLyYbCQLc8JZbijERDLeai4kQAGoTshDsD AAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMLMWRmVeSWpSXmKPExsVy+t9jQV0F2bwIg8MfzSxu/Gpjteg40sJo 8W3LNkaLt3s72R1YPGY3XGTxOHtnB6NH35ZVjAHMUW42GamJKalFCql5yfkpmXnptkqhIW66 FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DLmH/kMlPBCfOKHV/+sTYw3tDu YuTkkBAwkTh5ZDMrhC0mceHeerYuRi4OIYFZjBJPTi1jhnB+MEr8+b2DHaSKTUBHYvu340wg toiAhMSv/quMIDazQIjEsRe3gWwODmGBSIkZp3JATBYBVYkPTzhBKngFrCWONhyG2iUvsfD8 EbApnAI2En+PrgOLCwHVrNz9hX0CI+8CRoZVjBKpBckFxUnpuUZ5qeV6xYm5xaV56XrJ+bmb GMEB+kx6B+PhXe6HGAU4GJV4eDv+5kQIsSaWFVfmHmKU4GBWEuGVks6LEOJNSaysSi3Kjy8q zUktPsRoCnTXRGYp0eR8YPTklcQbmpibmBsbWJhbWpoYKYnzNs5+Fi4kkJ5YkpqdmlqQWgTT x8TBKdXAWPkgXTqgxbeo4cf89Anb6/Nme4RuPHL5zCnHFXWrPS/du9O384NPVMVd3618HUtr 19v/Y/hw+LZbi1O9xIfyyZ1/bvp8vHhxV5Dl8vWn3u2YdXNx2pl5Yktu77at+JJU4ePsG/Bm etfci3Pfrjtbu0Wd4/eB8A2bVsU+i4p6uZWpTeevz5SatZpKLMUZiYZazEXFiQCAAl/YZgIA AA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170105101704epcas5p10680a97e198b2512e678aafdbd453fe3 X-Msg-Generator: CA X-Sender-IP: 203.254.230.27 X-Local-Sender: =?UTF-8?B?7KCV7J6s7ZuIG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbUzUo7LGF7J6EKS/ssYXsnoQ=?= X-Global-Sender: =?UTF-8?B?SmFlaG9vbiBDaHVuZxtUaXplbiBQbGF0Zm9ybSBMYWIuG1Nh?= =?UTF-8?B?bXN1bmcgRWxlY3Ryb25pY3MbUzUvU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG1NUQUYbQzEwVjgxMTE=?= CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-HopCount: 7 X-CMS-RootMailID: 20170105101704epcas5p10680a97e198b2512e678aafdbd453fe3 X-RootMTR: 20170105101704epcas5p10680a97e198b2512e678aafdbd453fe3 References: <20170105101702.19111-1-jh80.chung@samsung.com> Subject: [U-Boot] [PATCH V2 6/7] board: samsung: universal_210: use the driver model for max8998 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Revmoe the "ifndef CONFIG_DM_I2C". Intead, use the driver model for max8998. Signed-off-by: Jaehoon Chung --- board/samsung/universal_c210/universal.c | 169 +++++++++++++++++-------------- 1 file changed, 94 insertions(+), 75 deletions(-) diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c index c3946ee..0645843 100644 --- a/board/samsung/universal_c210/universal.c +++ b/board/samsung/universal_c210/universal.c @@ -27,33 +27,21 @@ DECLARE_GLOBAL_DATA_PTR; unsigned int board_rev; +static int init_pmic_lcd(void); u32 get_board_rev(void) { return board_rev; } -static int get_hwrev(void) +int exynos_power_init(void) { - return board_rev & 0xFF; + return init_pmic_lcd(); } -int exynos_power_init(void) +static int get_hwrev(void) { -#ifndef CONFIG_DM_I2C /* TODO(maintainer): Convert to driver model */ - int ret; - - /* - * For PMIC the I2C bus is named as I2C5, but it is connected - * to logical I2C adapter 0 - */ - ret = pmic_init(I2C_0); - if (ret) - return ret; - - init_pmic_lcd(); -#endif - return 0; + return board_rev & 0xFF; } static unsigned short get_adc_value(int channel) @@ -83,23 +71,29 @@ static unsigned short get_adc_value(int channel) static int adc_power_control(int on) { -#ifndef CONFIG_DM_I2C /* TODO(maintainer): Convert to driver model */ + struct udevice *dev; int ret; - struct pmic *p = pmic_get("MAX8998_PMIC"); - if (!p) - return -ENODEV; + u8 reg; - if (pmic_probe(p)) - return -1; + ret = pmic_get("max8998-pmic", &dev); + if (ret) { + puts("Failed to get MAX8998!\n"); + return ret; + } - ret = pmic_set_output(p, - MAX8998_REG_ONOFF1, - MAX8998_LDO4, !!on); + reg = pmic_reg_read(dev, MAX8998_REG_ONOFF1); + if (on) + reg |= MAX8998_LDO4; + else + reg &= ~MAX8998_LDO4; + + ret = pmic_reg_write(dev, MAX8998_REG_ONOFF1, reg); + if (ret) { + puts("MAX8998 LDO setting error\n"); + return -EINVAL; + } - return ret; -#else return 0; -#endif } static unsigned int get_hw_revision(void) @@ -147,39 +141,50 @@ static void check_hw_revision(void) #ifdef CONFIG_USB_GADGET static int s5pc210_phy_control(int on) { -#ifndef CONFIG_DM_I2C /* TODO(maintainer): Convert to driver model */ - int ret = 0; - struct pmic *p = pmic_get("MAX8998_PMIC"); - if (!p) - return -ENODEV; + struct udevice *dev; + int ret; + u8 reg; - if (pmic_probe(p)) - return -1; + ret = pmic_get("max8998-pmic", &dev); + if (ret) { + puts("Failed to get MAX8998!\n"); + return ret; + } if (on) { - ret |= pmic_set_output(p, - MAX8998_REG_BUCK_ACTIVE_DISCHARGE3, - MAX8998_SAFEOUT1, LDO_ON); - ret |= pmic_set_output(p, MAX8998_REG_ONOFF1, - MAX8998_LDO3, LDO_ON); - ret |= pmic_set_output(p, MAX8998_REG_ONOFF2, - MAX8998_LDO8, LDO_ON); + reg = pmic_reg_read(dev, MAX8998_REG_BUCK_ACTIVE_DISCHARGE3); + reg |= MAX8998_SAFEOUT1; + ret |= pmic_reg_write(dev, + MAX8998_REG_BUCK_ACTIVE_DISCHARGE3, reg); + + reg = pmic_reg_read(dev, MAX8998_REG_ONOFF1); + reg |= MAX8998_LDO3; + ret |= pmic_reg_write(dev, MAX8998_REG_ONOFF1, reg); + + reg = pmic_reg_read(dev, MAX8998_REG_ONOFF2); + reg |= MAX8998_LDO8; + ret |= pmic_reg_write(dev, MAX8998_REG_ONOFF2, reg); } else { - ret |= pmic_set_output(p, MAX8998_REG_ONOFF2, - MAX8998_LDO8, LDO_OFF); - ret |= pmic_set_output(p, MAX8998_REG_ONOFF1, - MAX8998_LDO3, LDO_OFF); - ret |= pmic_set_output(p, - MAX8998_REG_BUCK_ACTIVE_DISCHARGE3, - MAX8998_SAFEOUT1, LDO_OFF); + reg = pmic_reg_read(dev, MAX8998_REG_ONOFF2); + reg &= ~MAX8998_LDO8; + ret |= pmic_reg_write(dev, MAX8998_REG_ONOFF2, reg); + + reg = pmic_reg_read(dev, MAX8998_REG_ONOFF1); + reg &= ~MAX8998_LDO3; + ret |= pmic_reg_write(dev, MAX8998_REG_ONOFF1, reg); + + reg = pmic_reg_read(dev, MAX8998_REG_BUCK_ACTIVE_DISCHARGE3); + reg &= ~MAX8998_SAFEOUT1; + ret |= pmic_reg_write(dev, + MAX8998_REG_BUCK_ACTIVE_DISCHARGE3, reg); } if (ret) { puts("MAX8998 LDO setting error!\n"); - return -1; + return -EINVAL; } -#endif + return 0; } @@ -205,27 +210,25 @@ int exynos_early_init_f(void) return 0; } -#ifndef CONFIG_DM_I2C /* TODO(maintainer): Convert to driver model */ -static void init_pmic_lcd(void) +static int init_pmic_lcd(void) { + struct udevice *dev; unsigned char val; int ret = 0; - struct pmic *p = pmic_get("MAX8998_PMIC"); - - if (!p) - return; - - if (pmic_probe(p)) - return; + ret = pmic_get("max8998-pmic", &dev); + if (ret) { + puts("Failed to get MAX8998 for init_pmic_lcd()!\n"); + return ret; + } /* LDO7 1.8V */ val = 0x02; /* (1800 - 1600) / 100; */ - ret |= pmic_reg_write(p, MAX8998_REG_LDO7, val); + ret |= pmic_reg_write(dev, MAX8998_REG_LDO7, val); /* LDO17 3.0V */ val = 0xe; /* (3000 - 1600) / 100; */ - ret |= pmic_reg_write(p, MAX8998_REG_LDO17, val); + ret |= pmic_reg_write(dev, MAX8998_REG_LDO17, val); /* Disable unneeded regulators */ /* @@ -234,26 +237,29 @@ static void init_pmic_lcd(void) * LDO2 ON, LDO3 OFF, LDO4 OFF, LDO5 ON */ val = 0xB9; - ret |= pmic_reg_write(p, MAX8998_REG_ONOFF1, val); + ret |= pmic_reg_write(dev, MAX8998_REG_ONOFF1, val); /* ONOFF2 * LDO6 OFF, LDO7 ON, LDO8 OFF, LDO9 ON, * LDO10 OFF, LDO11 OFF, LDO12 OFF, LDO13 OFF */ val = 0x50; - ret |= pmic_reg_write(p, MAX8998_REG_ONOFF2, val); + ret |= pmic_reg_write(dev, MAX8998_REG_ONOFF2, val); /* ONOFF3 * LDO14 OFF, LDO15 OFF, LGO16 OFF, LDO17 OFF * EPWRHOLD OFF, EBATTMON OFF, ELBCNFG2 OFF, ELBCNFG1 OFF */ val = 0x00; - ret |= pmic_reg_write(p, MAX8998_REG_ONOFF3, val); + ret |= pmic_reg_write(dev, MAX8998_REG_ONOFF3, val); - if (ret) + if (ret) { puts("LCD pmic initialisation error!\n"); + return -EINVAL; + } + + return 0; } -#endif void exynos_cfg_lcd_gpio(void) { @@ -310,18 +316,31 @@ void exynos_reset_lcd(void) void exynos_lcd_power_on(void) { -#ifndef CONFIG_DM_I2C /* TODO(maintainer): Convert to driver model */ - struct pmic *p = pmic_get("MAX8998_PMIC"); + struct udevice *dev; + int ret; + u8 reg; - if (!p) + ret = pmic_get("max8998-pmic", &dev); + if (ret) { + puts("Failed to get MAX8998!\n"); return; + } - if (pmic_probe(p)) + reg = pmic_reg_read(dev, MAX8998_REG_ONOFF3); + reg |= MAX8998_LDO17; + ret = pmic_reg_write(dev, MAX8998_REG_ONOFF3, reg); + if (ret) { + puts("MAX8998 LDO setting error\n"); return; + } - pmic_set_output(p, MAX8998_REG_ONOFF3, MAX8998_LDO17, LDO_ON); - pmic_set_output(p, MAX8998_REG_ONOFF2, MAX8998_LDO7, LDO_ON); -#endif + reg = pmic_reg_read(dev, MAX8998_REG_ONOFF2); + reg |= MAX8998_LDO7; + ret = pmic_reg_write(dev, MAX8998_REG_ONOFF2, reg); + if (ret) { + puts("MAX8998 LDO setting error\n"); + return; + } } void exynos_cfg_ldo(void)