From patchwork Tue Apr 29 08:20:37 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 29310 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ie0-f200.google.com (mail-ie0-f200.google.com [209.85.223.200]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 89762202FE for ; Tue, 29 Apr 2014 08:21:03 +0000 (UTC) Received: by mail-ie0-f200.google.com with SMTP id lx4sf46980104iec.11 for ; Tue, 29 Apr 2014 01:21:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:sender:precedence:list-id :x-original-sender:x-original-authentication-results:mailing-list :list-post:list-help:list-archive:list-unsubscribe; bh=nzRvYZjaNbKB3N1mnDyXG4gW9sSib2NwSe56cDW97fE=; b=VJ1NOvDuRYqYWh93RIGBEWIzkj8ko1FT6SiNs8RmxS4TJrWx/6m+gABWD8HyvPZyaE go+kryR3DU7DJfR+GPHVlGE2FEZpRE8cevgt9oFyrV21qwxwDtUIGaGfYQrZKQbEA9m0 G7b+BWZXnf4xc8oUenYqRxclQ+cfdG0LclhATpcD5FSgFdH45FPBjTD7/Stte5z+3q16 G99DhOBZUmaCes4skh3Z7A6Sl6Jag6l/pNtfkBXj/tuXXEbvX0VMZ4m4cjHEkyh2QJt6 CWNieeZmOV93S5pGd7NQ8MpF/Z4+NUbnKiA+bBIKj6rI25djZdrQAKXIeaPTWVpZhGnn izAQ== X-Gm-Message-State: ALoCoQnMAS7l59aSGSeqhrRcgeyDhhC70FUzK8B0pUWezePQMHgKJg7rCD//LdFmjJoN/eFjslDW X-Received: by 10.43.79.196 with SMTP id zr4mr14212668icb.3.1398759662939; Tue, 29 Apr 2014 01:21:02 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.43.135 with SMTP id e7ls443754qga.70.gmail; Tue, 29 Apr 2014 01:21:02 -0700 (PDT) X-Received: by 10.52.99.168 with SMTP id er8mr24466749vdb.26.1398759662713; Tue, 29 Apr 2014 01:21:02 -0700 (PDT) Received: from mail-ve0-f177.google.com (mail-ve0-f177.google.com [209.85.128.177]) by mx.google.com with ESMTPS id af10si4339953vec.77.2014.04.29.01.21.02 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 29 Apr 2014 01:21:02 -0700 (PDT) Received-SPF: none (google.com: patch+caf_=patchwork-forward=linaro.org@linaro.org does not designate permitted sender hosts) client-ip=209.85.128.177; Received: by mail-ve0-f177.google.com with SMTP id sa20so9315829veb.36 for ; Tue, 29 Apr 2014 01:21:02 -0700 (PDT) X-Received: by 10.58.154.10 with SMTP id vk10mr28708838veb.18.1398759662571; Tue, 29 Apr 2014 01:21:02 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.221.72 with SMTP id ib8csp178181vcb; Tue, 29 Apr 2014 01:21:02 -0700 (PDT) X-Received: by 10.68.204.162 with SMTP id kz2mr34692011pbc.13.1398759661808; Tue, 29 Apr 2014 01:21:01 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id to1si8485023pab.363.2014.04.29.01.21.01 for ; Tue, 29 Apr 2014 01:21:01 -0700 (PDT) Received-SPF: none (google.com: linux-kernel-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932810AbaD2IUw (ORCPT + 28 others); Tue, 29 Apr 2014 04:20:52 -0400 Received: from mail-we0-f173.google.com ([74.125.82.173]:56741 "EHLO mail-we0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932640AbaD2IUq (ORCPT ); Tue, 29 Apr 2014 04:20:46 -0400 Received: by mail-we0-f173.google.com with SMTP id w61so7335049wes.4 for ; Tue, 29 Apr 2014 01:20:44 -0700 (PDT) X-Received: by 10.194.6.106 with SMTP id z10mr22781696wjz.1.1398759644857; Tue, 29 Apr 2014 01:20:44 -0700 (PDT) Received: from srinivas-Inspiron-N5050.dlink.com (host-78-147-6-229.as13285.net. [78.147.6.229]) by mx.google.com with ESMTPSA id w6sm29952632wjq.29.2014.04.29.01.20.43 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 29 Apr 2014 01:20:44 -0700 (PDT) From: srinivas.kandagatla@linaro.org To: Russell King , linux-mmc@vger.kernel.org Cc: Chris Ball , Ulf Hansson , linux-kernel@vger.kernel.org, agross@quicinc.com, linux-arm-msm@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v1 08/11] mmc: mmci: Qcom fix MCICLK register settings. Date: Tue, 29 Apr 2014 09:20:37 +0100 Message-Id: <1398759638-13299-1-git-send-email-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1398759492-12970-1-git-send-email-srinivas.kandagatla@linaro.org> References: <1398759492-12970-1-git-send-email-srinivas.kandagatla@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: srinivas.kandagatla@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: patch+caf_=patchwork-forward=linaro.org@linaro.org does not designate permitted sender hosts) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: Srinivas Kandagatla MCICLK register layout is bit different to the standard pl180 register layout. Qcom SDCC controller some setup in MCICLK register to get it going. So this patch adds new setup and makes it specific to Qcom hw designer. Signed-off-by: Srinivas Kandagatla --- drivers/mmc/host/mmci.c | 36 ++++++++++++++++++++++++++++++------ drivers/mmc/host/mmci.h | 21 +++++++++++++++++++++ 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 306e0c8..35aed38 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c @@ -326,13 +326,37 @@ static void mmci_set_clkreg(struct mmci_host *host, unsigned int desired) /* Set actual clock for debug */ host->mmc->actual_clock = host->cclk; - if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_4) - clk |= MCI_4BIT_BUS; - if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_8) - clk |= MCI_ST_8BIT_BUS; + if (host->hw_designer == AMBA_VENDOR_QCOM) { + clk |= MCI_CLK_QCOM_FLOWENA; + clk |= (MCI_CLK_QCOM_SEL_FEEDBACK_CLK << + MCI_CLK_QCOM_SEL_IN_SHIFT); /* feedback clk */ + if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_8) + clk |= MCI_CLK_QCOM_WIDEBUS_8; + else if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_4) + clk |= MCI_CLK_QCOM_WIDEBUS_4; + else + clk |= MCI_CLK_QCOM_WIDEBUS_1; + + if (host->mmc->ios.timing == MMC_TIMING_UHS_DDR50) { + /* clear SELECT_IN field */ + clk &= ~(MCI_CLK_QCOM_SEL_MASK << + MCI_CLK_QCOM_SEL_IN_SHIFT); + /* set DDR timing mode */ + clk |= (MCI_CLK_QCOM_SEL_DDR_MODE << + MCI_CLK_QCOM_SEL_IN_SHIFT); + } + clk |= (MCI_CLK_SDC4_MCLK_SEL_MCLK << + MCI_CLK_SDC4_MCLK_SEL_SHIFT); - if (host->mmc->ios.timing == MMC_TIMING_UHS_DDR50) - clk |= MCI_ST_UX500_NEG_EDGE; + } else { + if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_4) + clk |= MCI_4BIT_BUS; + if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_8) + clk |= MCI_ST_8BIT_BUS; + + if (host->mmc->ios.timing == MMC_TIMING_UHS_DDR50) + clk |= MCI_ST_UX500_NEG_EDGE; + } mmci_write_clkreg(host, clk); } diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h index 58b1b88..0a6de1c 100644 --- a/drivers/mmc/host/mmci.h +++ b/drivers/mmc/host/mmci.h @@ -31,6 +31,27 @@ /* Modified PL180 on Versatile Express platform */ #define MCI_ARM_HWFCEN (1 << 12) +/* Modified on Qualcomm Integrations */ +#define MCI_CLK_QCOM_WIDEBUS_1 (0 << 10) +#define MCI_CLK_QCOM_WIDEBUS_4 (2 << 10) +#define MCI_CLK_QCOM_WIDEBUS_8 (3 << 10) +#define MCI_CLK_QCOM_FLOWENA (1 << 12) +#define MCI_CLK_QCOM_INVERTOUT (1 << 13) + +/* select in latch data and command */ +#define MCI_CLK_QCOM_SEL_IN_SHIFT (14) +#define MCI_CLK_QCOM_SEL_MASK (0x3) +#define MCI_CLK_QCOM_SEL_RISING_EDGE (1) +#define MCI_CLK_QCOM_SEL_FEEDBACK_CLK (2) +#define MCI_CLK_QCOM_SEL_DDR_MODE (3) + +/* mclk selection */ +#define MCI_CLK_SDC4_MCLK_SEL_SHIFT (23) +#define MCI_CLK_SDC4_MCLK_SEL_MASK (0x3) +#define MCI_CLK_SDC4_MCLK_SEL_FB_CLK (1) +#define MCI_CLK_SDC4_MCLK_SEL_MCLK (2) + + #define MMCIARGUMENT 0x008 #define MMCICOMMAND 0x00c #define MCI_CPSM_RESPONSE (1 << 6)