From patchwork Wed Apr 24 12:50:11 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vivek Gautam X-Patchwork-Id: 16378 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ve0-f199.google.com (mail-ve0-f199.google.com [209.85.128.199]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 4ED3D23918 for ; Wed, 24 Apr 2013 12:54:20 +0000 (UTC) Received: by mail-ve0-f199.google.com with SMTP id m1sf1367870ves.2 for ; Wed, 24 Apr 2013 05:53:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:mime-version:x-beenthere:x-received:received-spf :x-received:x-forwarded-to:x-forwarded-for:delivered-to:x-received :received-spf:x-auditid:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references:x-brightmail-tracker:x-brightmail-tracker :dlp-filter:x-mtr:x-cfilter-loop:x-gm-message-state :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:x-google-group-id:list-post:list-help :list-archive:list-unsubscribe; bh=3fkVCNC9rOpDMu/0hWHKzE67lKB7HI04nBDdv3YtTYc=; b=IhtBX4kNIomsDmWZ3UUPxBxnpLK+QjDZ/6n57cTCtqQE3dZGRJH7x9VQo3aC4arduS p9pqkBIyj1R3Cg14TgYCkUx+pZ4mhPRspVrECTqcSkCAOAYmBjKKSFVkqbJhKKH2JDDO XcRqg08+oOvYM/bgHK9Jnw2I8QGZ5e0YuMPY0RFtXhUGDIb3R8gj9EaJ5m32pzHqQAhb NKx+WH+aHq3OLCZkhRlBdYjNq+drTHrG8PbfzUkoxXv5y2LVqiWK5PhzkG0mGlxPAlNK V5nvpDHWhKo40lVmZmOXxkyyfvkhNoN+53NvncdOrixLABWf2kDnTuqoQq/q5UhIAAqL nHpQ== X-Received: by 10.236.98.105 with SMTP id u69mr17512565yhf.26.1366808009108; Wed, 24 Apr 2013 05:53:29 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.49.0.236 with SMTP id 12ls826114qeh.89.gmail; Wed, 24 Apr 2013 05:53:28 -0700 (PDT) X-Received: by 10.52.26.228 with SMTP id o4mr12648142vdg.73.1366808008855; Wed, 24 Apr 2013 05:53:28 -0700 (PDT) Received: from mail-vb0-x22a.google.com (mail-vb0-x22a.google.com [2607:f8b0:400c:c02::22a]) by mx.google.com with ESMTPS id d4si1192421vcl.20.2013.04.24.05.53.28 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 24 Apr 2013 05:53:28 -0700 (PDT) Received-SPF: neutral (google.com: 2607:f8b0:400c:c02::22a is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=2607:f8b0:400c:c02::22a; Received: by mail-vb0-f42.google.com with SMTP id p12so1642538vbe.29 for ; Wed, 24 Apr 2013 05:53:28 -0700 (PDT) X-Received: by 10.58.173.36 with SMTP id bh4mr11145083vec.9.1366808008762; Wed, 24 Apr 2013 05:53:28 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patches@linaro.org Received: by 10.58.127.98 with SMTP id nf2csp172551veb; Wed, 24 Apr 2013 05:53:27 -0700 (PDT) X-Received: by 10.68.16.164 with SMTP id h4mr13695696pbd.122.1366808007371; Wed, 24 Apr 2013 05:53:27 -0700 (PDT) Received: from mailout4.samsung.com (mailout4.samsung.com. [203.254.224.34]) by mx.google.com with ESMTP id mr7si2462319pbb.317.2013.04.24.05.53.26 for ; Wed, 24 Apr 2013 05:53:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of gautam.vivek@samsung.com designates 203.254.224.34 as permitted sender) client-ip=203.254.224.34; Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MLR00GWOFT2WN21@mailout4.samsung.com> for patches@linaro.org; Wed, 24 Apr 2013 21:53:26 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.123]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 8F.C4.21454.5C5D7715; Wed, 24 Apr 2013 21:53:26 +0900 (KST) X-AuditID: cbfee68e-b7f0d6d0000053ce-bb-5177d5c5e75c Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 48.75.10837.5C5D7715; Wed, 24 Apr 2013 21:53:25 +0900 (KST) Received: from vivekkumarg-linuxpc.sisodomain.com ([107.108.214.169]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MLR00K76FQAD320@mmp1.samsung.com>; Wed, 24 Apr 2013 21:53:25 +0900 (KST) From: Vivek Gautam To: u-boot@lists.denx.de, marex@denx.de Cc: jwerner@chromium.org, u-boot-review@google.com, patches@linaro.org, rajeshwari.s@samsung.com, vikas.sajjan@samsung.com Subject: [PATCH 1/3] usb: hub: Parallelize power-cycling of root-hub ports Date: Wed, 24 Apr 2013 18:20:11 +0530 Message-id: <1366807813-10481-2-git-send-email-gautam.vivek@samsung.com> X-Mailer: git-send-email 1.7.6.5 In-reply-to: <1366807813-10481-1-git-send-email-gautam.vivek@samsung.com> References: <1366807813-10481-1-git-send-email-gautam.vivek@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBLMWRmVeSWpSXmKPExsWyRsSkWvfY1fJAg8l3mSw6Dj1msnjT1sho MeXwFxaLlrUHWC2Wv97IbvF2bye7xc1n25kc2D1mN1xk8Zg36wSLx4JNpR53ru1h8zh7Zwej R9+WVYwBbFFcNimpOZllqUX6dglcGZum7WEreCNQ8eG0RwNjP28XIyeHhICJRN+M10wQtpjE hXvr2boYuTiEBJYySnxcO4MNpmjpuz1gRUICixgl7nwIgCiawiSx9+9qFpAEm4CuRNPbXYwg toiAusT/w71gNrNAjURr630wW1jAS+Lvk61ANgcHi4CqxLtZliBhXgEPidcHOlkhdilIvLn9 jBmkhFPAU6LnsxnEWg+JDf/fMYGslRBYxC6xfO1WsLUsAgIS3yYfYgGplxCQldh0gBlijKTE wRU3WCYwCi9gZFjFKJpakFxQnJReZKRXnJhbXJqXrpecn7uJERjqp/8969vBePOA9SHGZKBx E5mlRJPzgbGSVxJvaGxmZGFqYmpsZG5pRpqwkjivWot1oJBAemJJanZqakFqUXxRaU5q8SFG Jg5OqQbG6e6Km+QzPNZ8Kdk113DenMtvs73OPYxYwCchtXv9xFJm1hmbni7fvjtAbYGBxI/Z FU4S9/ZnZTUfkD6Q2dJ7ecYuR7WKzb9ffFb3u2USnWMWuXDC84Oau7tbX0luWFKwdU1AdOf/ dPbCBWvXfOm7qHV7VxdLPDPTm7Ue6nH8mm/9ot+u+9W9WImlOCPRUIu5qDgRALKaM0uLAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKIsWRmVeSWpSXmKPExsVy+t9jAd2jV8sDDd6vMLPoOPSYyeJNWyOj xZTDX1gsWtYeYLVY/noju8XbvZ3sFjefbWdyYPeY3XCRxWPerBMsHgs2lXrcubaHzePsnR2M Hn1bVjEGsEU1MNpkpCampBYppOYl56dk5qXbKnkHxzvHm5oZGOoaWlqYKynkJeam2iq5+ATo umXmAB2jpFCWmFMKFApILC5W0rfDNCE0xE3XAqYxQtc3JAiux8gADSSsYczYNG0PW8EbgYoP pz0aGPt5uxg5OSQETCSWvtvDBGGLSVy4t54NxBYSWMQocedDQBcjF5A9hUli79/VLCAJNgFd iaa3uxhBbBEBdYn/h3vBbGaBGonW1vtgtrCAl8TfJ1uBbA4OFgFViXezLEHCvAIeEq8PdLJC 7FKQeHP7GTNICaeAp0TPZzOItR4SG/6/Y5rAyLuAkWEVo2hqQXJBcVJ6rqFecWJucWleul5y fu4mRnAkPZPawbiyweIQowAHoxIP74tZZYFCrIllxZW5hxglOJiVRHg3bSsPFOJNSaysSi3K jy8qzUktPsSYDHTTRGYp0eR8YJTnlcQbGpuYmxqbWppYmJhZkiasJM57oNU6UEggPbEkNTs1 tSC1CGYLEwenVAPjrD1F10r+f6lUb7745/Wn7htSndO2ZaSKifMmXW1nf2d0dHFt1edpko67 ytMaZ+gWfuXwPxn4ZNLRSXofl4Y6Ry+ZvGYqj1eon2LEnKqA7V91LFwu6ki/kqt6WDLltVrl rbnx6ptbVsfNT+u9aXTM9N4J90VhEVvC7l609lYoPc29hvvhDwFpJZbijERDLeai4kQASPVy iegCAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Gm-Message-State: ALoCoQmg1aPgWcE+zeRQjbar30o2MdvWtVHXcMGQ1KfJ1ZrigIgSBEBW7SqTrdehiEzxmsiGRY/9 X-Original-Sender: gautam.vivek@samsung.com X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 2607:f8b0:400c:c02::22a is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Precedence: list Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org List-ID: X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Untill now we power-cycle (aka: disable power on a port and re-enabling again) one port at a time. Delay of 20ms for Port-power to change multiplies with number of ports in this case. So better we parallelize this process: disable power on all ports, wait for port-power to stabilize and then re-enable the power subsequently. Signed-off-by: Vivek Gautam --- common/usb_hub.c | 23 ++++++++++++++--------- 1 files changed, 14 insertions(+), 9 deletions(-) diff --git a/common/usb_hub.c b/common/usb_hub.c index 1e225e6..dad0409 100644 --- a/common/usb_hub.c +++ b/common/usb_hub.c @@ -105,22 +105,25 @@ static void usb_hub_power_on(struct usb_hub_device *hub) int ret; dev = hub->pusb_dev; - /* Enable power to the ports */ + + /* + * Enable power to the ports: + * Here we Power-cycle the ports: aka, + * turning them off and turning on again. + */ debug("enabling power on all ports\n"); for (i = 0; i < dev->maxchild; i++) { - /* - * Power-cycle the ports here: aka, - * turning them off and turning on again. - */ usb_clear_port_feature(dev, i + 1, USB_PORT_FEAT_POWER); debug("port %d returns %lX\n", i + 1, dev->status); + } - /* Wait at least 2*bPwrOn2PwrGood for PP to change */ - mdelay(pgood_delay); + /* Wait at least 2*bPwrOn2PwrGood for PP to change */ + mdelay(pgood_delay); + for (i = 0; i < dev->maxchild; i++) { ret = usb_get_port_status(dev, i + 1, portsts); if (ret < 0) { - debug("port %d: get_port_status failed\n", i + 1); + printf("port %d: get_port_status failed\n", i + 1); return; } @@ -135,10 +138,12 @@ static void usb_hub_power_on(struct usb_hub_device *hub) */ portstatus = le16_to_cpu(portsts->wPortStatus); if (portstatus & (USB_PORT_STAT_POWER << 1)) { - debug("port %d: Port power change failed\n", i + 1); + printf("port %d: Port power change failed\n", i + 1); return; } + } + for (i = 0; i < dev->maxchild; i++) { usb_set_port_feature(dev, i + 1, USB_PORT_FEAT_POWER); debug("port %d returns %lX\n", i + 1, dev->status); }