Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp284389ybk; Fri, 15 May 2020 00:11:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyqnvIr8zIwF3F+La6q/rz1bMwncleUkyl43OaZsBArod1OTnrB+79Zhvr+ixAq4q5BcDdP X-Received: by 2002:a17:906:6a84:: with SMTP id p4mr1582313ejr.21.1589526710898; Fri, 15 May 2020 00:11:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589526710; cv=none; d=google.com; s=arc-20160816; b=YpaiWn8dtHCGAmHN9ijsTKzQpDT2386roUzurO+Oj7O4srjNdt6WMm3xoS2E5OVK98 FK+71OPjHBmTdC7zZSpZ0kCBTG7ZVPUPNFOKjXMFCcJj002QQdrH2UoYbZt0ycDqh9s/ sTma2AL+1MsZiEMb6PUjDvRROe+uNHEC7m+R5ziL+l/JSDrlqxo6oHzkCoQLfusnkNlw 2O+BG+SZNbWpXco9vncSGNwGSTw9Oq7TIdXtJj7x1eYLkHwqqfILfwIMXij+pOIFUUPx g7uouunhs6lrMyaryTPWe91FxY3y4xwVY2P8hn2rnqNRptPP1vwfaingzDMpq49GXKHl 02zQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=nMrcey/VFjUSqrjmSceZhxBusEA8rOudHxgtgSRpgfU=; b=BSjhyJEWyZAL0CmdA5qqu0Z9HCuFAQM3UbT5LTG1JW4mz2qfVWkBXY3lwi3MVIKXfg hJt8ra09C0DEIVRkr6rotvqUlx7ARqS/iKhRWd8lZNxf3Sbyx5UNY90yoZb5RqxzjZDg AwWXrt+kLx8yRkrPOOtKLemaQROoLo+jHuSCGgHdKarrNFDZofQwb/76vuGx/dmEQF2L kPzmu9D61TZ/sq04C9qWaNMvu55j4yTba/9N8OUrWnMjYZEjjkMrg+jwQQnBRvMcEgrx q/uT0BdJhw31MCFSkG4cv7P0k8itGABeYyMfV3jsyEP9bx9TgeAYyWt6ksPM0GfNhvNH Gf5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SwZCCMCJ; 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 u11si798937eda.41.2020.05.15.00.11.27; Fri, 15 May 2020 00:11:50 -0700 (PDT) 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=SwZCCMCJ; 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 S1726671AbgEOHJ5 (ORCPT + 99 others); Fri, 15 May 2020 03:09:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50494 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726601AbgEOHJz (ORCPT ); Fri, 15 May 2020 03:09:55 -0400 Received: from mail-vk1-xa41.google.com (mail-vk1-xa41.google.com [IPv6:2607:f8b0:4864:20::a41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69F3DC05BD09 for ; Fri, 15 May 2020 00:09:55 -0700 (PDT) Received: by mail-vk1-xa41.google.com with SMTP id 21so323723vkq.6 for ; Fri, 15 May 2020 00:09:55 -0700 (PDT) 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=nMrcey/VFjUSqrjmSceZhxBusEA8rOudHxgtgSRpgfU=; b=SwZCCMCJbOBupMcaeooj/s7BAmGaJ/3z/skTTeDsZpnlf1qg7kUgvUIv3IkwGvJ/Wr 6KwHNDn1QH/j30ziOgwaorN+O8qAPNXgOPR2spd7gTdrFKRdTN9qa9bav1qNW6eeoJAH GX8WaR2pnxXgRthv+Z31yFvaAJNS5jTQlofDczO5IyzrmIkmNP4V28cSShjDaRORX0J2 vBfvwoVNb673WSLC4owlYDDQTxHhz5gtzzDq0G/ITqJhhrdV2o1uG1ElZZxmpclJyf0k HJvqWvY0yjhPcM28P24HxsgcXA7AZ+4eR4eAjX3lAS6+53qe+liFrcR75aqKGmee1bU5 b1NA== 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=nMrcey/VFjUSqrjmSceZhxBusEA8rOudHxgtgSRpgfU=; b=OGo/HvsGtivk+gbFgJMkMetIBeqWBLUhB2RKQ0O5ZFkBV4fk3G/8Zm8rfptQ/vnSoS lBj373Q4VXj7Tby9OshAwhdyO+r/pbzyqBGg4AbhEBN1g2y7RJZayk+2aejYIVWg7Pg/ unSnHgPBwi0yZv2t51A4CiXV8GDA827JKmbnzE9IuDFECkG7hsGD0FV9zhqD9m1DafNt 1j+1e7yaXFtVhDQuGZ76XPy7VONRNK8O3LIFS2DL7jjPLUXEaR8wCvtyinO+TQ25ILNz r0rloCp8F5WnnUUOxr1G2Sk3U7qx+6WQZQ451KFBSWRHnMYCF0KMMyc9V2jlpKxOKrVq W4Vw== X-Gm-Message-State: AOAM530QlxNdqjlChQw/asnofXeUhlyOXbXZnnnOEgyQdcxZzK5FFPfl 4Ps2TmS9xG7prkltK6Q71P/nR+Y6lhJOlDTK+Pruhw== X-Received: by 2002:a1f:fc06:: with SMTP id a6mr1674172vki.101.1589526594549; Fri, 15 May 2020 00:09:54 -0700 (PDT) MIME-Version: 1.0 References: <20200511062828.1791484-1-yamada.masahiro@socionext.com> In-Reply-To: <20200511062828.1791484-1-yamada.masahiro@socionext.com> From: Ulf Hansson Date: Fri, 15 May 2020 09:09:18 +0200 Message-ID: Subject: Re: [PATCH] mmc: sdhci: use FIELD_GET/PREP for current capabilities bit masks To: Masahiro Yamada Cc: "linux-mmc@vger.kernel.org" , Adrian Hunter , Fabio Estevam , NXP Linux Team , Pengutronix Kernel Team , Sascha Hauer , Shawn Guo , Linux ARM , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 11 May 2020 at 08:29, Masahiro Yamada wrote: > > Use FIELD_GET and FIELD_PREP to get access to the register fields. Delete > the shift macros and use GENMASK() for the touched macros. > > Note that, this has the side-effect of changing the constants to 64-bit on > 64-bit platforms. > > Signed-off-by: Masahiro Yamada Applied for next, thanks! Kind regards Uffe > --- > > drivers/mmc/host/sdhci-esdhc-imx.c | 6 +++--- > drivers/mmc/host/sdhci.c | 27 ++++++++++++--------------- > drivers/mmc/host/sdhci.h | 11 ++++------- > 3 files changed, 19 insertions(+), 25 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c > index 38cd83118082..9896e03fce71 100644 > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > @@ -419,9 +419,9 @@ static u32 esdhc_readl_le(struct sdhci_host *host, int reg) > > if (unlikely(reg == SDHCI_MAX_CURRENT) && esdhc_is_usdhc(imx_data)) { > val = 0; > - val |= 0xFF << SDHCI_MAX_CURRENT_330_SHIFT; > - val |= 0xFF << SDHCI_MAX_CURRENT_300_SHIFT; > - val |= 0xFF << SDHCI_MAX_CURRENT_180_SHIFT; > + val |= FIELD_PREP(SDHCI_MAX_CURRENT_330_MASK, 0xFF); > + val |= FIELD_PREP(SDHCI_MAX_CURRENT_300_MASK, 0xFF); > + val |= FIELD_PREP(SDHCI_MAX_CURRENT_180_MASK, 0xFF); > } > > if (unlikely(reg == SDHCI_INT_STATUS)) { > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index 344a7e0e33fe..7818e650f974 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -4355,35 +4355,32 @@ int sdhci_setup_host(struct sdhci_host *host) > > curr = min_t(u32, curr, SDHCI_MAX_CURRENT_LIMIT); > max_current_caps = > - (curr << SDHCI_MAX_CURRENT_330_SHIFT) | > - (curr << SDHCI_MAX_CURRENT_300_SHIFT) | > - (curr << SDHCI_MAX_CURRENT_180_SHIFT); > + FIELD_PREP(SDHCI_MAX_CURRENT_330_MASK, curr) | > + FIELD_PREP(SDHCI_MAX_CURRENT_300_MASK, curr) | > + FIELD_PREP(SDHCI_MAX_CURRENT_180_MASK, curr); > } > } > > if (host->caps & SDHCI_CAN_VDD_330) { > ocr_avail |= MMC_VDD_32_33 | MMC_VDD_33_34; > > - mmc->max_current_330 = ((max_current_caps & > - SDHCI_MAX_CURRENT_330_MASK) >> > - SDHCI_MAX_CURRENT_330_SHIFT) * > - SDHCI_MAX_CURRENT_MULTIPLIER; > + mmc->max_current_330 = FIELD_GET(SDHCI_MAX_CURRENT_330_MASK, > + max_current_caps) * > + SDHCI_MAX_CURRENT_MULTIPLIER; > } > if (host->caps & SDHCI_CAN_VDD_300) { > ocr_avail |= MMC_VDD_29_30 | MMC_VDD_30_31; > > - mmc->max_current_300 = ((max_current_caps & > - SDHCI_MAX_CURRENT_300_MASK) >> > - SDHCI_MAX_CURRENT_300_SHIFT) * > - SDHCI_MAX_CURRENT_MULTIPLIER; > + mmc->max_current_300 = FIELD_GET(SDHCI_MAX_CURRENT_300_MASK, > + max_current_caps) * > + SDHCI_MAX_CURRENT_MULTIPLIER; > } > if (host->caps & SDHCI_CAN_VDD_180) { > ocr_avail |= MMC_VDD_165_195; > > - mmc->max_current_180 = ((max_current_caps & > - SDHCI_MAX_CURRENT_180_MASK) >> > - SDHCI_MAX_CURRENT_180_SHIFT) * > - SDHCI_MAX_CURRENT_MULTIPLIER; > + mmc->max_current_180 = FIELD_GET(SDHCI_MAX_CURRENT_180_MASK, > + max_current_caps) * > + SDHCI_MAX_CURRENT_MULTIPLIER; > } > > /* If OCR set by host, use it instead. */ > diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h > index d7f1441b0fc3..2ff98891bf25 100644 > --- a/drivers/mmc/host/sdhci.h > +++ b/drivers/mmc/host/sdhci.h > @@ -233,13 +233,10 @@ > #define SDHCI_SUPPORT_HS400 0x80000000 /* Non-standard */ > > #define SDHCI_MAX_CURRENT 0x48 > -#define SDHCI_MAX_CURRENT_LIMIT 0xFF > -#define SDHCI_MAX_CURRENT_330_MASK 0x0000FF > -#define SDHCI_MAX_CURRENT_330_SHIFT 0 > -#define SDHCI_MAX_CURRENT_300_MASK 0x00FF00 > -#define SDHCI_MAX_CURRENT_300_SHIFT 8 > -#define SDHCI_MAX_CURRENT_180_MASK 0xFF0000 > -#define SDHCI_MAX_CURRENT_180_SHIFT 16 > +#define SDHCI_MAX_CURRENT_LIMIT GENMASK(7, 0) > +#define SDHCI_MAX_CURRENT_330_MASK GENMASK(7, 0) > +#define SDHCI_MAX_CURRENT_300_MASK GENMASK(15, 8) > +#define SDHCI_MAX_CURRENT_180_MASK GENMASK(23, 16) > #define SDHCI_MAX_CURRENT_MULTIPLIER 4 > > /* 4C-4F reserved for more max current */ > -- > 2.25.1 >