]>
git.ipfire.org Git - people/ms/u-boot.git/blob - drivers/mmc/hi6220_dw_mmc.c
2 * (C) Copyright 2015 Linaro
3 * peter.griffin <peter.griffin@linaro.org>
5 * SPDX-License-Identifier: GPL-2.0+
11 #include <linux/errno.h>
13 #define DWMMC_MAX_CH_NUM 4
15 #define DWMMC_MAX_FREQ 50000000
16 #define DWMMC_MIN_FREQ 400000
18 /* Source clock is configured to 100MHz by ATF bl1*/
19 #define MMC0_DEFAULT_FREQ 100000000
21 static int hi6220_dwmci_core_init(struct dwmci_host
*host
, int index
)
23 host
->name
= "Hisilicon DWMMC";
25 host
->dev_index
= index
;
27 /* Add the mmc channel to be registered with mmc core */
28 if (add_dwmci(host
, DWMMC_MAX_FREQ
, DWMMC_MIN_FREQ
)) {
29 printf("DWMMC%d registration failed\n", index
);
36 * This function adds the mmc channel to be registered with mmc core.
37 * index - mmc channel number.
38 * regbase - register base address of mmc channel specified in 'index'.
39 * bus_width - operating bus width of mmc channel specified in 'index'.
41 int hi6220_dwmci_add_port(int index
, u32 regbase
, int bus_width
)
43 struct dwmci_host
*host
= NULL
;
45 host
= calloc(1, sizeof(struct dwmci_host
));
47 pr_err("dwmci_host calloc failed!\n");
51 host
->ioaddr
= (void *)(ulong
)regbase
;
52 host
->buswidth
= bus_width
;
53 host
->bus_hz
= MMC0_DEFAULT_FREQ
;
55 return hi6220_dwmci_core_init(host
, index
);