提交 954a9631 编写于 作者: M Masahiro Yamada 提交者: Jaehoon Chung

mmc: sdhci-cadence: use bitfield access macros for cleanup

This driver is a counterpart from the one in Linux.  Follow the
clean-up I did in Linux.
Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
上级 be165fbb
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <common.h> #include <common.h>
#include <dm.h> #include <dm.h>
#include <linux/bitfield.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/iopoll.h> #include <linux/iopoll.h>
#include <linux/sizes.h> #include <linux/sizes.h>
...@@ -19,15 +20,14 @@ ...@@ -19,15 +20,14 @@
#define SDHCI_CDNS_HRS04_ACK BIT(26) #define SDHCI_CDNS_HRS04_ACK BIT(26)
#define SDHCI_CDNS_HRS04_RD BIT(25) #define SDHCI_CDNS_HRS04_RD BIT(25)
#define SDHCI_CDNS_HRS04_WR BIT(24) #define SDHCI_CDNS_HRS04_WR BIT(24)
#define SDHCI_CDNS_HRS04_RDATA_SHIFT 16 #define SDHCI_CDNS_HRS04_RDATA GENMASK(23, 16)
#define SDHCI_CDNS_HRS04_WDATA_SHIFT 8 #define SDHCI_CDNS_HRS04_WDATA GENMASK(15, 8)
#define SDHCI_CDNS_HRS04_ADDR_SHIFT 0 #define SDHCI_CDNS_HRS04_ADDR GENMASK(5, 0)
#define SDHCI_CDNS_HRS06 0x18 /* eMMC control */ #define SDHCI_CDNS_HRS06 0x18 /* eMMC control */
#define SDHCI_CDNS_HRS06_TUNE_UP BIT(15) #define SDHCI_CDNS_HRS06_TUNE_UP BIT(15)
#define SDHCI_CDNS_HRS06_TUNE_SHIFT 8 #define SDHCI_CDNS_HRS06_TUNE GENMASK(13, 8)
#define SDHCI_CDNS_HRS06_TUNE_MASK 0x3f #define SDHCI_CDNS_HRS06_MODE GENMASK(2, 0)
#define SDHCI_CDNS_HRS06_MODE_MASK 0x7
#define SDHCI_CDNS_HRS06_MODE_SD 0x0 #define SDHCI_CDNS_HRS06_MODE_SD 0x0
#define SDHCI_CDNS_HRS06_MODE_MMC_SDR 0x2 #define SDHCI_CDNS_HRS06_MODE_MMC_SDR 0x2
#define SDHCI_CDNS_HRS06_MODE_MMC_DDR 0x3 #define SDHCI_CDNS_HRS06_MODE_MMC_DDR 0x3
...@@ -84,8 +84,8 @@ static int sdhci_cdns_write_phy_reg(struct sdhci_cdns_plat *plat, ...@@ -84,8 +84,8 @@ static int sdhci_cdns_write_phy_reg(struct sdhci_cdns_plat *plat,
u32 tmp; u32 tmp;
int ret; int ret;
tmp = (data << SDHCI_CDNS_HRS04_WDATA_SHIFT) | tmp = FIELD_PREP(SDHCI_CDNS_HRS04_WDATA, data) |
(addr << SDHCI_CDNS_HRS04_ADDR_SHIFT); FIELD_PREP(SDHCI_CDNS_HRS04_ADDR, addr);
writel(tmp, reg); writel(tmp, reg);
tmp |= SDHCI_CDNS_HRS04_WR; tmp |= SDHCI_CDNS_HRS04_WR;
...@@ -152,8 +152,8 @@ static void sdhci_cdns_set_control_reg(struct sdhci_host *host) ...@@ -152,8 +152,8 @@ static void sdhci_cdns_set_control_reg(struct sdhci_host *host)
} }
tmp = readl(plat->hrs_addr + SDHCI_CDNS_HRS06); tmp = readl(plat->hrs_addr + SDHCI_CDNS_HRS06);
tmp &= ~SDHCI_CDNS_HRS06_MODE_MASK; tmp &= ~SDHCI_CDNS_HRS06_MODE;
tmp |= mode; tmp |= FIELD_PREP(SDHCI_CDNS_HRS06_MODE, mode);
writel(tmp, plat->hrs_addr + SDHCI_CDNS_HRS06); writel(tmp, plat->hrs_addr + SDHCI_CDNS_HRS06);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册