From patchwork Wed Aug 29 10:48:11 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Abraham X-Patchwork-Id: 1384501 Return-Path: X-Original-To: patchwork-linux-mmc@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id AA869DF215 for ; Wed, 29 Aug 2012 10:30:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752937Ab2H2KaY (ORCPT ); Wed, 29 Aug 2012 06:30:24 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:11724 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752927Ab2H2KaX (ORCPT ); Wed, 29 Aug 2012 06:30:23 -0400 Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0M9I0081MIIMEG01@mailout1.samsung.com>; Wed, 29 Aug 2012 19:30:22 +0900 (KST) X-AuditID: cbfee61a-b7fc66d0000043b7-7d-503def3dcf52 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 96.50.17335.D3FED305; Wed, 29 Aug 2012 19:30:22 +0900 (KST) Received: from localhost.localdomain ([107.108.73.37]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0M9I004F3IHPXG70@mmp2.samsung.com>; Wed, 29 Aug 2012 19:30:21 +0900 (KST) From: Thomas Abraham To: linux-mmc@vger.kernel.org, devicetree-discuss@lists.ozlabs.org Cc: will.newton@imgtec.com, cjb@laptop.org, grant.likely@secretlab.ca, rob.herring@calxeda.com, linux-samsung-soc@vger.kernel.org, kgene.kim@samsung.com, girish.shivananjappa@linaro.org, jh80.chung@samsung.com, tgih.jun@samsung.com, patches@linaro.org Subject: [PATCH v5 5/9] mmc: dw_mmc: add quirk to indicate missing write protect line Date: Wed, 29 Aug 2012 16:18:11 +0530 Message-id: <1346237295-7116-6-git-send-email-thomas.abraham@linaro.org> X-Mailer: git-send-email 1.6.6.rc2 In-reply-to: <1346237295-7116-1-git-send-email-thomas.abraham@linaro.org> References: <1346237295-7116-1-git-send-email-thomas.abraham@linaro.org> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOJMWRmVeSWpSXmKPExsVy+t9jQV2797YBBu8eM1sc+d/PaDHj/D4m ByaPz5vkAhijuGxSUnMyy1KL9O0SuDJapx5jK+jkq1jY2MjawHiNu4uRk0NCwETi7b4OJghb TOLCvfVsXYxcHEIC0xklHi2/wQ7htDFJPL3xnx2kik3AQOLRwndgtoiAk8SSuROYQYqYBRqZ JDYu3MkGkhAWCJdY+OsJI4jNIqAq8X9pI1Ccg4NXwENi9u4yiG1KEht6j4Jt5hTwlHi38gpY qxBQye97K9kmMPIuYGRYxSiaWpBcUJyUnmuoV5yYW1yal66XnJ+7iRHs/WdSOxhXNlgcYhTg YFTi4b3AbRsgxJpYVlyZe4hRgoNZSYQ39RVQiDclsbIqtSg/vqg0J7X4EKM0B4uSOC9/n2GA kEB6YklqdmpqQWoRTJaJg1OqgbHwxvWLc9ZdEmL3efTWXKit1bNBUC9hvayo6Jw/xZNyCvcr +98Wf+53ifWs+/qC/19X14WLacos/KErc0nO7KdlY1l90AZnmcJGqc1rJ5fydP9OcvSOdORd Ne2Xu+qXrMmyW6KVdz8Q0rj/gGPFRw57R/GkVYW8hQKSW92l8r5wdkV8fq6kpsRSnJFoqMVc VJwIABfP1Wb6AQAA Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org If the write protect pad of the controller is not connected to the write protect pin of the slot, the driver should be notified of this condition so that incorrect check for write protection by reading the WRTORT register can avoided. The get_ro platform callback can be used for in such cases, but with device tree support enabled, such platform callbacks cannot be supported. Add a new quirk for notifying the driver about the missing write protect line so the driver can assume that the card write protection is disabled. Signed-off-by: Thomas Abraham Acked-by: Will Newton --- drivers/mmc/host/dw_mmc.c | 4 +++- include/linux/mmc/dw_mmc.h | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 90c7c7b..1799a2d 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -830,7 +830,9 @@ static int dw_mci_get_ro(struct mmc_host *mmc) struct dw_mci_board *brd = slot->host->pdata; /* Use platform get_ro function, else try on board write protect */ - if (brd->get_ro) + if (brd->quirks & DW_MCI_QUIRK_NO_WRITE_PROTECT) + read_only = 0; + else if (brd->get_ro) read_only = brd->get_ro(slot->id); else read_only = diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h index 787ad56..b72e4aa 100644 --- a/include/linux/mmc/dw_mmc.h +++ b/include/linux/mmc/dw_mmc.h @@ -205,7 +205,8 @@ struct dw_mci_dma_ops { #define DW_MCI_QUIRK_HIGHSPEED BIT(2) /* Unreliable card detection */ #define DW_MCI_QUIRK_BROKEN_CARD_DETECTION BIT(3) - +/* Write Protect detection not available */ +#define DW_MCI_QUIRK_NO_WRITE_PROTECT BIT(4) struct dma_pdata;