From patchwork Mon Jul 23 10:08:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chunyan Zhang X-Patchwork-Id: 10539827 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B46A914BC for ; Mon, 23 Jul 2018 10:08:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A3089284FF for ; Mon, 23 Jul 2018 10:08:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 97889285B9; Mon, 23 Jul 2018 10:08:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 29101284FF for ; Mon, 23 Jul 2018 10:08:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388043AbeGWLJS (ORCPT ); Mon, 23 Jul 2018 07:09:18 -0400 Received: from mail-pl0-f67.google.com ([209.85.160.67]:35358 "EHLO mail-pl0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388137AbeGWLJR (ORCPT ); Mon, 23 Jul 2018 07:09:17 -0400 Received: by mail-pl0-f67.google.com with SMTP id w3-v6so32390plq.2 for ; Mon, 23 Jul 2018 03:08:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=Rw9RlSwjc5mOTeGzIBOBPdNtEr8wmRWOL0Zk2nBVV8g=; b=NgKHu3kRW4/opugi3BxT8NhpinvQYdpyqkNjbdJO5ONhnKhreef797WiZ4bGBWoccc 7Zh+KrqERsSvkC1v9gJK/5HK9MGwzbO/ESaXmRNnrtnsKWGcYQggxeeWg7dPoWLckQV8 sjtKfqLyR2vSKuWIhmRJP112W6yAbJOLuaCJ4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Rw9RlSwjc5mOTeGzIBOBPdNtEr8wmRWOL0Zk2nBVV8g=; b=U/sg7XLNma5HSjrNlJPjUw/pIquq2F4FwsNu4PWGfMK2lhIjuQXK/sjXzWwbDI0Dzv wB2L9KXlo+Z4IL8ADBogBpQvUFG14GBqHwiI1+Gf32KO4kTKFI06iTJ25X+Z5aXK82iP //S36by8uahYBPUc/f6XNEw3It1NrhVhE1XVHmvGdUO31BpfU9kAcJC5upbDZr67cD23 zhYtVBRi9Nu7DO4DCawZcFpSSY0htM6tJoSY1gAejo4TIuC/ZayrdevUoLiX9f43NEAH EWHruurgHJmhBxCSTEJJnU8oRY+OPC5o8xTDgT9kuthD2gL1SJV8F2NGL2Dz5CLMQt5o wmWQ== X-Gm-Message-State: AOUpUlEuB04zeep6dH4UCGQe1VMICj8uiMcxN2mrfa3Ih3ok0WiRf/Km iNnl96lvmhpWE4aMgOfHG6tSUQ== X-Google-Smtp-Source: AAOMgpemRWIlXBz74CA98czO8QuT3D6IfsWqr3URwqmrrXe/repw3w0pcKBI8DE4xBkW8T+1UG84YQ== X-Received: by 2002:a17:902:7688:: with SMTP id m8-v6mr12228669pll.338.1532340530835; Mon, 23 Jul 2018 03:08:50 -0700 (PDT) Received: from ubt.spreadtrum.com ([117.18.48.102]) by smtp.gmail.com with ESMTPSA id e82-v6sm13470698pfk.87.2018.07.23.03.08.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 23 Jul 2018 03:08:49 -0700 (PDT) From: Chunyan Zhang To: Ulf Hansson , Adrian Hunter Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Orson Zhai , Baolin Wang , Billows Wu , Jason Wu , zhang.lyra@gmail.com Subject: [PATCH V4 0/7] mmc: add support for sdhci 4.0 Date: Mon, 23 Jul 2018 18:08:21 +0800 Message-Id: <1532340508-8749-1-git-send-email-zhang.chunyan@linaro.org> X-Mailer: git-send-email 2.7.4 Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From the SD host controller version 4.0 on, SDHCI implementation either is version 3 compatible or version 4 mode. This patch-set covers those changes which are common for SDHCI 4.0 version, regardless of whether they are used with SD or eMMC storage devices. This patchset also added a new sdhci driver for Spreadtrum's controller which supports v4.0 mode. This patchset has been tested on Spreadtrum's mobile phone, emmc can be initialized, mounted, read and written, with these changes for common sdhci framework and sdhci-sprd driver. Changes from V3: * Addressed comments from Adrian: - set "Host Control 2" when enabled v4 mode, and do the same for reset-for-all in sdhci_do_reset(); - Moved "v4_mode" above to the private; - Change the subject of patch 2/7; - Use %pad to pirnt dma_addr_t; - Adjusted to not clear SDHCI_USE_SDMA for v4 mode in sdhci_setup_host(); - Changed the function name to sdhci_can_64bit_dma() instead of sdhci_use_64bit_dma; - Adjusted to write SDHCI_CTRL_64BIT_ADDR when we decide to use 64-bit DMA in V4 mode, rather than check the register to decide if use 64-bit DMA; - Added a comments for using dma_zalloc_coherent() to replace dma_alloc_coherent(); - Added SDHCI_SPEC_420; - Set 16-bit block count register to zero conditionally when using 32-bit block count; - Adjusted to Use 32-bit block count register only for v4.10 v4 mode; - Added the rules used for AUTO CMD23/12 to AUTO CMD as well; - Moved the selection of Host Control 2 register CMD23 Enable to sdhci_init() from Spreadtrum's driver; - Used usleep_range() to replace udelay(); - Added the checks for clk_prepare_enable(). * Added comments for Spreadtrum's specific changes to the register SDHCI_SOFTWARE_RESET; Changes from V2: * Addressed comments from Adrian: - Added sdhci_enable_v4_mode() for enabling v4 mode instead of determining by reading from registers; - Added support for 64-bit SDMA address in v4 mode; - Dropped the changes of ADMA2 data aglinment; - Added support for "Auto Cmd Auto Select". * Rebased on v4.18-rc2. * Dealt with a few issues in sdhci-sprd: - Save return value of mmc_of_parse(); - Add checking for clk_prepare_enable(); - Use BIT() macro instead. Changes from v1: * Addressed comments from Ulf: - Add dt-bindings for Spreadtrum sdhci; - Use assigned-clocks* DT bindings to set default source of sdio clock; - Removed unuseful print; - Removed two functions which are not used; - Add back the missing pm_runtime_put_autosuspend() after adding sdhci host. * Changed Spreadtrum sdhci driver name to sdhci-sprd. Chunyan Zhang (7): mmc: sdhci: add sd host v4 mode mmc: sdhci: Change SDMA address register for v4 mode mmc: sdhci: add ADMA2 64-bit addressing support for V4 mode mmc: sdhci: add 32-bit block count support for v4 mode mmc: sdhci: add Auto CMD Auto Select support mmc: sdhci-sprd: added Spreadtrum's initial host controller dt-bindings: sdhci-sprd: Add bindings for the sdhci-sprd controller .../devicetree/bindings/mmc/sdhci-sprd.txt | 41 ++ drivers/mmc/host/Kconfig | 13 + drivers/mmc/host/Makefile | 1 + drivers/mmc/host/sdhci-sprd.c | 455 +++++++++++++++++++++ drivers/mmc/host/sdhci.c | 223 +++++++--- drivers/mmc/host/sdhci.h | 23 +- 6 files changed, 708 insertions(+), 48 deletions(-) create mode 100644 Documentation/devicetree/bindings/mmc/sdhci-sprd.txt create mode 100644 drivers/mmc/host/sdhci-sprd.c