From patchwork Wed Mar 27 09:29:01 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vivek Gautam X-Patchwork-Id: 15681 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id A642823E10 for ; Wed, 27 Mar 2013 09:32:35 +0000 (UTC) Received: from mail-vc0-f176.google.com (mail-vc0-f176.google.com [209.85.220.176]) by fiordland.canonical.com (Postfix) with ESMTP id 4A097A18118 for ; Wed, 27 Mar 2013 09:32:35 +0000 (UTC) Received: by mail-vc0-f176.google.com with SMTP id ib11so6218497vcb.21 for ; Wed, 27 Mar 2013 02:32:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=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; bh=rFcCC2k/ZBy+C3/BYoFQIBlbdFRNao7+ikHpVVhhdRw=; b=P84Kb8VdNWVt7+lyxQi6y6+fWrJ8VtFkn+OlI04wUOHQJ+Hlxr2lOkzijHbQ887qyH 8YgJCFtYyhrAw+Y+sfCHxSszAbHhP6iIYwntHR7z5xRKLiU+62ly8MAZZI3yjTK6aVJU 99iYnYjrXWDeBAGfaXaljQrNGYoSpnEgtWpYWdCKF2JCtstxWylHFEMUypxmbvviKFTY kO6C06DAa5upnGYjCWDSPYx84bf9pJXfZRdx/T2l2QG1HDcIMoHoXfvRtxGhrM9MQ7/e on8rD2oHzl9YkQ97c0FZHvrmMd7BTF3uU4FRzrH49aH+xH0qcDTqzKRDV29hWOg1UqFX Cc7g== X-Received: by 10.52.20.239 with SMTP id q15mr19297005vde.73.1364376754841; Wed, 27 Mar 2013 02:32:34 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.59.4.204 with SMTP id cg12csp107609ved; Wed, 27 Mar 2013 02:32:34 -0700 (PDT) X-Received: by 10.66.148.65 with SMTP id tq1mr29325003pab.19.1364376753879; Wed, 27 Mar 2013 02:32:33 -0700 (PDT) Received: from mailout4.samsung.com (mailout4.samsung.com. [203.254.224.34]) by mx.google.com with ESMTP id ac4si21585047pad.306.2013.03.27.02.32.33; Wed, 27 Mar 2013 02:32:33 -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; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of gautam.vivek@samsung.com designates 203.254.224.34 as permitted sender) smtp.mail=gautam.vivek@samsung.com Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MKB009L9BU696T0@mailout4.samsung.com> for patches@linaro.org; Wed, 27 Mar 2013 18:32:32 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.123]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id 8B.4E.12250.0BCB2515; Wed, 27 Mar 2013 18:32:32 +0900 (KST) X-AuditID: cbfee691-b7f5f6d000002fda-c0-5152bcb093d1 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 28.8F.13494.0BCB2515; Wed, 27 Mar 2013 18:32:32 +0900 (KST) Received: from vivekkumarg-linuxpc.sisodomain.com ([107.108.214.169]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MKB00C14BRFI6F0@mmp2.samsung.com>; Wed, 27 Mar 2013 18:32:32 +0900 (KST) From: Vivek Gautam To: u-boot@lists.denx.de Cc: patches@linaro.org, marex@denx.de, sjg@chromium.org, rajeshwari.s@samsung.com, vikas.sajjan@samsung.com, amarendra.xt@samsung.com Subject: [PATCH 5/7] usb: hub: Increase device enumeration timeout for broken drives Date: Wed, 27 Mar 2013 14:59:01 +0530 Message-id: <1364376543-7526-6-git-send-email-gautam.vivek@samsung.com> X-Mailer: git-send-email 1.7.6.5 In-reply-to: <1364376543-7526-1-git-send-email-gautam.vivek@samsung.com> References: <1364376543-7526-1-git-send-email-gautam.vivek@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBLMWRmVeSWpSXmKPExsWyRsSkWnfDnqBAg+ULVSy+LOhkt3jT1sho MeXwFxaLlrUHWC2+bdnGaPF2L1Di5rPtTA7sHrMbLrJ4zJt1gsXjzrU9bB5n7+xg9Ojbsoox gDWKyyYlNSezLLVI3y6BK+Nm0xbmgl+8FV1LNjA2MF7k6mLk5JAQMJHYvmsBI4QtJnHh3nq2 LkYuDiGBpYwSv/etYIQp+nTnIROILSQwnVHiQVcARNEUJoldq/6ygyTYBHQlmt7uAmsQEZCQ +NV/lRGkiFmgnVFi88bZbCAJYYEwidYzL8GKWARUJfbdPwNm8wq4S8zeep8ZYpuCxJvbz8Bs TgEPiRmvprFAbHaXOHRuD9hQCYF57BJ3f75ggRgkIPFt8iEgmwMoISux6QDUHEmJgytusExg FF7AyLCKUTS1ILmgOCm9yFSvODG3uDQvXS85P3cTIzDUT/97NnEH4/0D1ocYk4HGTWSWEk3O B8ZKXkm8obGZkYWpiamxkbmlGWnCSuK86i3WgUIC6YklqdmpqQWpRfFFpTmpxYcYmTg4pRoY dVWid1zPC/xcu11g0f4Ll/rylEMawmaFFR+MDuWKcHY9Nt2ujW0x22UVA3l2kUzfstrrv2ae qSpp6lR8sqFOue70B7vVE0+wuITn37kU+XDL3c07rk5l4vsVZcb9cead3SYpN/7IbFUW8FOr 0d+5+WHXDQnZqU87fF/Hc6oItN14HXv1pMl+JZbijERDLeai4kQA7DFSF4sCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKIsWRmVeSWpSXmKPExsVy+t9jQd0Ne4ICDWYclbH4sqCT3eJNWyOj xZTDX1gsWtYeYLX4tmUbo8XbvUCJm8+2Mzmwe8xuuMjiMW/WCRaPO9f2sHmcvbOD0aNvyyrG ANaoBkabjNTElNQihdS85PyUzLx0WyXv4HjneFMzA0NdQ0sLcyWFvMTcVFslF58AXbfMHKBD lBTKEnNKgUIBicXFSvp2mCaEhrjpWsA0Ruj6hgTB9RgZoIGENYwZN5u2MBf84q3oWrKBsYHx IlcXIyeHhICJxKc7D5kgbDGJC/fWs4HYQgLTGSUedAV0MXIB2VOYJHat+ssOkmAT0JVoeruL EcQWEZCQ+NV/lRGkiFmgnVFi88bZYN3CAmESrWdeghWxCKhK7Lt/BszmFXCXmL31PjPENgWJ N7efgdmcAh4SM15NY4HY7C5x6NwexgmMvAsYGVYxiqYWJBcUJ6XnGukVJ+YWl+al6yXn525i BEfSM+kdjKsaLA4xCnAwKvHwOvwLDBRiTSwrrsw9xCjBwawkwvtiRVCgEG9KYmVValF+fFFp TmrxIcZkoKsmMkuJJucDozyvJN7Q2MTc1NjU0sTCxMySNGElcd6DrdaBQgLpiSWp2ampBalF MFuYODilGhgX7i661dljlixxWq3lxLkj2+t6pc2Xe02W3CQpXdTOrCkQO/FH4eSfh85tOKWe xLm4m51pw9VTBotWPsu/lOgi8Zx7V1zu86nWu55M2Xzo57mSjRttti2R3MB2j7Xu2vpsba2e qo9x1o9vdF/Ouvjz/YImlYsnWVKmx/so6Dj2G2i3uN+9eXCPEktxRqKhFnNRcSIADZrZ6egC AAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Gm-Message-State: ALoCoQnb11HH0Obffxszp6/zO4G3gN8SjBuBiis4f4z8hrd4vp8VhnjjMhJGOVLNbcvZOv7XQrCe Few broken usb mass storage devices can take some time to set Current Connect Status (CCS) and Connect Status Change (CSC) in Port status register after an attach. So increasing some timeout when both CCS and CSC bits are not set. Signed-off-by: Amar Signed-off-by: Vivek Gautam --- common/usb_hub.c | 21 ++++++++++++++++++--- 1 files changed, 18 insertions(+), 3 deletions(-) diff --git a/common/usb_hub.c b/common/usb_hub.c index d77f98d..8ba7a0d 100644 --- a/common/usb_hub.c +++ b/common/usb_hub.c @@ -416,6 +416,7 @@ static int usb_hub_configure(struct usb_device *dev) unsigned short portstatus, portchange; int ret; ulong start = get_timer(0); + ulong ts = 0; /* * Wait for (whichever finishes first) @@ -436,9 +437,23 @@ static int usb_hub_configure(struct usb_device *dev) portchange = le16_to_cpu(portsts->wPortChange); if ((portchange & USB_PORT_STAT_C_CONNECTION) == - (portstatus & USB_PORT_STAT_CONNECTION)) - break; - + (portstatus & USB_PORT_STAT_CONNECTION)) { + /* + * Few brokern pen drives can take some + * time to even report CSC or CCS state after + * an attach. So giving this time lag so that + * the CCS or CSC state can be changed and + * reflected in Port status register. + * XXX: This approach however has a drawback, + * with this we are going to wait for 1 sec + * even for ports on which nothing is connected. + */ + if (ts == 0) + ts = get_timer(0); + if ((portchange & USB_PORT_STAT_C_CONNECTION) || + (get_timer(ts) > CONFIG_SYS_HZ * 1)) + break; + } } while (get_timer(start) < CONFIG_SYS_HZ * 10); if (ret < 0)