From patchwork Fri Apr 12 11:04:38 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vivek Gautam X-Patchwork-Id: 16083 Return-Path: X-Original-To: linaro@staging.patches.linaro.org Delivered-To: linaro@staging.patches.linaro.org Received: from mail-gg0-f198.google.com (mail-gg0-f198.google.com [209.85.161.198]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 6857526EB0 for ; Fri, 12 Apr 2013 11:07:29 +0000 (UTC) Received: by mail-gg0-f198.google.com with SMTP id a5sf3500484ggn.5 for ; Fri, 12 Apr 2013 04:07:06 -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=N2UmnJ5Wi9qk3hcrqIFetoipYsIOKWNgHpGAPSSPLe8=; b=c7L6sZPdhKbxBMip0p9ObJ4UTb4TyiAi/h8bkPq3j8OgZrFlI/UGdTjzK1Gt846j+G 4RV+XqiRSPPiCG9fWBfkMEOiDaLWy3PofMBHxoWeFCnMcr4ge8aQ7QfARmM/ejs+MbZI Zca7c+7N4g9aFNmdx9JV4KICTslBiOZf7z0R1EenIDMa9lwZOwm5ETWZ7pcfEeUcovXm mDMZk1EMRbc6kYzrsAEZAhhYeAewJvsp1yN1FP1sXBpg/yZ2akbhgtKU0UXpz4mvhXYC sTkuU0ySNEPAWR+MhkZ1eKGCaeJRKbtN89DSa3dCL9yHX0O8F3UssipvVKNlVSr8kK8a Chyg== X-Received: by 10.224.65.6 with SMTP id g6mr5972048qai.4.1365764825849; Fri, 12 Apr 2013 04:07:05 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.49.35.241 with SMTP id l17ls1220886qej.99.gmail; Fri, 12 Apr 2013 04:07:05 -0700 (PDT) X-Received: by 10.220.215.73 with SMTP id hd9mr8131695vcb.19.1365764825584; Fri, 12 Apr 2013 04:07:05 -0700 (PDT) Received: from mail-ve0-f181.google.com (mail-ve0-f181.google.com [209.85.128.181]) by mx.google.com with ESMTPS id ez9si1773092vdb.133.2013.04.12.04.07.05 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 12 Apr 2013 04:07:05 -0700 (PDT) Received-SPF: neutral (google.com: 209.85.128.181 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.128.181; Received: by mail-ve0-f181.google.com with SMTP id pa12so2250387veb.26 for ; Fri, 12 Apr 2013 04:07:05 -0700 (PDT) X-Received: by 10.52.71.4 with SMTP id q4mr6822776vdu.8.1365764825395; Fri, 12 Apr 2013 04:07:05 -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 nf2csp60882veb; Fri, 12 Apr 2013 04:07:04 -0700 (PDT) X-Received: by 10.68.17.202 with SMTP id q10mr13943218pbd.146.1365764824272; Fri, 12 Apr 2013 04:07:04 -0700 (PDT) Received: from mailout4.samsung.com (mailout4.samsung.com. [203.254.224.34]) by mx.google.com with ESMTP id te1si8404106pbc.69.2013.04.12.04.07.03; Fri, 12 Apr 2013 04:07:04 -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 <0ML500MWC2VQD2X0@mailout4.samsung.com> for patches@linaro.org; Fri, 12 Apr 2013 20:07:02 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.124]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id E9.6B.07735.6DAE7615; Fri, 12 Apr 2013 20:07:02 +0900 (KST) X-AuditID: cbfee68e-b7f946d000001e37-ad-5167ead6d77f Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 4E.44.17838.6DAE7615; Fri, 12 Apr 2013 20:07:02 +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 <0ML500IF52UIWD90@mmp2.samsung.com>; Fri, 12 Apr 2013 20:07:02 +0900 (KST) From: Vivek Gautam To: u-boot@lists.denx.de Cc: u-boot-review@google.com, patches@linaro.org, marex@denx.de, rajeshwari.s@samsung.com, sjg@chromium.org, vikas.sajjan@samsung.com, amarendra.xt@samsung.com, vipin.kumar@st.com, gautam.vivek@samsung.com Subject: [PATCH v3 6/8] USB: SS: Add support for Super Speed USB interface Date: Fri, 12 Apr 2013 16:34:38 +0530 Message-id: <1365764680-10917-7-git-send-email-gautam.vivek@samsung.com> X-Mailer: git-send-email 1.7.6.5 In-reply-to: <1365764680-10917-1-git-send-email-gautam.vivek@samsung.com> References: <1365764680-10917-1-git-send-email-gautam.vivek@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjkeLIzCtJLcpLzFFi42JZI2JSo3vtVXqgwcaF8hZfFnSyW7RdOchu 8aatkdFiyuEvLBYtaw+wWnzbso3RYvnrjewWb/cCldx8tp3J4t+la6wOXB6zGy6yeMybdYLF Y8GmUo871/aweZy9s4PRo2/LKkaPpz/2MgewR3HZpKTmZJalFunbJXBlvGt/ylzwV6Ni19Rm tgbGHsUuRg4OCQETiSk787oYOYFMMYkL99azdTFycQgJLGWUaJm/hAkiYSLR9vsTE0RiOqPE lQfvWUASQgJTmCRuv5UAsdkEdCWa3u5iBLFFBCQkfvVfBbOZBS4yStw55A5iCwt4STReXMIG YrMIqErMn/MGzOYV8JBY8XYGO8QyBYk3t58xg9icAp4S55e+ZYfY5SGxsn83C8gREgKH2CVa 5p5jhhgkIPFt8iEWiG9kJTYdYIaYIylxcMUNlgmMwgsYGVYxiqYWJBcUJ6UXGekVJ+YWl+al 6yXn525iBMbF6X/P+nYw3jxgfYgxGWjcRGYp0eR8YFzllcQbGpsZWZiamBobmVuakSasJM6r 1mIdKCSQnliSmp2aWpBaFF9UmpNafIiRiYNTqoHR3kBp1s9a4+kvjHkTjrqE85b9mWIjNvn5 pXkmoQLFkzbF9t4UyU4t38+1eu+CkJuJSq0MjDH9c2/Mv+D5duOe77O21uosDoo4/X/LIaPX E5z2tlcu2Bt148Guk23SG4xEZrqKrWzJM6y+lp2kUu5RcyXDKvPACYNiIb9wr54MhU8r5933 j4hTYinOSDTUYi4qTgQAokIZvqECAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrDIsWRmVeSWpSXmKPExsVy+t9jQd1rr9IDDQ7OE7P4sqCT3aLtykF2 izdtjYwWUw5/YbFoWXuA1eLblm2MFstfb2S3eLsXqOTms+1MFv8uXWN14PKY3XCRxWPerBMs Hgs2lXrcubaHzePsnR2MHn1bVjF6PP2xlzmAPaqB0SYjNTEltUghNS85PyUzL91WyTs43jne 1MzAUNfQ0sJcSSEvMTfVVsnFJ0DXLTMH6EAlhbLEnFKgUEBicbGSvh2mCaEhbroWMI0Rur4h QXA9RgZoIGENY8a79qfMBX81KnZNbWZrYOxR7GLk5JAQMJFo+/2JCcIWk7hwbz1bFyMXh5DA dEaJKw/es4AkhASmMEncfisBYrMJ6Eo0vd3FCGKLCEhI/Oq/CmYzC1xklLhzyB3EFhbwkmi8 uIQNxGYRUJWYP+cNmM0r4CGx4u0MdohlChJvbj9jBrE5BTwlzi99yw6xy0NiZf9ulgmMvAsY GVYxiqYWJBcUJ6XnGuoVJ+YWl+al6yXn525iBMfdM6kdjCsbLA4xCnAwKvHwvhBODxRiTSwr rsw9xCjBwawkwhuzNy1QiDclsbIqtSg/vqg0J7X4EGMy0FUTmaVEk/OBKSGvJN7Q2MTc1NjU 0sTCxMySNGElcd4DrdaBQgLpiSWp2ampBalFMFuYODilGhhzd4uq6u8sn/P245zZXr6SE6a3 3KkP11X/Hz4zq9mRedE1hpgeEZ4NhbaXNvwseP5IvfFqvN4iTRUbuWOefFeCV7vWPzaxVH9V /zt88spPOvbnsq38I1ftm/zZXXDyrE/X/eT2+rpN3nd9yw5TH6W9Cmpb1wWl///NV+IkW240 76S5y6fp034osRRnJBpqMRcVJwIAIzcQ7P8CAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Gm-Message-State: ALoCoQmoOzgPNzUWtI6Lnw/MzAodHqsNLetKkW8YZxihZrznCO31C45Glqqp129QARVIzkG+9izq X-Original-Sender: gautam.vivek@samsung.com X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.128.181 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: , This adds usb framework support for super-speed usb, which will further facilitate to add stack support for xHCI. Signed-off-by: Vikas C Sajjan Signed-off-by: Vivek Gautam --- Changes from v2: - Replacing if-else with switch-case in portspeed() in cmd_usb.c common/cmd_usb.c | 24 ++++++++++++++++++------ common/usb.c | 5 +++++ common/usb_hub.c | 8 ++++++-- include/usb.h | 6 ++++++ include/usb_defs.h | 24 +++++++++++++++++++++++- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/common/cmd_usb.c b/common/cmd_usb.c index dacdc2d..594385a 100644 --- a/common/cmd_usb.c +++ b/common/cmd_usb.c @@ -271,12 +271,24 @@ static void usb_display_config(struct usb_device *dev) static inline char *portspeed(int speed) { - if (speed == USB_SPEED_HIGH) - return "480 Mb/s"; - else if (speed == USB_SPEED_LOW) - return "1.5 Mb/s"; - else - return "12 Mb/s"; + char *speed_str; + + switch (speed) { + case USB_SPEED_SUPER: + speed_str = "5 Gb/s"; + break; + case USB_SPEED_HIGH: + speed_str = "480 Mb/s"; + break; + case USB_SPEED_LOW: + speed_str = "1.5 Mb/s"; + break; + default: + speed_str = "12 Mb/s"; + break; + } + + return speed_str; } /* shows the device tree recursively */ diff --git a/common/usb.c b/common/usb.c index 3a96a34..55fff5b 100644 --- a/common/usb.c +++ b/common/usb.c @@ -409,6 +409,11 @@ static int usb_parse_config(struct usb_device *dev, wMaxPacketSize); debug("if %d, ep %d\n", ifno, epno); break; + case USB_DT_SS_ENDPOINT_COMP: + if_desc = &dev->config.if_desc[ifno]; + memcpy(&if_desc->ss_ep_comp_desc[epno], + &buffer[index], buffer[index]); + break; default: if (head->bLength == 0) return 1; diff --git a/common/usb_hub.c b/common/usb_hub.c index ab41943..1e225e6 100644 --- a/common/usb_hub.c +++ b/common/usb_hub.c @@ -165,7 +165,9 @@ static struct usb_hub_device *usb_hub_allocate(void) static inline char *portspeed(int portstatus) { - if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED)) + if (portstatus & (1 << USB_PORT_FEAT_SUPERSPEED)) + return "5 Gb/s"; + else if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED)) return "480 Mb/s"; else if (portstatus & (1 << USB_PORT_FEAT_LOWSPEED)) return "1.5 Mb/s"; @@ -268,7 +270,9 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port) /* Allocate a new device struct for it */ usb = usb_alloc_new_device(dev->controller); - if (portstatus & USB_PORT_STAT_HIGH_SPEED) + if (portstatus & USB_PORT_STAT_SUPER_SPEED) + usb->speed = USB_SPEED_SUPER; + else if (portstatus & USB_PORT_STAT_HIGH_SPEED) usb->speed = USB_SPEED_HIGH; else if (portstatus & USB_PORT_STAT_LOW_SPEED) usb->speed = USB_SPEED_LOW; diff --git a/include/usb.h b/include/usb.h index d79c865..d7b082d 100644 --- a/include/usb.h +++ b/include/usb.h @@ -76,6 +76,12 @@ struct usb_interface { unsigned char act_altsetting; struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS]; + /* + * Super Speed Device will have Super Speed Endpoint + * Companion Descriptor (section 9.6.7 of usb 3.0 spec) + * Revision 1.0 June 6th 2011 + */ + struct usb_ss_ep_comp_descriptor ss_ep_comp_desc[USB_MAXENDPOINTS]; } __attribute__ ((packed)); /* Configuration information.. */ diff --git a/include/usb_defs.h b/include/usb_defs.h index 0c78d9d..e2aaef3 100644 --- a/include/usb_defs.h +++ b/include/usb_defs.h @@ -203,6 +203,8 @@ #define USB_PORT_FEAT_POWER 8 #define USB_PORT_FEAT_LOWSPEED 9 #define USB_PORT_FEAT_HIGHSPEED 10 +#define USB_PORT_FEAT_FULLSPEED 11 +#define USB_PORT_FEAT_SUPERSPEED 12 #define USB_PORT_FEAT_C_CONNECTION 16 #define USB_PORT_FEAT_C_ENABLE 17 #define USB_PORT_FEAT_C_SUSPEND 18 @@ -218,8 +220,20 @@ #define USB_PORT_STAT_POWER 0x0100 #define USB_PORT_STAT_LOW_SPEED 0x0200 #define USB_PORT_STAT_HIGH_SPEED 0x0400 /* support for EHCI */ +#define USB_PORT_STAT_FULL_SPEED 0x0800 +#define USB_PORT_STAT_SUPER_SPEED 0x1000 /* support for XHCI */ #define USB_PORT_STAT_SPEED \ - (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED) + (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED | \ + USB_PORT_STAT_FULL_SPEED | USB_PORT_STAT_SUPER_SPEED) + +/* + * Additions to wPortStatus bit field from USB 3.0 + * See USB 3.0 spec Table 10-10 + */ +#define USB_PORT_STAT_LINK_STATE 0x01e0 +#define USB_SS_PORT_STAT_POWER 0x0200 +#define USB_SS_PORT_STAT_SPEED 0x1c00 +#define USB_PORT_STAT_SPEED_5GBPS 0x0000 /* wPortChange bits */ #define USB_PORT_STAT_C_CONNECTION 0x0001 @@ -228,6 +242,14 @@ #define USB_PORT_STAT_C_OVERCURRENT 0x0008 #define USB_PORT_STAT_C_RESET 0x0010 +/* + * Addition to wPortChange bit fields form USB 3.0 + * See USB 3.0 spec Table 10-11 + */ +#define USB_PORT_STAT_C_BH_RESET 0x0020 +#define USB_PORT_STAT_C_LINK_STATE 0x0040 +#define USB_PORT_STAT_C_CONFIG_ERROR 0x0080 + /* wHubCharacteristics (masks) */ #define HUB_CHAR_LPSM 0x0003 #define HUB_CHAR_COMPOUND 0x0004