From patchwork Wed Oct 7 11:38:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yoshihiro Shimoda X-Patchwork-Id: 7344581 X-Patchwork-Delegate: geert@linux-m68k.org Return-Path: X-Original-To: patchwork-linux-sh@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 0C1B79F302 for ; Wed, 7 Oct 2015 11:39:58 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id EBA06205EF for ; Wed, 7 Oct 2015 11:39:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CFAFA205DC for ; Wed, 7 Oct 2015 11:39:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753805AbbJGLjx (ORCPT ); Wed, 7 Oct 2015 07:39:53 -0400 Received: from relmlor4.renesas.com ([210.160.252.174]:19613 "EHLO relmlie3.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753675AbbJGLjv (ORCPT ); Wed, 7 Oct 2015 07:39:51 -0400 Received: from unknown (HELO relmlir4.idc.renesas.com) ([10.200.68.154]) by relmlie3.idc.renesas.com with ESMTP; 07 Oct 2015 20:39:50 +0900 Received: from relmlac3.idc.renesas.com (relmlac3.idc.renesas.com [10.200.69.23]) by relmlir4.idc.renesas.com (Postfix) with ESMTP id 4DAB645ABF; Wed, 7 Oct 2015 20:39:50 +0900 (JST) Received: by relmlac3.idc.renesas.com (Postfix, from userid 0) id 3B8531806F; Wed, 7 Oct 2015 20:39:50 +0900 (JST) Received: from relmlac3.idc.renesas.com (localhost [127.0.0.1]) by relmlac3.idc.renesas.com (Postfix) with ESMTP id 32D671800A; Wed, 7 Oct 2015 20:39:50 +0900 (JST) Received: from relmlii2.idc.renesas.com [10.200.68.66] by relmlac3.idc.renesas.com with ESMTP id WAK17430; Wed, 7 Oct 2015 20:39:50 +0900 X-IronPort-AV: E=Sophos;i="5.17,648,1437404400"; d="scan'";a="197152523" Received: from mail-pu1apc01lp0022.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.22]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA; 07 Oct 2015 20:39:48 +0900 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=<>; Received: from localhost (211.11.155.144) by SG2PR06MB0919.apcprd06.prod.outlook.com (10.162.204.152) with Microsoft SMTP Server (TLS) id 15.1.293.16; Wed, 7 Oct 2015 11:39:47 +0000 From: Yoshihiro Shimoda To: , , , , , , CC: , , Yoshihiro Shimoda Subject: [PATCH v2 6/6] usb: host: xhci-plat: add support for the R-Car H3 xHCI controllers Date: Wed, 7 Oct 2015 20:38:58 +0900 Message-ID: <1444217938-4668-7-git-send-email-yoshihiro.shimoda.uh@renesas.com> X-Mailer: git-send-email 1.9.4.msysgit.1 In-Reply-To: <1444217938-4668-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> References: <1444217938-4668-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> MIME-Version: 1.0 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TY1PR01CA0008.jpnprd01.prod.outlook.com (25.161.131.146) To SG2PR06MB0919.apcprd06.prod.outlook.com (25.162.204.152) X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0919; 2:24PyZq+RzZfW8KdL4PusKzXoR36n0JjlFOl4Jk9KCYiJcDSsYrVv62C7LRq8ndKEiUNYR6KkqcoyIEz1PaHqukoOEBGsLZDxBIPfkr7XI726lV6fQuLx83rJ2nPpvXRXsGFUO3U9wz4mfGOEQIx+Bix7v1I3GHZyYzmx4bkTBUM=; 3:kCZo5B8+d37u1FkhOVP7LRGsYGkO/N51B+7cjRITciVaMAaWvs7AVDRXzLW3x9ftreEaDPB8FtXGGvGTDBrqao7uwdpYZwJEro19e6my51HiS1GF66G8frNhiwRXVHGC2HNsg70t9NqLGx9WY69gZg==; 25:kRKURw96GrSCcGvooc04RjcDohM35gwscarXiRfUWTJD7m+tejBzH7nzkaXlatk2gn88ajzuBskAw66D+/5TWHs/NW5K0SRApP83/rVjmu9WAH/8DYspPQ6Saax2coeA295Cef8WoPwHZUf+sCnn0zNm/QQI8VHhWlYViAgnNN2HTnK/jqiiKACKbXTZOi6jxa9beZKAOW6QXxA8kMuufRXm4P4sEYh4sRVGD+J1n6DeIEmhFwlVJ/4UHDtb2LsMhpUYfYZEnJsNFDnr+7FxNA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SG2PR06MB0919; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0919; 20:+zLXbSvkZjanTouZZdsin1X3MWK6/0vCz+kDKahtlPzsK0DUm4KromHbu4rZLpJXCAa3rcbJO62jFbZ1Rk4tPvC0GBfpQ8KLNIG+PberhuTbR6P1eqqJDBm/wdoeIDDxqn0HWtIK0RnO4/vQrKcIgCpWpIx6YRSfFiTm3Y4+4eVXtb8naDqvH9zKIX2k2hT5woIO/7e9GhRGTlq6t+VkYjbG1OXCgLdZfY14yMqOUnbeII9h5lUPy7HWQyXaQOH7QSgHiFITZkqeZvJfvzy64+XOgDDCjxq8/+Ifft+OB2KlQOQ7oRe4m+YYIAeynpuwmljQtqCu2V4gIY3JZbAnXHPHOUm80meqStPBlF7kSzpig9qJwxb4AOgN9ejJnf/Aoan58NA+kbbE07NEgkfDaITYz/ddkZH55rHo1m1ksXgtWtfQk55zaDv0qFsAs6uTiYYJRhKRMmTNYf0iIVnMPPvMlEVXTnDde7Y/hWEPmi2z0XLgaHZmKkUl9mNU6pPX; 4:hO5Ggl/FgvFa1XLcR2vSFPTha2mddXmA/fPShNTrc23lnUrycJrO+pb2wQRCxa4moneH4R+G5xa8PkDK9drXOztJMgcHonkNxoo5QxKKtLxcFSlk0txYxSW71YaRSTs0VB5+8fbWsqnB4oF9iiysQ3Q3BqBKZfgPNK7QSG3dXW5PmQMRJb3tTpkOOMSDngsj5J9uMZB6ePl7cZdSllz67k9u3MzXB5wttxPbMopC/0wxMAYWd5Z67z8hiYlIXtYCDOofQUbWkjfGC45K2ozfn1/Pd7DQgDUObzdKlIDbkep7aF17bZaxI0UfuHlyf2jPYNb7fhzzAONpzZW3JCua0n0227ySImzAcnjhZzy+DWE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(8121501046)(5005006)(3002001); SRVR:SG2PR06MB0919; BCL:0; PCL:0; RULEID:; SRVR:SG2PR06MB0919; X-Forefront-PRVS: 0722981D2A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(6069001)(199003)(189002)(105586002)(87976001)(50466002)(189998001)(5004730100002)(77096005)(107886002)(42186005)(229853001)(5001960100002)(106356001)(76506005)(48376002)(40100003)(122386002)(5001770100001)(5008740100001)(76176999)(101416001)(81156007)(47776003)(64706001)(5003940100001)(46102003)(66066001)(19580405001)(97736004)(2950100001)(42382002)(92566002)(33646002)(5007970100001)(50986999)(19580395003)(78352002)(50226001)(36756003)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR06MB0919; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; A:0; MX:0; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SG2PR06MB0919; 23:+p/ib8/R3lfuaByn1529T9Rxu9TcpChzQTDfscG2A?= =?us-ascii?Q?JZJWM8XV3UYuzKLPwissOKSij3tLGBdYwTtcXQHz/by9/wxDM9BJM6t2l0q/?= =?us-ascii?Q?2fyKRZSLpjMutTR0YOsRZ4Ccv0pkgO5L5LwRqfLzmj5zQU2orRTpQfDfzJYg?= =?us-ascii?Q?Dzt7LXPCzrg+VwMjxhW2YUcmc4QWXrObc4nziXv5HFwiuRm4h22q8d7hADOS?= =?us-ascii?Q?xHhkUVQaxU6pdGinr9O7NlHC32lTaqxplR1HCZigr5KQ01+Ak64Quk45fiWZ?= =?us-ascii?Q?b+wjD+sfw9adO433IIEw8HtKyqQyfoSpkoQXGZr4DwLLQdDwcwEa0Job2JnR?= =?us-ascii?Q?cjCe0f3WEE/8JxIR/+Ejm8CSATgepRoyuYKGw9P5dlfRXa5UCzZeDOwRs1Pu?= =?us-ascii?Q?SgMcu21gLBXoC6PEvNNUKWi6erkkSuFEU8ryAB8PYBIVpbJeYUgHFkBPHqnm?= =?us-ascii?Q?jxVGkLNb2ls8m/yNfYNfs1ZgKkB/ffu4z9udu9WwwsdVKMHy0MZnFzt7gJuQ?= =?us-ascii?Q?tjmS2xI4W8zSxc0anYsuonuWyM0t7qjS4c7fy5D/tF6WoXMW7xqLx9zXqixY?= =?us-ascii?Q?+A9ZqOCxeP9vcZSKVYA29YUayXdjZ99O3NgV0/L4fG3koCBKcm2CoUb3CZi3?= =?us-ascii?Q?3GewwbQv6H6vutOlF+9JhKCtmbw0HTxmIEJh6Z5kGnYISiDXFwaEaPDLiByJ?= =?us-ascii?Q?/2CX8U/mO5RnzJFXCkB1RadsDdfKxkPKuNvbH3vc85ddmm9jIsz6+vgma7ze?= =?us-ascii?Q?bS10FHqGTWNcGFCBKPwuZHDBBiTeZBZaNbYNS/0bGLFL08/sfBDFBMA7NNnQ?= =?us-ascii?Q?2BnJUSMLwPRz14QKSn9wedMZmeMsXQOtdEpkqfr9oivr7EnZZQfmJsckPSQy?= =?us-ascii?Q?Azeo2IbSiL1B+/Bxf0WazWkjQgPM0QVERndv6MlwqEuTzsH3kWnCtT5qZyGn?= =?us-ascii?Q?1Z2X+tQESNaz8s82Z/K/4LoVOAxNna0dp+RWf1octAv415C/bFAe4zI/ox0M?= =?us-ascii?Q?iMcNMveMugVh+PcjEwU1CAjqLH1THAXo/geyd/t/bOgaTv94wdod69P7KK9P?= =?us-ascii?Q?/RIjvZQsnbsDap4tI20h6sUErPSKtSxrKiexJwICRc/Q24DPEldPCw/8yoVf?= =?us-ascii?Q?jm8hzQOSKyCHhlRrrZ92JjpMvH/Hep/?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0919; 5:hkYbHrkDQMLD2vVoc5bRbocIoZtWqvH3gApZaMs+0gsjY1gXBACrnYf/sanu6KlDEAsaXdZZTINzNWBKcD/OWUo5qnBvVTsFnqTb7A1uL83jNzqkbeblA817dbyxB9WjbEly3ZNgY+7erDiaChip9w==; 24:CeDfezL2KYhay2YYkHYsjAooeDSLpkiBx4dfiaI4Mx9rrcZ7FmmgE6szPLn9xuCMpPB/8mz5FRo+bRuKabvI0V+FSuIMObt+qo+aGS40BhI=; 20:cGA8mwUFLix+uush8wC849GdpFi9FMidbfY79ZxoOvM7k1U3hgpg5zlSLyRvhjfgXFBCyBhg4u8d58uh2CdxBmRmpSVr3qiNjPi1zibDAHYCo8x6mquivSIzNaAiQJy7L4UYE2eXbs9QpAjLhj8tNvO0pI6MqE3Z1/8O3ixh/R4= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2015 11:39:47.1308 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR06MB0919 Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=AXB_X_OUTLOOKPROT_ENVSDR, BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The R-Car H3 has two xHCI controllers. This SoC is compatible with R-Car Gen2 SoCs, however this SoC doesn't need some specific registers setting, and need a new firmware. Signed-off-by: Yoshihiro Shimoda --- Documentation/devicetree/bindings/usb/usb-xhci.txt | 4 ++-- drivers/usb/host/xhci-plat.c | 14 ++++++++++++-- drivers/usb/host/xhci-plat.h | 1 + drivers/usb/host/xhci-rcar.c | 7 +++++++ drivers/usb/host/xhci-rcar.h | 1 + 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt index 106299a..0825732 100644 --- a/Documentation/devicetree/bindings/usb/usb-xhci.txt +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt @@ -3,8 +3,8 @@ USB xHCI controllers Required properties: - compatible: should be one of "generic-xhci", "marvell,armada-375-xhci", "marvell,armada-380-xhci", - "renesas,xhci-r8a7790", "renesas,xhci-r8a7791", "renesas,xhci-r8a7793" - (deprecated: "xhci-platform"). + "renesas,xhci-r8a7790", "renesas,xhci-r8a7791", "renesas,xhci-r8a7793", + "renesas,xhci-r8a7795" (deprecated: "xhci-platform"). - reg: should contain address and length of the standard XHCI register set for the device. - interrupts: one XHCI interrupt should be described here. diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index dd63f3b..ac08c2e 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -51,7 +51,8 @@ static int xhci_plat_setup(struct usb_hcd *hcd) { int ret; - if (xhci_plat_type_is(hcd, XHCI_PLAT_TYPE_RENESAS_RCAR_GEN2)) { + if (xhci_plat_type_is(hcd, XHCI_PLAT_TYPE_RENESAS_RCAR_GEN2) || + xhci_plat_type_is(hcd, XHCI_PLAT_TYPE_RENESAS_RCAR_GEN3)) { ret = xhci_rcar_init_quirk(hcd); if (ret) return ret; @@ -62,7 +63,8 @@ static int xhci_plat_setup(struct usb_hcd *hcd) static int xhci_plat_start(struct usb_hcd *hcd) { - if (xhci_plat_type_is(hcd, XHCI_PLAT_TYPE_RENESAS_RCAR_GEN2)) + if (xhci_plat_type_is(hcd, XHCI_PLAT_TYPE_RENESAS_RCAR_GEN2) || + xhci_plat_type_is(hcd, XHCI_PLAT_TYPE_RENESAS_RCAR_GEN3)) xhci_rcar_start(hcd); return xhci_run(hcd); @@ -78,6 +80,11 @@ static const struct xhci_plat_priv xhci_plat_renesas_rcar_gen2 = { .firmware_name = XHCI_RCAR_FIRMWARE_NAME_V1, }; +static const struct xhci_plat_priv xhci_plat_renesas_rcar_gen3 = { + .type = XHCI_PLAT_TYPE_RENESAS_RCAR_GEN3, + .firmware_name = XHCI_RCAR_FIRMWARE_NAME_V2, +}; + static const struct of_device_id usb_xhci_of_match[] = { { .compatible = "generic-xhci", @@ -99,6 +106,9 @@ static const struct of_device_id usb_xhci_of_match[] = { .compatible = "renesas,xhci-r8a7793", .data = &xhci_plat_renesas_rcar_gen2, }, { + .compatible = "renesas,xhci-r8a7795", + .data = &xhci_plat_renesas_rcar_gen3, + }, { }, }; MODULE_DEVICE_TABLE(of, usb_xhci_of_match); diff --git a/drivers/usb/host/xhci-plat.h b/drivers/usb/host/xhci-plat.h index 20b32a7..5a2e2e3 100644 --- a/drivers/usb/host/xhci-plat.h +++ b/drivers/usb/host/xhci-plat.h @@ -16,6 +16,7 @@ enum xhci_plat_type { XHCI_PLAT_TYPE_MARVELL_ARMADA, XHCI_PLAT_TYPE_RENESAS_RCAR_GEN2, + XHCI_PLAT_TYPE_RENESAS_RCAR_GEN3, }; struct xhci_plat_priv { diff --git a/drivers/usb/host/xhci-rcar.c b/drivers/usb/host/xhci-rcar.c index 010a24f..623100e 100644 --- a/drivers/usb/host/xhci-rcar.c +++ b/drivers/usb/host/xhci-rcar.c @@ -17,7 +17,14 @@ #include "xhci-plat.h" #include "xhci-rcar.h" +/* +* - The V2 firmware is possible to use on R-Car Gen2. However, the V2 causes +* performance degradation. So, this driver continues to use the V1 if R-Car +* Gen2. +* - The V1 firmware is impossible to use on R-Car Gen3. +*/ MODULE_FIRMWARE(XHCI_RCAR_FIRMWARE_NAME_V1); +MODULE_FIRMWARE(XHCI_RCAR_FIRMWARE_NAME_V2); /*** Register Offset ***/ #define RCAR_USB3_INT_ENA 0x224 /* Interrupt Enable */ diff --git a/drivers/usb/host/xhci-rcar.h b/drivers/usb/host/xhci-rcar.h index ba3ad31..2941a25 100644 --- a/drivers/usb/host/xhci-rcar.h +++ b/drivers/usb/host/xhci-rcar.h @@ -12,6 +12,7 @@ #define _XHCI_RCAR_H #define XHCI_RCAR_FIRMWARE_NAME_V1 "r8a779x_usb3_v1.dlmem" +#define XHCI_RCAR_FIRMWARE_NAME_V2 "r8a779x_usb3_v2.dlmem" #if IS_ENABLED(CONFIG_USB_XHCI_RCAR) void xhci_rcar_start(struct usb_hcd *hcd);