From patchwork Sat Aug 4 22:44:40 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Otavio Salvador X-Patchwork-Id: 175145 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 2ECAA2C008D for ; Sun, 5 Aug 2012 08:42:25 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B2666280CE; Sun, 5 Aug 2012 00:42:23 +0200 (CEST) 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 zu+gA2kMWwHx; Sun, 5 Aug 2012 00:42:23 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 37C43280C1; Sun, 5 Aug 2012 00:42:22 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3B71A280C1 for ; Sun, 5 Aug 2012 00:42:19 +0200 (CEST) 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 25WswxbSs3wr for ; Sun, 5 Aug 2012 00:42:17 +0200 (CEST) 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 mail-yx0-f172.google.com (mail-yx0-f172.google.com [209.85.213.172]) by theia.denx.de (Postfix) with ESMTPS id 1942E280AC for ; Sun, 5 Aug 2012 00:42:15 +0200 (CEST) Received: by yenm6 with SMTP id m6so1404597yen.3 for ; Sat, 04 Aug 2012 15:42:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=XPDffK8WYSCCiz5hQkyEBiHrGpYp50lag1fDnsuBcNE=; b=lRJhPKBQUXw6Q9V8FqQBKmTGI3GAMMKCOC3caiFWI7MaF/elc88i/371EZbrgw7JAJ iN0ysaRe0UayNc0z2egTmaCVKH0nGoyFjjxC/rLnMlWqNjUSBnIj41rVOLfBoNh3BxgP 9s/wwz2z0ZcajlSt0c0xioVJM6dCXTi+tuGUTrS5BOBG9Zen+CKi6VYzvg1ZUJS8ZGIv pNJBp+uLrh5kAcSyGPbFFfSWOlgcBhVnhweFpDIJPnFQWYVpqAPNQJilRcxUYg86gu8b O8caQQVemvJi2l/InisB1+ZYKedGY4WNM2nTUWDtrn8WFuv+3Gd6uciyYJxPkZCDpTDx 8UDw== Received: by 10.236.153.39 with SMTP id e27mr6109883yhk.130.1344120134073; Sat, 04 Aug 2012 15:42:14 -0700 (PDT) Received: from micro.lab.ossystems.com.br ([177.100.163.15]) by mx.google.com with ESMTPS id q3sm11719312ani.15.2012.08.04.15.42.11 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 04 Aug 2012 15:42:13 -0700 (PDT) From: Otavio Salvador To: U-Boot Mailing List Date: Sat, 4 Aug 2012 19:44:40 -0300 Message-Id: <1344120280-7469-1-git-send-email-otavio@ossystems.com.br> X-Mailer: git-send-email 1.7.10.4 Cc: Fabio Estevam , Marek Vasut Subject: [U-Boot] [PATCH v3] MX28: Check if we are using a valid VBUS for power initialization 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 Signed-off-by: Otavio Salvador --- Changes in v2: - add comments - fix when we have vbus OR vdd5v - improve patch short description Changes in v3: - change short-description prefix arch/arm/cpu/arm926ejs/mx28/spl_power_init.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/arch/arm/cpu/arm926ejs/mx28/spl_power_init.c b/arch/arm/cpu/arm926ejs/mx28/spl_power_init.c index 4b09b0c..fdf810c 100644 --- a/arch/arm/cpu/arm926ejs/mx28/spl_power_init.c +++ b/arch/arm/cpu/arm926ejs/mx28/spl_power_init.c @@ -564,6 +564,15 @@ void mx28_batt_boot(void) 0x8 << POWER_5VCTRL_CHARGE_4P2_ILIMIT_OFFSET); } +static int mx28_valid_vbus(void) +{ + struct mx28_power_regs *power_regs = + (struct mx28_power_regs *)MXS_POWER_BASE; + + /* iMX23 uses POWER_STS_VBUSVALID_STATUS at same offset */ + return readl(&power_regs->hw_power_sts) & POWER_STS_VBUSVALID0_STATUS; +} + void mx28_handle_5v_conflict(void) { struct mx28_power_regs *power_regs = @@ -577,14 +586,19 @@ void mx28_handle_5v_conflict(void) tmp = readl(&power_regs->hw_power_sts); if (tmp & POWER_STS_VDDIO_BO) { + /* + * VDDIO has a brownout, then the VDD5V_GT_VDDIO becomes + * unreliable + */ mx28_powerdown(); break; } - if (tmp & POWER_STS_VDD5V_GT_VDDIO) { + if (mx28_valid_vbus() || (tmp & POWER_STS_VDD5V_GT_VDDIO)) { mx28_boot_valid_5v(); break; } else { + /* Neither 5v sees 5v so we power down */ mx28_powerdown(); break; } @@ -601,17 +615,15 @@ void mx28_5v_boot(void) struct mx28_power_regs *power_regs = (struct mx28_power_regs *)MXS_POWER_BASE; - /* - * NOTE: In original IMX-Bootlets, this also checks for VBUSVALID, - * but their implementation always returns 1 so we omit it here. - */ - if (readl(&power_regs->hw_power_sts) & POWER_STS_VDD5V_GT_VDDIO) { + if (mx28_valid_vbus() && + (readl(&power_regs->hw_power_sts) & POWER_STS_VDD5V_GT_VDDIO)) { mx28_boot_valid_5v(); return; } early_delay(1000); - if (readl(&power_regs->hw_power_sts) & POWER_STS_VDD5V_GT_VDDIO) { + if (mx28_valid_vbus() && + (readl(&power_regs->hw_power_sts) & POWER_STS_VDD5V_GT_VDDIO)) { mx28_boot_valid_5v(); return; }