Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp464790pxb; Thu, 5 Nov 2020 05:03:15 -0800 (PST) X-Google-Smtp-Source: ABdhPJxgHcAhptxfQmB+uv9JqXNJ8MnnGqT4OTd8/SlpdnjzoNUrHDtTfxAnR6sPI+LaSowtd88c X-Received: by 2002:adf:ef45:: with SMTP id c5mr3007945wrp.117.1604581395247; Thu, 05 Nov 2020 05:03:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604581395; cv=none; d=google.com; s=arc-20160816; b=kiPvDCvFj4lwaDdSJCUhqJA6ilPkZi7BIYyYbuSev+Sp+t9FPJPF5Xsbt2SjxL9MpX qbuMSF6d0IDMVO0o+VwcHEcZhg0VGzGn7wZtjZbGfdhAxzCqML1NnkMjkHZoGbtXq81P A//Ropndtwd4/sovW/glOM3YLiJQI4AFOKrlm4VFscI7zZhO9hD9y3oF9Q7F/NKkX443 l0XJsfx+WJnfxNQH2TwTW/4TPbRsQpsTHEf8huyw1BlTl4pIv31R7igvbhkYzT8diwQz nWsfm1T7Uz1s9dQ7hmR1T72UUQ3c+FJnnCTLg9eRl3MsVWorx9TEinw7snkwlIjuftXX vdYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=WT1MvSlztZlc1FZ5Asxkhe1NYZezAK9LnhK1vwgJmXo=; b=Xff2ZxCgoVLiAm8Dv7xvBJltJ2ldea5/gSz/3LWYvO8kCewm6Eczhwon6sk0TmLfo7 PvyoI38QIj+oxPM3sFo8H8+X+L45iI+L0z29s8MfonzKjU2QVCknDriTw/i6EAiFFJp6 fvAbYQIxm/UzLBLO0OWJap6sJQiUYlxzmaV18d58y/JAeDPlZx0UJ2+pto+zXEQPf7De Y81jJJNE7TCsyLtga03lM5meP5V94ogLsmftnA9gPN+IgYG4v4qv4DV3VMr8n/wcH5h8 4IfEqd2B7Bc6R+C9SgLC6ezqNHVQ5yM/ayep6sG9QyXySWO+cfd6VUM7IOjmv+e09vAv 4ZTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SraoIp6G; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x37si1208683ede.385.2020.11.05.05.02.50; Thu, 05 Nov 2020 05:03:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SraoIp6G; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731052AbgKEM7x (ORCPT + 99 others); Thu, 5 Nov 2020 07:59:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730958AbgKEM7w (ORCPT ); Thu, 5 Nov 2020 07:59:52 -0500 Received: from mail-ua1-x942.google.com (mail-ua1-x942.google.com [IPv6:2607:f8b0:4864:20::942]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A6A2C0613D3 for ; Thu, 5 Nov 2020 04:59:52 -0800 (PST) Received: by mail-ua1-x942.google.com with SMTP id t15so480094ual.6 for ; Thu, 05 Nov 2020 04:59:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WT1MvSlztZlc1FZ5Asxkhe1NYZezAK9LnhK1vwgJmXo=; b=SraoIp6GVcQVkv/M8F+b5/a1obllwuyTigrdn6SG8CQ4oTWM2I3D4/w1z1XoKddci4 Mj8+kvwiLLFykFKvzijWne63PuKBXEVHEV2dQirGZeDWNKUvAgYdG8GeKEVFzDI5xGOJ lE+WkS0HVDlLyyt4ybARSfIuMoBZJvZIyoK74/GNeYLjQo3KEMHWoHUU53XptSRhP7Us EYG5C3AXS6ncwALJF7yGYpeZozD9WPSPCunnttAtiiv6xJ9eUNK6uEkvfrWvqnjNFtK7 kdB+BylGReXaV6UsK0XguHSE7tIsnM7HZlejUmbhxTcgizc/StgRSSWjn/ZuVL0e29Or i0aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WT1MvSlztZlc1FZ5Asxkhe1NYZezAK9LnhK1vwgJmXo=; b=PHRFGpLbs1YNPM49G8Q1JIa4k9CQo13JklB0z37IUShhaj7gfiK/bFOJS5nGwm0xbZ BpLAacfnlkg242Bhw4wznJg1pNdfiU8QqbGjH6ff1SUqDcx6V4G/+8bNgmWnglAyTjZl Mt61miXeLdGpx2yoWgLQFLSp9pGcqLR7cR1yevgXiDNgZ+voodV2OSVgoiQ0KsZEmgLV ljoxzGBN9d7zL4ocrwvYPmUNOKTk+eroKazqpqk6qyaIZPpYyGpyriQIbbjMNtaU6Jwt EoO5UVOqDxYTuHswMqMiRsQzMIl951sVMhjDTsD8V/9yiyAY/nyHha5K8czQGk1GMV4H Chyw== X-Gm-Message-State: AOAM531KN78CvEYmG2pINr5BY6Uld4NmpVeKkC0Zz1saxrlMFQ4lDgs9 dkY61qssV+xek9LnNVbDlo+bo45fQEkiWhm/jAyk9w== X-Received: by 2002:ab0:23d5:: with SMTP id c21mr816639uan.129.1604581191469; Thu, 05 Nov 2020 04:59:51 -0800 (PST) MIME-Version: 1.0 References: <20201102092822.5301-1-wenbin.mei@mediatek.com> <20201102092822.5301-2-wenbin.mei@mediatek.com> In-Reply-To: <20201102092822.5301-2-wenbin.mei@mediatek.com> From: Ulf Hansson Date: Thu, 5 Nov 2020 13:59:15 +0100 Message-ID: Subject: Re: [PATCH v1 1/1] mmc: mediatek: add HS400 enhanced strobe support To: Wenbin Mei Cc: Chaotian Jing , Matthias Brugger , "linux-mmc@vger.kernel.org" , Linux ARM , "moderated list:ARM/Mediatek SoC support" , Linux Kernel Mailing List , srv_heupstream Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2 Nov 2020 at 10:29, Wenbin Mei wrote: > > Add support for HS400ES mode to MediaTek MMC Card Driver. > > Signed-off-by: Wenbin Mei Applied for next, thanks! Kind regards Uffe > --- > drivers/mmc/host/mtk-sd.c | 40 +++++++++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) > > diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c > index f7f68623fefc..fc5ee5df91ad 100644 > --- a/drivers/mmc/host/mtk-sd.c > +++ b/drivers/mmc/host/mtk-sd.c > @@ -78,9 +78,12 @@ > #define MSDC_PAD_TUNE0 0xf0 > #define PAD_DS_TUNE 0x188 > #define PAD_CMD_TUNE 0x18c > +#define EMMC51_CFG0 0x204 > #define EMMC50_CFG0 0x208 > +#define EMMC50_CFG1 0x20c > #define EMMC50_CFG3 0x220 > #define SDC_FIFO_CFG 0x228 > +#define CQHCI_SETTING 0x7fc > > /*--------------------------------------------------------------------------*/ > /* Top Pad Register Offset */ > @@ -261,15 +264,26 @@ > > #define PAD_CMD_TUNE_RX_DLY3 (0x1f << 1) /* RW */ > > +/* EMMC51_CFG0 mask */ > +#define CMDQ_RDAT_CNT (0x3ff << 12) /* RW */ > + > #define EMMC50_CFG_PADCMD_LATCHCK (0x1 << 0) /* RW */ > #define EMMC50_CFG_CRCSTS_EDGE (0x1 << 3) /* RW */ > #define EMMC50_CFG_CFCSTS_SEL (0x1 << 4) /* RW */ > +#define EMMC50_CFG_CMD_RESP_SEL (0x1 << 9) /* RW */ > + > +/* EMMC50_CFG1 mask */ > +#define EMMC50_CFG1_DS_CFG (0x1 << 28) /* RW */ > > #define EMMC50_CFG3_OUTS_WR (0x1f << 0) /* RW */ > > #define SDC_FIFO_CFG_WRVALIDSEL (0x1 << 24) /* RW */ > #define SDC_FIFO_CFG_RDVALIDSEL (0x1 << 25) /* RW */ > > +/* CQHCI_SETTING */ > +#define CQHCI_RD_CMD_WND_SEL (0x1 << 14) /* RW */ > +#define CQHCI_WR_CMD_WND_SEL (0x1 << 15) /* RW */ > + > /* EMMC_TOP_CONTROL mask */ > #define PAD_RXDLY_SEL (0x1 << 0) /* RW */ > #define DELAY_EN (0x1 << 1) /* RW */ > @@ -2276,6 +2290,31 @@ static int msdc_get_cd(struct mmc_host *mmc) > return !val; > } > > +static void msdc_hs400_enhanced_strobe(struct mmc_host *mmc, > + struct mmc_ios *ios) > +{ > + struct msdc_host *host = mmc_priv(mmc); > + > + if (ios->enhanced_strobe) { > + msdc_prepare_hs400_tuning(mmc, ios); > + sdr_set_field(host->base + EMMC50_CFG0, EMMC50_CFG_PADCMD_LATCHCK, 1); > + sdr_set_field(host->base + EMMC50_CFG0, EMMC50_CFG_CMD_RESP_SEL, 1); > + sdr_set_field(host->base + EMMC50_CFG1, EMMC50_CFG1_DS_CFG, 1); > + > + sdr_clr_bits(host->base + CQHCI_SETTING, CQHCI_RD_CMD_WND_SEL); > + sdr_clr_bits(host->base + CQHCI_SETTING, CQHCI_WR_CMD_WND_SEL); > + sdr_clr_bits(host->base + EMMC51_CFG0, CMDQ_RDAT_CNT); > + } else { > + sdr_set_field(host->base + EMMC50_CFG0, EMMC50_CFG_PADCMD_LATCHCK, 0); > + sdr_set_field(host->base + EMMC50_CFG0, EMMC50_CFG_CMD_RESP_SEL, 0); > + sdr_set_field(host->base + EMMC50_CFG1, EMMC50_CFG1_DS_CFG, 0); > + > + sdr_set_bits(host->base + CQHCI_SETTING, CQHCI_RD_CMD_WND_SEL); > + sdr_set_bits(host->base + CQHCI_SETTING, CQHCI_WR_CMD_WND_SEL); > + sdr_set_field(host->base + EMMC51_CFG0, CMDQ_RDAT_CNT, 0xb4); > + } > +} > + > static void msdc_cqe_enable(struct mmc_host *mmc) > { > struct msdc_host *host = mmc_priv(mmc); > @@ -2333,6 +2372,7 @@ static const struct mmc_host_ops mt_msdc_ops = { > .set_ios = msdc_ops_set_ios, > .get_ro = mmc_gpio_get_ro, > .get_cd = msdc_get_cd, > + .hs400_enhanced_strobe = msdc_hs400_enhanced_strobe, > .enable_sdio_irq = msdc_enable_sdio_irq, > .ack_sdio_irq = msdc_ack_sdio_irq, > .start_signal_voltage_switch = msdc_ops_switch_volt, > -- > 2.18.0