From patchwork Thu Jan 21 05:57:44 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ying.zhang@freescale.com X-Patchwork-Id: 571102 X-Patchwork-Delegate: yorksun@freescale.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 252C91402D6 for ; Thu, 21 Jan 2016 20:05:52 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4C7D54BAD8; Thu, 21 Jan 2016 10:05:49 +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 7QvXyJ69VqLR; Thu, 21 Jan 2016 10:05:49 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id C1B3B4BACB; Thu, 21 Jan 2016 10:05:48 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BE13B4BABD for ; Thu, 21 Jan 2016 10:05:45 +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 eF7mEZemZndN for ; Thu, 21 Jan 2016 10:05:45 +0100 (CET) X-Greylist: delayed 3657 seconds by postgrey-1.34 at theia; Thu, 21 Jan 2016 10:05:42 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 na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0135.outbound.protection.outlook.com [65.55.169.135]) by theia.denx.de (Postfix) with ESMTPS id 0507B4BAB9 for ; Thu, 21 Jan 2016 10:05:42 +0100 (CET) Received: from BN3PR0301CA0006.namprd03.prod.outlook.com (10.160.180.144) by CY1PR03MB1470.namprd03.prod.outlook.com (10.163.17.155) with Microsoft SMTP Server (TLS) id 15.1.365.19; Thu, 21 Jan 2016 07:31:17 +0000 Received: from BL2FFO11FD005.protection.gbl (2a01:111:f400:7c09::121) by BN3PR0301CA0006.outlook.office365.com (2a01:111:e400:4000::16) with Microsoft SMTP Server (TLS) id 15.1.390.13 via Frontend Transport; Thu, 21 Jan 2016 07:31:17 +0000 Authentication-Results: spf=permerror (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; Received-SPF: PermError (protection.outlook.com: domain of freescale.com used an invalid SPF mechanism) Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD005.mail.protection.outlook.com (10.173.161.1) with Microsoft SMTP Server (TLS) id 15.1.355.15 via Frontend Transport; Thu, 21 Jan 2016 07:31:15 +0000 Received: from Tank.ap.freescale.net (tank.ap.freescale.net [10.193.20.104]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u0L7VC1V008422; Thu, 21 Jan 2016 00:31:13 -0700 From: To: Date: Thu, 21 Jan 2016 13:57:44 +0800 Message-ID: <1453355864-2896-1-git-send-email-ying.zhang@freescale.com> X-Mailer: git-send-email 1.8.4.1 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD005; 1:B+H12YAOiMlqei0r9NzvPEr9Iuxti1J9Trhv0nrR9rSiaL2VZtVdVqb15hNOOhcBU8e8y17DUgPTwo9ZrQnB1w431Ehu2LLKyN7zVXLM+c5SIITuaJUQVyyhErsbuiWM+gKVSxT0u2jW6d/LalvXWqlgDTsOGDTYjZ1DJ0Ow2LV8efay08Pn+uO6UnyRk5UtiGcK+bKS1PhsPaScuYFZq55ml+jnB5iYRzeUgiEtrBmz/RUmovsxR9XjOHCKwOrdmbEQc2PPmXN2whCpQzHR0B5VftAOv2WwMQoFykDGzf3okWey/xa0fbnGFITJw9wr5BIVxNeGXP95WRXgSvCsF9v50KgnOOzPsqsbSYFPj1maYvbfehFDy7IWX0zXAY4Ml0n67BAoMf9ok/TxORWueWY/Zhmge24SYuPCJJUru+1Q6XSLuLZFauLSc4P+2kvrhAtGxubLxfd83WgToHQqqJ9WQL2Lj9QweGcqlB4D1RGJb2yHgxSC4BYxj/+AMslN X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(448002)(3190300001)(199003)(189002)(4326007)(19580405001)(2876002)(5008740100001)(77096005)(48376002)(6806005)(450100001)(1096002)(1220700001)(19580395003)(11100500001)(586003)(106466001)(104016004)(47776003)(4001430100002)(97736004)(81156007)(2351001)(229853001)(33646002)(5003940100001)(92566002)(50226001)(85326001)(5001960100002)(50466002)(87936001)(86362001)(107886002)(86152002)(110136002)(36756003)(50986999)(2906002)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:CY1PR03MB1470; H:tx30smr01.am.freescale.net; FPR:; SPF:PermError; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 57da7f61-3bb2-4093-8ebc-08d32234d96e X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1470; 2:r9zkop5TYc7/TFJLNSg3wF0ceVDJhMYPYOnok5UC7hWdr5PKQk7bMRCqGYIGHMwEOdTTEcoEm7zIAtoeGrOOj+XHy9VdwLvpDEikXiF31fYDBoF+6YGREfE3L1JKslA3grutmzVKs+Yze33h8qpZVXOqsWPtYVbBr3SCR5IMVWscfkKWkW/av436eGma6dMW; 3:2gDyvHrA3m7V+23NtbvW9Px9jrRXmpkPu3UJAV3z8zkzYCRn2OZ8Lc3LRviBMtrG/wO3gfoLwRHKVRRJAiK1pcCWCjlVNW6XxW4DH+FGPWBFSexrRLrOmGIfmMQETRU0tuUo8q7k9adgaXHKVpr/GnU+ZYuZ5ofNAT/H0jgvHXfWQH+UP6Wgr6JyUj2db25TBl7tFGpCRWlaWHBvHjdcImj4nubMpsu/1+IECrsaRnA=; 25:WmKssNkznidigtxEU9p7fxnPJQA2nRLM8AvcR7R57A7wjpu/mSxW2MkZ3jIJ4SXNcZeaRdttyNkxTxZJh8UdaPyEtHkTN72lNpF6D3gQTLrhf7QyQFUzTX02Yfm46bzvuFVo75ftOvVpQ3xGIT/8xRIXEke44sr0guyEBswOlHn07bikP8qIDytvP5Vwsk/BsB7k2g62yu67h6hikxXX8TqtBfnd3wGS0tR/8C2XfjI5j9t9qm+fVUi7y84TI65j X-Exchange-Antispam-Report-Test: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:CY1PR03MB1470; UriScan:(101931422205132); X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1470; 20:2SrNIyww/gekcK+3qpV/WwwBZnfOjIJBjRx1wi1qAjCYHmppniNnWLkaL4sVWgsSeE+1IO78Drn0CelEfR1JKbcQh/rJgApJXeUUPyRBGtgZW7RM39TLrsI9ODYVmcAqqX1YnJbRclTb0lVFlUfOKYkMigsLmw/E5Tk0xBWQFjaie5IyPKIoquzPNaCTJM05gjaYigATqLhaRA3nfdS0d/BXu2SefEzHz3NWohoy7rS3fwPIKV7AgEtWkxCTww5Un7rDsXjoqY6mm8VHwt44+IvGFrRSyybfKpw+dXbDVhznUIvQZ+Iv7jmGEAvuR0j30uU6tbvZpDHJb7lM2AZduxn0RMkoNBsU2KDCpTKoO6rpcnkOUThzkK4wW5NT9TgLrHdInohe4HRg8o0Zw+qWq4E+fub78HoGN6X+nCWAbonuIK+pYVeSmgsHYYRjSDIJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13024025)(8121501046)(520078)(13018025)(13015025)(13017025)(13023025)(5005006)(3002001)(10201501046); SRVR:CY1PR03MB1470; BCL:0; PCL:0; RULEID:; SRVR:CY1PR03MB1470; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1470; 4:MiPqMYExsBRpg1dPJRTrCI3S/A1ZIrdsP0G3s1ErLPt5rQIFggV5b93g3bq85DCm0WFhNWMHUDtCYK/tWdYYm3mY5f5RZvuN6uBJjawVYbAuqY7WUZFsCE9VgBUIjG1Faaz5WFpFZQ5xmZ+Pgednl+8b/0pGRU7VsksElmEq3I2WEp+/KaNv4VljnJPTwi/FEzVbORkjPO9c/tds0kfC5r8en/Rd1rMS5lqoV3fcW2L1ImeyqdD3iK2vpAdc3sbjcWmF0e8gLqFbS2h25vnPOgSx09p5JnjS0s5TbdhiMVLPWSdN1OPMaX4mMOJyeZrpy5h0xGiH1iHGmjh9/fmCS4KqZzdrjjpuQlTvPP42yiAwgQDwWyM+pzkF1I+ZgtsZ55zlDQ7PX6H38i5ouwuAgCQOxvFTPXHrGx93d/17eVgoOZWmoDFk6mXVsg7s9DGWB60ULlxCPdmBk0xTBkuxOnmcHwm76LpHJRAyvPyysr52SD2KU/WuT8TNPPy/TvTAdu+m73LAvV02WKzlpfhrCw== X-Forefront-PRVS: 08286A0BE2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB1470; 23:VxKhja2kdNSqxoQxMNaKhap4N2UKnTYY2NrRK7vEt?= =?us-ascii?Q?C0KFxGw1d3P7YZSzZLb80d7yyESMZqoh17lDwrdxRs+ZG72sLJy90pA/0UrL?= =?us-ascii?Q?q5vz9N9d8ku7C+5CLMg1/2MXhKODP9W+iSyCmFpQZwuZ4sWrKQtiwWvioEMr?= =?us-ascii?Q?4i0TV6BHw9vp3f/mY6qOKfOXtJNCuIYsdwU4YQdMu5Q3cBoT/eMvlUypiODf?= =?us-ascii?Q?qVuXKMxW6bgYvYJFzlRgENp0uWtrmzGwuBb2hWPmcWuVgAoLXxSdzaRIikj3?= =?us-ascii?Q?K1eSQsipwVKiQ/2MNKvdbkqRBCYIP0tDHFEHxuHEqyFGk2j0Wpfrufi0AutB?= =?us-ascii?Q?10DNb60UQ3dAD6MgCvoeLEN1kt5T+FO7OEqYYDEi7xbHukiMaLTzCCaQkQZV?= =?us-ascii?Q?yWL+3TOb46zuYhfoIqwjJbzEQ0cq27Z1YkmDJGzc2p11iilInu0Hi67r7XVK?= =?us-ascii?Q?cLEw8/UeEO/laezV6laBmlJ//xaiuQqDhERYi5bqFGuZiWzv+e06sCU5XStY?= =?us-ascii?Q?zPboVSKSTUKoAhy3kn2Qej7v57rfv5dmhtuTvjIlG0OHVKsORqHYoC7EesNi?= =?us-ascii?Q?YW24J1lHV2smDliA7dl/EqTSPQH3mTJp6F8zvpmP4Kk8lxqdq0U1W5t51LqW?= =?us-ascii?Q?QcllIfWLCjyPm/uaqXNYkRhR+AsQhxdg+zKOx60W2ac2rBrE92WI2VewgrpI?= =?us-ascii?Q?WocnKKI9LDs5Vz1NHcfAyBZSt7fkdCA/W8r8fk9vP2czQFj+RKrCE6xxrOOg?= =?us-ascii?Q?EPxuNX5MXjficmsxdl9l4EE8K6sGASnJMOe+6yjT3KniwQYkRPjPDA07npRY?= =?us-ascii?Q?XTdHJwoCAnJCr+yrzq9IqzIBzhDcqVGhgRpVclh8uhHuejHPePhdho82z+vf?= =?us-ascii?Q?gQxPJbORSssIQM65YPJLUDv7mJ41SsIzWCcMbwkYa9f+TiLLw8PVWwngCSMN?= =?us-ascii?Q?e7/FNyVj0W8SOtTdk83WK7G7H4n7VT7WoaHyBlhFy1T/B1TH+ZcacjacVn3y?= =?us-ascii?Q?GsuItiEFa3FjOn+WmJEnB4VH8mwCx+GQtYT8sJh7HcKs0uU9xTzfH9ik+y/f?= =?us-ascii?Q?V4shgRr9N149SAWF0+AYhTCBibxhDVNq1Twu8txb1CUflSfTmaHcNYHuEShr?= =?us-ascii?Q?BiQ9iGflGA=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1470; 5:3X1u0LV8AXMgl30O7+7VEOu3ww4tqsyu9pmpHnGGF4drNQLlUxc8+60uS49yk/gudofY57nK+61EvXtCq5Am4eg2P8ihiwapW1UUHMGY0RXk8aZJaZg/UiFE149LDehpUzhhZkXMvPgfiPnHKThupw==; 24:8W587MXhc9nsv95UpllJsDvuAt2SvK5luI/4lopKI6TMiN2hvm+a3rtYDj0do88SSLUYfPmNQuqyGCKxMHwWY2m+ywpqz3QWEw9BpkVBqAA= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jan 2016 07:31:15.7500 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1470 Cc: yorksun@freescale.com, Ying Zhang Subject: [U-Boot] [PATCH v2] board/t4240rdb: VID support 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: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Ying Zhang The fuse status register provides the values from on-chip voltage ID efuses programmed at the factory. These values define the voltage requirements for the chip. u-boot reads FUSESR and translates the values into the appropriate commands to set the voltage output value of an external voltage regulator. Signed-off-by: Ying Zhang --- Changed from v1: - Not support IR chip is used in AMD mode --- board/freescale/common/vid.c | 19 +++++++++++++++++-- board/freescale/common/vid.h | 4 ++++ board/freescale/t4rdb/t4240rdb.c | 7 +++++++ include/configs/T4240RDB.h | 10 ++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/board/freescale/common/vid.c b/board/freescale/common/vid.c index f1bed51..1bd65a8 100644 --- a/board/freescale/common/vid.c +++ b/board/freescale/common/vid.c @@ -42,7 +42,7 @@ int __weak board_vdd_drop_compensation(void) * The IR chip can show up under the following addresses: * 0x08 (Verified on T1040RDB-PA,T4240RDB-PB,X-T4240RDB-16GPA) * 0x09 (Verified on T1040RDB-PA) - * 0x38 (Verified on T2080QDS, T2081QDS) + * 0x38 (Verified on T2080QDS, T2081QDS, T4240RDB) */ static int find_ir_chip_on_i2c(void) { @@ -292,7 +292,7 @@ int adjust_vdd(ulong vdd_override) (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); #endif u32 fusesr; - u8 vid; + u8 vid, buf; int vdd_target, vdd_current, vdd_last; int ret, i2caddress; unsigned long vdd_string_override; @@ -346,6 +346,21 @@ int adjust_vdd(ulong vdd_override) debug("VID: IR Chip found on I2C address 0x%02x\n", i2caddress); } + /* check IR chip work on Intel mode*/ + ret = i2c_read(i2caddress, + IR36021_INTEL_MODE_OOFSET, + 1, (void *)&buf, 1); + if (ret) { + printf("VID: failed to read IR chip mode.\n"); + ret = -1; + goto exit; + } + if ((buf & IR36021_MODE_MASK) != IR36021_INTEL_MODE) { + printf("VID: IR Chip is not used in Intel mode.\n"); + ret = -1; + goto exit; + } + /* get the voltage ID from fuse status register */ fusesr = in_be32(&gur->dcfg_fusesr); /* diff --git a/board/freescale/common/vid.h b/board/freescale/common/vid.h index a9c7bb4..9182c20 100644 --- a/board/freescale/common/vid.h +++ b/board/freescale/common/vid.h @@ -11,6 +11,10 @@ #define IR36021_LOOP1_VOUT_OFFSET 0x9A #define IR36021_MFR_ID_OFFSET 0x92 #define IR36021_MFR_ID 0x43 +#define IR36021_INTEL_MODE_OOFSET 0x14 +#define IR36021_MODE_MASK 0x20 +#define IR36021_INTEL_MODE 0x00 +#define IR36021_AMD_MODE 0x20 /* step the IR regulator in 5mV increments */ #define IR_VDD_STEP_DOWN 5 diff --git a/board/freescale/t4rdb/t4240rdb.c b/board/freescale/t4rdb/t4240rdb.c index fac442b..99a8730 100644 --- a/board/freescale/t4rdb/t4240rdb.c +++ b/board/freescale/t4rdb/t4240rdb.c @@ -21,6 +21,7 @@ #include "t4rdb.h" #include "cpld.h" +#include "../common/vid.h" DECLARE_GLOBAL_DATA_PTR; @@ -79,6 +80,12 @@ int board_early_init_r(void) #ifdef CONFIG_SYS_DPAA_QBMAN setup_portals(); #endif + /* + * Adjust core voltage according to voltage ID + * This function changes I2C mux to channel 2. + */ + if (adjust_vdd(0)) + printf("Warning: Adjusting core voltage failed.\n"); return 0; } diff --git a/include/configs/T4240RDB.h b/include/configs/T4240RDB.h index 73279c8..4a17f41 100644 --- a/include/configs/T4240RDB.h +++ b/include/configs/T4240RDB.h @@ -606,6 +606,16 @@ unsigned long get_board_ddr_clk(void); #define I2C_VOL_MONITOR_BUS_V_OVF 0x1 #define I2C_VOL_MONITOR_BUS_V_SHIFT 3 +#define CONFIG_VID_FLS_ENV "t4240rdb_vdd_mv" +#ifndef CONFIG_SPL_BUILD +#define CONFIG_VID +#endif +#define CONFIG_VOL_MONITOR_IR36021_SET +#define CONFIG_VOL_MONITOR_IR36021_READ +/* The lowest and highest voltage allowed for T4240RDB */ +#define VDD_MV_MIN 819 +#define VDD_MV_MAX 1212 + /* * eSPI - Enhanced SPI */