From patchwork Wed Jan 18 09:04:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siva Durga Prasad Paladugu X-Patchwork-Id: 716563 X-Patchwork-Delegate: jh80.chung@samsung.com 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 3v3M0P74B5z9t1B for ; Wed, 18 Jan 2017 20:21:09 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="b362jKsi"; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 18EA6B3929; Wed, 18 Jan 2017 10:20:52 +0100 (CET) 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 DizC8hoeQyDg; Wed, 18 Jan 2017 10:20:51 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 87898B3932; Wed, 18 Jan 2017 10:20:51 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D4DFDB393E for ; Wed, 18 Jan 2017 10:20:47 +0100 (CET) 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 jHYLac36SwDT for ; Wed, 18 Jan 2017 10:20:47 +0100 (CET) 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 NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0042.outbound.protection.outlook.com [104.47.36.42]) by theia.denx.de (Postfix) with ESMTPS id 0660CB3929 for ; Wed, 18 Jan 2017 10:20:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=RRFXI2RIxOwQ82jbopMhp+9YRQKLHQpRPVWte057qsM=; b=b362jKsiy6N8FTb3N3iRGUVNl4MsdS5cyR+oZ11mCyhqmOygbOmUjXnNROUo20O0r7iz1zJXll1iArXtYCSAXjOObBr9JzqrbxMSnBVdPoBQEF2OhHb9nwyWruvfg3sBO8CPIA+QlgulBXARsL10vyoEcUNeFDPwZD+33GhdK8A= Received: from BN6PR02CA0060.namprd02.prod.outlook.com (10.175.94.150) by CY1PR0201MB0761.namprd02.prod.outlook.com (10.160.141.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Wed, 18 Jan 2017 09:04:53 +0000 Received: from BL2NAM02FT009.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::202) by BN6PR02CA0060.outlook.office365.com (2603:10b6:404:f9::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13 via Frontend Transport; Wed, 18 Jan 2017 09:04:52 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by BL2NAM02FT009.mail.protection.outlook.com (10.152.77.68) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.803.8 via Frontend Transport; Wed, 18 Jan 2017 09:04:52 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:45144 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1cTmAl-0006g9-PA; Wed, 18 Jan 2017 01:04:51 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1cTmAl-0001N5-LQ; Wed, 18 Jan 2017 01:04:51 -0800 Received: from xsj-pvapsmtp01 (maildrop.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id v0I94gVx005957; Wed, 18 Jan 2017 01:04:43 -0800 Received: from [172.23.37.99] (helo=xhdsivadur40.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1cTmAc-0001Ej-B5; Wed, 18 Jan 2017 01:04:42 -0800 From: Siva Durga Prasad Paladugu To: Date: Wed, 18 Jan 2017 14:34:30 +0530 Message-ID: <1484730271-21944-12-git-send-email-sivadur@xilinx.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484730271-21944-1-git-send-email-sivadur@xilinx.com> References: <1484730271-21944-1-git-send-email-sivadur@xilinx.com> X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.0.0.1202-22830.006 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39410400002)(39860400002)(39840400002)(39850400002)(39450400003)(2980300002)(438002)(199003)(189002)(92566002)(4326007)(54906002)(106466001)(4001430100002)(2906002)(47776003)(38730400001)(33646002)(39060400001)(81156014)(2950100002)(6666003)(36756003)(575784001)(6916009)(48376002)(2351001)(9786002)(107886002)(8676002)(63266004)(8936002)(50226002)(5003940100001)(77096006)(50986999)(110136003)(5660300001)(189998001)(81166006)(76176999)(36386004)(50466002)(626004)(356003)(305945005)(107986001)(5001870100001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0201MB0761; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2NAM02FT009; 1:0RGMksJ2wKJshoqAw3WFvmbAeBxyMNY8Xsx/VomSCRfX+bze0RrIDCmwS/rOc3UyMpoUQrodjhzwfE3af+XYxU7IJEmGD3qSYC68kvkOJNFIthrHJsu0vNuwM3RiIY96v+ze7B6SMpyktu8NxpO3EXYFa4kCLk667GWMVP1m4v0waNZRCTKXG+VP00vKUT6cnf3pANxsj6WpTMX4wxoo4eL42RDKsTnT8UnbdHdage9k8UUlp6wXfkKtklb58ZiaoMQTHYsctiyqXA73WMnd4qCr7G/NZm5koj/gdyK35bdopkAtPyouRSjIcy86wPbSU9PKdMlzAAGKE0qnYOuzSrIXoTHC/097JawEV76HtfgbqxEilFknbKLxt3hr5S/m5TUDoiKI7Ko2oAOuRxWnzo8qxHVOiYSUfz7/RLSsWoOy3y1IB4NgBEjW9RXiR33QGbEACXgCAxqvAU230hZLjGj4l3zl+oVVVLfBwlquXqJ5IOmkrOT9/hyxJD9HZNWfTm+6RCXftEDuJ8csb6QUulZsce0GTJ3b0n8HK/n84vdGpCFq7B9hgYmpqj/RxfX96HH6BbIfTjQuKZAULieGHw== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 64e55a63-129f-4c5c-272e-08d43f811078 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002); SRVR:CY1PR0201MB0761; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0761; 3:kmJXEejNpe/KIBK0PMnrUGVlZZ94FSTghEKqqaWRUQcySd8hyenm39tme4Zg8FKczlBZYnKuFGP2f1heDl3vCC9naKdjAFUCBtr3MVCSZw1HnBmSrO1JSm20yWFH8umuibm3DpV5lPk1KYO3GU7Kdejw/jgWveNCWoZPwGqDT4J84UsgI1qezZCPlkn6EHdEzLctT8yv3urc2/lc2bcZTPh0pOelNRJWlkNbgkM8JnTRRdbfwz8EA5lEaNT7GmSaPYySIjz8rjIuuHfrLh/JZWfq/xuCmw84SLnwEVB9Jqv90i0+XNERe+6EdWW4vzM9Vk2vZgr44VE1kGqbqMdUxUNVgbpl7osnANIi2E3ObCKc64ltj+85uQGre099huTEboa7PKq0IkPDnmEqMVHNCg==; 25:l3M2N5qLhJ7WsC1G0uCo+R1spfZa5iX6ut4fU9A9jQBA6oCRBnWrNRjKfgnFqBBNXyLWmY50WjeuQwgtxGTZer6QDlCRHFfewhfqF9zRgnaLq0T9kTdKMxdtbLX6U+1zgd2Uny4Az1m+KxaX/pQyDZuvTo68AlWTEbvpTV+ECH5lcKMWRiluWIqWS8a9xRzrZlTmvjP6WxOAAq95zzgvNXcDWtdFpfsB4Wjv8fG82ngDP8Fq+HxsZR52a6F3K/FT+NXPh9l1J9fejF8E49ALSQFhcX3kPAsgEJuvZjz1znOq8eQlt2n+EJlLF0iO/biEYX/3JSVgoqhnTEvkC855qsOjlR7BZygrR+v97cbHQpoRxZIEE/GdpHc3d+HEpqbZr90dGqYdVuGNYWhkSx4rkDMREQoS4agd3p1IGCVN5m4ixtTxLcL9uAgyfwJ15SKST6AQRGukiY8SaQMCxtHHew== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0761; 31:0hQU9zt+rkI//MfCbcopKnBFVidOTrixpLm45dW4hJ79syc7iivCqY2lONEMbHEk6tuHKEaEez92aPJh9beJ9T5N12cLFmZnIrckXPLHqvD6ch/mSPk6dMQcDL+KRL2Z1D9al592M+Pk45n1vppje+zT3jxwLEr/cFLQ3SJ+SYdWkbq4rYy15y9Zqftdw+hSUlknIJYXTqmNyyGfspviZaXelPbFwPPSbGcHJ6ChZYff6hFr2U2H0kjoW+ieSxZ70Ed+b+lN3q5ZQICFWSwAd3EZ+d6YjcGld3msyEqGlC4=; 20:iOBxLy4XfGlf1UvmuQ5x9vkqO6PJN4FCexO1eLJaTma9F8zHRzhnt0Ck1SFMP9+hsRJ1GOQqpuFKw1gC/MxSHLJ/cfa7V5QqW97XKubnr8qzPzmNGOKpLW1dlXa8bwBbbIyuCFpqwdFsWdz7uQ6cdwn7A/WNj54ACpsktoOvUEhSSW7k9oM8rORp4H272Hwh3DFIsE8fdlc5ZGF37Ikvri3D5S4fSV27eMGooKpHaDMbEtCH+G2NzdbY0LQ6BUSAY4LlpHnaSmxPhVHnkW+CiCLOJzPvm4zfacrz2YamkCHJoPz9Qwwzb9Z2TJsb4/sMTGsvx9HhJsiAJAoAnH0IWiXqy85UN7RA/IA8kartQCgLsv+m0uv5OsNsMwNF9gwI8M7RTwnjM4mXFvLF5yYevtxL6nRjWbhVl8om+CXBUft18F4cpG8dUfXnItvgM9brkttzKnmkbfPp2dQgDfklie9+vVPvOB+vDe0/6E786rMTRmkLk1tQTdEPo3w/a7yQ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(13024025)(13015025)(13023025)(13018025)(13017025)(10201501046)(3002001)(6055026)(6041248)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(6072148); SRVR:CY1PR0201MB0761; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0201MB0761; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0761; 4:L2mDxLAmuSOzpmwQ12Af2Jk4MamFuOmEa22KBWZcb6MdhI1AOfNmg0FNryYuWNWFc5WThuPmOBLflg4OuuDB592vaqI7+PTvp+WV/xLaPhZ1F5EvUusYn+iucbcFlBqO02eoL6Uof6vXMSA4thXOel0lN27J3nxpxWsWciNKloNxNpVJL7BBUa/PLlwtTSxghmxovs2czIDb+TCna+53dVfZb+PCB4HOOgPXW576S0LIvpYecdaEtqLq0yXzIiq/EGTM2yiZAIAl09Iu43lz6J7mvWh0sNVnelE+IqH0H66r3vQbJ4sharA0oJn5DhP9PFBYOO9YIvAlNNCgVUDyeF1/t/2bhhXW70DvzT1UjV9V/BdVRtAZKeUR8x5VqoLXlF+ZT1uEkSiCjI8PC6U92Qyd2m99wgmaYOxxV9roXyxcVm5R41SIL2PCMTnfkI/O9Kon5V4dErXYjYdiGDgrA4mQbbMZs91CIYan/IHfwKkPH424MtATWHXtBfDNJqXXiSBT40Z+7xDlGP/9fbUVy64/GK0KCrqLeS/vPtX3fGCfS3bjZV6Mm7/BwuvbXFMR8z6DQFeAZ/vDINapsLJka6rkqbJTeXA048WU9wG8rD0ew3B9c07rY6Xo4i9EQXZKrSlGiL9UIBDncxIut1hEQz4zG6KjBUpHuTOauyk6MYC+PVfTODytg4LKYaBzBl8KFaBYxX2VOO3Xmy3KXQZY6v6czFiqrb8kBjpk/d/+/qU= X-Forefront-PRVS: 01917B1794 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0201MB0761; 23:NyioQduQg+dnGljBPvAiQ18eLPcLTVaDo2v/jhS?= =?us-ascii?Q?/JP9zt30YUkAnQThGK2NhIbNtRnQuVO3Nbehy/VtFrhla/0daSv4ima+b3RM?= =?us-ascii?Q?Ta/Bfq+cnDhl8xR2eBwIh0IKSH8+UNvU7x0dz7njXvauto5gkWV8EcdMu6g3?= =?us-ascii?Q?NIGzJF2TePjusIFwU2AIbXSEBtLCRtqL5AvNCEtdqOLx5XBiZ6NwJhMvv0Z4?= =?us-ascii?Q?RQK9cVdAgZ7ki8Qyl5WuzD78+OBM7qzt/g6PD5rxD6TrLaTu7Gv/E5tqrwTU?= =?us-ascii?Q?tHr1InftJGISMNQv6EoE2QSvH4+7ouOcG9Izqq28Z1acIvzEz8uFYnR2iR3S?= =?us-ascii?Q?ZkicrZFo35dJGsdNL/outaZN1iHQNREV7GGB1n33JiWyzy/vq8D/L4Obfhd/?= =?us-ascii?Q?NfKuroitqjZXiMXCmrUgrlZ395Erx+TCDspxw1IfhHJ8aoXcWBL+qVtZ2eqc?= =?us-ascii?Q?43sw0PUNb0j7hQRsTFRgLO/eBV5uKfPzOmyv4SVUm9ViR/IX3COHI/nB0Quq?= =?us-ascii?Q?v8HDPKoYuGJt4rRiNFHNJ+eDCgnVbeZDs4HkBzVuVxN6BJ+VQ//uwsYbeDXy?= =?us-ascii?Q?rQiiRgMQpDo965x4WzHDp/GhkmWhZzAqFB0696HTIQe8JMBxN6DIhmDhlNJR?= =?us-ascii?Q?3MUhbUOG0Q6Lsx6zpCUb1s79oxkBRISb715vJCZ+aH4dXhROtBY+fR9hMhNU?= =?us-ascii?Q?Z80eEkTUJ6kwg+X8W74EY2mCDyE1s1qV+fXvr9IyclOLprLMh0dK/NrcNHN4?= =?us-ascii?Q?2fGzydyXu/O1G7VHtX0pmiYCFadhGb8XAvF8Dt/11HRBP7YNL9+28yJgcN03?= =?us-ascii?Q?i4XR7GsmgGMEaWQFWC7rmoyFJrxBOidFIMZBUw8Ay4z+l5BUZb839EAdwptl?= =?us-ascii?Q?iGoHHpGUA9PaI+DTrV0q8bLtAqIRRx8lgWfGSwwJVcyXKWw6byhb01Ov9jfc?= =?us-ascii?Q?WkAr30Vkh3R1q32W06o2g2hkVDJjnMS73BSSBeFqb8QlPEv6fajboGZ30qG+?= =?us-ascii?Q?7nkUF44KSK2spdawVOjaP06Kuw0INqZHYz/XnZqPAhoWMdSuwzBLwUNyo4nA?= =?us-ascii?Q?u4oqDU5G/fPn4a2G45XuHqenmwAWCg7RGUT+V3Chnz/nL6GvYlG4wRXEDTmW?= =?us-ascii?Q?Kyj0nSZfmVzf4lbSdhO1op7oSPy5K/GQBzB7F6YNJeRyggGhzAPfxGK12DUW?= =?us-ascii?Q?Nl1Ei5sDKmsyk7F+K/4N+6Thmr6yOQdPTyZTTYciNXfjY85T/sAtbe59fQkZ?= =?us-ascii?Q?cqw/qLTdW9CXYZQ9GQig=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0761; 6:sPtonzH3XPPBPu23jM79NC6FUlBN06cGr3cvcEamM+ly9zWV4lqBriK1o8g1+LJYxs8lxUYgKn71gx9deTlgjlodKygrTmj9Jm187U6OiT87Vge297VmBRduz5jBP4fdoyQrkgNm9szG5YzpMgHAHeHea2OARYfxHReLNTbBZ/BDb7j6P09lAidQC5xOw+9tkxwgn5J1Iteb7KEoQ5R2JC6qGfC9NC5ir4MLfL3Fl58qR4RCHW7YWE6XDZZg1ySQV/nWHhJ/JB/T6C9OUcKSM9haVZKv31VJfB9jHKK6NPDce/6+F4AfcG85hsiZZilJHY0nnCZvnRiRSbW0ap1l01NUa6AkKRv4H9NfNVgu3eaHYXtni67qegtCLE2ggpMpxRmIDl1oqEiONFvntvTloNG86AQAVgbEMx2nF5tAvV7+ynbiwhpyIHw/zrFrrrtUjtdu/NAGN/tT2NCkKlsHWA==; 5:5piN5s/WYUCesP6tEce7/p+8oLYh0RXgjkNW3vUhVL6pYofVfQB1EsCVa8+eDCQTV9WoN1AeoEe8GYdcadWeGjDZfae1C4DE+cuU8grqY4XStdh1juTkNeXYfdF3cghYoF0E+sqxHaWsfDSnH+2ACg==; 24:TEFdRr1kW2B7rT5TIgW477KA0R8gFjYn+jx9yZkWYQsSZXEGH4npOfZ4EudIM2sbVlEOWyvkKurEwPVZTaqGeu7Vj67BThc0ttSgTMiXlRk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0761; 7:7XWSwG3jdSW06aNt/LRUO53Bk/zEIMChcJFtbL9MjCsdVF7MxhQwF7E39lOvCsbAU80ong7D2WUE0S/2G1M01IvNHssHdfqCONHFq9sUped2J+1Eu61dFaPw9y4YHwU10UmGqz5bBg663mT7sNX6J7uMTuW9V+mKnVKQugj070CJgYHJ2cunxZa8Bki2iv1ceTikZfZmeY0+vr4e0PpSeZPBSJGxQF4Duo9KyzpBXpCr2Z6EsY6Oqrnm1H23WhRqse8DnAfJ6oiNW77A7/9n7CYpjCQlLl4mkT/HcvB54UYuXcKlPxFoAGPQXi5P8rwk41xzl3jsmnY8W1U10v+Qj/uX9Y0/GJ4r4SYpc6QejQ+cjbOMrnTjbq8/6E++Be95xF0oemNB4C48xDjOfOBxXPKJc/GOTzZBlMO5vNyHIoNha2pXkbvz7aBl4Q5FBKTATqihsmI+/TkbbgDcZQ1Pjw== X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 09:04:52.3067 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0201MB0761 Cc: afleming@gmail.com, michals@xilinx.com, Siva Durga Prasad Paladugu Subject: [U-Boot] [PATCH 11/12] mmc: sdhci: Add support for eMMC HS200 mode X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add support for eMMC HS200 mode by reading card type from ext_csd and then by switching to HS200 timing mode. Signed-off-by: Siva Durga Prasad Paladugu --- drivers/mmc/mmc.c | 24 ++++++++++++++++++------ drivers/mmc/sdhci.c | 18 +++++++++++++----- include/mmc.h | 8 ++++++++ 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index d4ea0c2..7e18a38 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -619,9 +619,16 @@ static int mmc_change_freq(struct mmc *mmc) if (err) return err; - cardtype = ext_csd[EXT_CSD_CARD_TYPE] & 0xf; + cardtype = ext_csd[EXT_CSD_CARD_TYPE] & 0x3f; - err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, 1); + if (cardtype & EXT_CSD_CARD_TYPE_HS200) + err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, + EXT_CSD_HS_TIMING, + EXT_CSD_HS_TIMING_HS200); + else + err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, + EXT_CSD_HS_TIMING, + EXT_CSD_HS_TIMING_HIGH_SPEED); if (err) return err; @@ -636,8 +643,10 @@ static int mmc_change_freq(struct mmc *mmc) if (!ext_csd[EXT_CSD_HS_TIMING]) return 0; - /* High Speed is set, there are two types: 52MHz and 26MHz */ - if (cardtype & EXT_CSD_CARD_TYPE_52) { + /* High Speed is set, there are three types: 200MHZ, 52MHz and 26MHz */ + if (cardtype & EXT_CSD_CARD_TYPE_HS200) { + mmc->card_caps |= MMC_MODE_HS200; + } else if (cardtype & EXT_CSD_CARD_TYPE_52) { if (cardtype & EXT_CSD_CARD_TYPE_DDR_1_8V) mmc->card_caps |= MMC_MODE_DDR_52MHz; mmc->card_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS; @@ -1659,7 +1668,9 @@ static int mmc_startup(struct mmc *mmc) if (err) return err; - if (mmc->card_caps & MMC_MODE_HS) { + if (mmc->card_caps & MMC_MODE_HS200) { + mmc->tran_speed = 200000000; + } else if (mmc->card_caps & MMC_MODE_HS) { if (mmc->card_caps & MMC_MODE_HS_52MHz) mmc->tran_speed = 52000000; else @@ -1670,7 +1681,8 @@ static int mmc_startup(struct mmc *mmc) mmc_set_clock(mmc, mmc->tran_speed); if ((mmc->card_caps & (MMC_MODE_UHS_SDR50 | - MMC_MODE_UHS_SDR104)) && + MMC_MODE_UHS_SDR104 | + MMC_MODE_HS200)) && (mmc->cfg->host_caps & MMC_MODE_NEEDS_TUNING)) { err = mmc_execute_tuning(mmc); if (err) diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c index 4f29ba1..6496bdb 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c @@ -157,7 +157,8 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, /* We shouldn't wait for data inihibit for stop commands, even though they might use busy signaling */ if ((cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION) || - (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK)) + (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK) || + (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK_HS200)) mask &= ~SDHCI_DATA_INHIBIT; while (sdhci_readl(host, SDHCI_PRESENT_STATE) & mask) { @@ -179,7 +180,8 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, mask = SDHCI_INT_RESPONSE; /* only buffer read ready interrupt whil tuning */ - if (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK) + if ((cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK) || + (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK_HS200)) mask = SDHCI_INT_DATA_AVAIL; if (!(cmd->resp_type & MMC_RSP_PRESENT)) @@ -197,7 +199,8 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, flags |= SDHCI_CMD_CRC; if (cmd->resp_type & MMC_RSP_OPCODE) flags |= SDHCI_CMD_INDEX; - if (data || (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK)) + if (data || (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK) || + (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK_HS200)) flags |= SDHCI_CMD_DATA; /* Set Transfer mode regarding to data flag */ @@ -407,8 +410,13 @@ static int sdhci_set_clock(struct mmc *mmc, unsigned int clock) if (clock == 0) return 0; - if (mmc->is_uhs && host->ops->set_delay) - host->ops->set_delay(host, mmc->uhsmode); + if (((mmc->card_caps & MMC_MODE_HS200) || mmc->is_uhs) && + host->ops->set_delay) { + if (mmc->is_uhs) + host->ops->set_delay(host, mmc->uhsmode); + else + host->ops->set_delay(host, MMC_TIMING_HS200); + } if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) { /* diff --git a/include/mmc.h b/include/mmc.h index 56395ee..e0b5510 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -223,6 +223,13 @@ #define EXT_CSD_CARD_TYPE_DDR_1_2V (1 << 3) #define EXT_CSD_CARD_TYPE_DDR_52 (EXT_CSD_CARD_TYPE_DDR_1_8V \ | EXT_CSD_CARD_TYPE_DDR_1_2V) +#define EXT_CSD_CARD_TYPE_HS200_1_8V (1 << 4) +#define EXT_CSD_CARD_TYPE_HS200_1_2V (1 << 5) +#define EXT_CSD_CARD_TYPE_HS200 (EXT_CSD_CARD_TYPE_HS200_1_8V \ + | EXT_CSD_CARD_TYPE_HS200_1_2V) + +#define EXT_CSD_HS_TIMING_HIGH_SPEED 1 +#define EXT_CSD_HS_TIMING_HS200 2 #define EXT_CSD_BUS_WIDTH_1 0 /* Card is in 1 bit mode */ #define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */ @@ -293,6 +300,7 @@ #define MMC_TIMING_UHS_SDR50 2 #define MMC_TIMING_UHS_SDR104 3 #define MMC_TIMING_UHS_DDR50 4 +#define MMC_TIMING_HS200 5 #define MMC_TIMING_HS 1 /* Driver model support */