Rockchip changes for 2018.11
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJbtOiPAAoJECaAFcEOcohNaPwH/R4KIfwvmlQmhCZewF5YY/yN yDoOKA1graxTRuuNJyuMjBcv0f8g3EzppAFQVDDNetD9nFwOounYvxPb5SEY4LZV Y4y3oNnfAwdwL5pXG/rNU5E2TnmDux67J0N93Zb6PfBAh0EuiJqn7PN5bK+30aF4 HOvdwR7OwI+p1gTHOWcV5x10Ou1b/CBazlh4LIJ7KCIMxLhspY9WDt4TMdwFYfR1 4Y8Zye9EaXmSVqJmxYc2z/YaQW0jma8CPD80WTr1h0OHFSa6dwVYlneWtktQ9GCZ u4cJu+V7ztHZTeTPhdkrkJ3HzXsdMau1F7CFG1lAu5YlNxFkpo+/98587WuyekY= =+M96 -----END PGP SIGNATURE----- Merge tag 'rockchip-for-v2018.11' of git://git.denx.de/u-boot-rockchip Rockchip changes for 2018.11
This commit is contained in:
commit
a1588ac822
@ -11,6 +11,21 @@
|
||||
u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
fifo-mode;
|
||||
max-frequency = <16000000>;
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
fifo-mode;
|
||||
max-frequency = <16000000>;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
fifo-mode;
|
||||
max-frequency = <16000000>;
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
u-boot,dm-spl;
|
||||
|
@ -104,6 +104,8 @@
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio3 1 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_pwr>;
|
||||
startup-delay-us = <100000>;
|
||||
vin-supply = <&vcc_io>;
|
||||
};
|
||||
@ -334,6 +336,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
sd0 {
|
||||
sdmmc_pwr: sdmmc-pwr {
|
||||
rockchip,pins = <RK_GPIO3 1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb {
|
||||
host_vbus_drv: host-vbus-drv {
|
||||
rockchip,pins = <0 3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
|
@ -92,6 +92,24 @@ static void dwmci_prepare_data(struct dwmci_host *host,
|
||||
dwmci_writel(host, DWMCI_BYTCNT, data->blocksize * data->blocks);
|
||||
}
|
||||
|
||||
static int dwmci_fifo_ready(struct dwmci_host *host, u32 bit, u32 *len)
|
||||
{
|
||||
u32 timeout = 20000;
|
||||
|
||||
*len = dwmci_readl(host, DWMCI_STATUS);
|
||||
while (--timeout && (*len & bit)) {
|
||||
udelay(200);
|
||||
*len = dwmci_readl(host, DWMCI_STATUS);
|
||||
}
|
||||
|
||||
if (!timeout) {
|
||||
debug("%s: FIFO underflow timeout\n", __func__);
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data)
|
||||
{
|
||||
int ret = 0;
|
||||
@ -122,7 +140,12 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data)
|
||||
if (data->flags == MMC_DATA_READ &&
|
||||
(mask & DWMCI_INTMSK_RXDR)) {
|
||||
while (size) {
|
||||
len = dwmci_readl(host, DWMCI_STATUS);
|
||||
ret = dwmci_fifo_ready(host,
|
||||
DWMCI_FIFO_EMPTY,
|
||||
&len);
|
||||
if (ret < 0)
|
||||
break;
|
||||
|
||||
len = (len >> DWMCI_FIFO_SHIFT) &
|
||||
DWMCI_FIFO_MASK;
|
||||
len = min(size, len);
|
||||
@ -136,7 +159,12 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data)
|
||||
} else if (data->flags == MMC_DATA_WRITE &&
|
||||
(mask & DWMCI_INTMSK_TXDR)) {
|
||||
while (size) {
|
||||
len = dwmci_readl(host, DWMCI_STATUS);
|
||||
ret = dwmci_fifo_ready(host,
|
||||
DWMCI_FIFO_FULL,
|
||||
&len);
|
||||
if (ret < 0)
|
||||
break;
|
||||
|
||||
len = fifo_depth - ((len >>
|
||||
DWMCI_FIFO_SHIFT) &
|
||||
DWMCI_FIFO_MASK);
|
||||
|
@ -156,6 +156,7 @@ static int rockchip_dwmmc_bind(struct udevice *dev)
|
||||
}
|
||||
|
||||
static const struct udevice_id rockchip_dwmmc_ids[] = {
|
||||
{ .compatible = "rockchip,rk2928-dw-mshc" },
|
||||
{ .compatible = "rockchip,rk3288-dw-mshc" },
|
||||
{ }
|
||||
};
|
||||
|
@ -103,6 +103,8 @@
|
||||
#define DWMCI_CTYPE_8BIT (1 << 16)
|
||||
|
||||
/* Status Register */
|
||||
#define DWMCI_FIFO_EMPTY (1 << 2)
|
||||
#define DWMCI_FIFO_FULL (1 << 3)
|
||||
#define DWMCI_BUSY (1 << 9)
|
||||
#define DWMCI_FIFO_MASK 0x1fff
|
||||
#define DWMCI_FIFO_SHIFT 17
|
||||
|
Loading…
Reference in New Issue
Block a user