]> git.sur5r.net Git - u-boot/blobdiff - drivers/mmc/bcm2835_sdhci.c
mmc: sunxi: revive depends on UART0_PORT_F
[u-boot] / drivers / mmc / bcm2835_sdhci.c
index 92f7d8942f02d1420e397664afcb99b938a3dafc..cb2bd40c65ee198753853c401e48ed8df3156a93 100644 (file)
@@ -39,8 +39,8 @@
 #include <common.h>
 #include <malloc.h>
 #include <sdhci.h>
-#include <asm/arch/timer.h>
-#include <asm/arch-bcm2835/sdhci.h>
+#include <mach/timer.h>
+#include <mach/sdhci.h>
 
 /* 400KHz is max freq for card ID etc. Use that as min */
 #define MIN_FREQ 400000
@@ -69,11 +69,11 @@ static inline void bcm2835_sdhci_raw_writel(struct sdhci_host *host, u32 val,
         * (Which is just as well - otherwise we'd have to nobble the DMA engine
         * too)
         */
-       while (get_timer_us(bcm_host->last_write) < bcm_host->twoticks_delay)
+       while (timer_get_us() - bcm_host->last_write < bcm_host->twoticks_delay)
                ;
 
        writel(val, host->ioaddr + reg);
-       bcm_host->last_write = get_timer_us(0);
+       bcm_host->last_write = timer_get_us();
 }
 
 static inline u32 bcm2835_sdhci_raw_readl(struct sdhci_host *host, int reg)
@@ -154,10 +154,10 @@ int bcm2835_sdhci_init(u32 regbase, u32 emmc_freq)
        struct bcm2835_sdhci_host *bcm_host;
        struct sdhci_host *host;
 
-       bcm_host = malloc(sizeof(*bcm_host));
+       bcm_host = calloc(1, sizeof(*bcm_host));
        if (!bcm_host) {
-               printf("sdhci_host malloc fail!\n");
-               return 1;
+               printf("sdhci_host calloc fail!\n");
+               return -ENOMEM;
        }
 
        /*
@@ -178,13 +178,12 @@ int bcm2835_sdhci_init(u32 regbase, u32 emmc_freq)
 
        host = &bcm_host->host;
        host->name = "bcm2835_sdhci";
-       host->ioaddr = (void *)regbase;
+       host->ioaddr = (void *)(unsigned long)regbase;
        host->quirks = SDHCI_QUIRK_BROKEN_VOLTAGE | SDHCI_QUIRK_BROKEN_R1B |
                SDHCI_QUIRK_WAIT_SEND_CMD | SDHCI_QUIRK_NO_HISPD_BIT;
        host->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
        host->ops = &bcm2835_ops;
 
-       host->version = sdhci_readw(host, SDHCI_HOST_VERSION);
        add_sdhci(host, emmc_freq, MIN_FREQ);
 
        return 0;