]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/mmc/davinci_mmc.c
ddr: altera: sequencer: Wrap misc remaining macros
[karo-tx-uboot.git] / drivers / mmc / davinci_mmc.c
index b380961188881449b7522861a4f756569f6e9b4d..aae00e9dab3103d539482b7fdb8ab2ff6e27e0e1 100644 (file)
@@ -30,10 +30,10 @@ static void dmmc_set_clock(struct mmc *mmc, uint clock)
        struct davinci_mmc_regs *regs = host->reg_base;
        uint clkrt, sysclk2, act_clock;
 
-       if (clock < mmc->f_min)
-               clock = mmc->f_min;
-       if (clock > mmc->f_max)
-               clock = mmc->f_max;
+       if (clock < mmc->cfg->f_min)
+               clock = mmc->cfg->f_min;
+       if (clock > mmc->cfg->f_max)
+               clock = mmc->cfg->f_max;
 
        set_val(&regs->mmcclk, 0);
        sysclk2 = host->input_clk;
@@ -363,32 +363,27 @@ static void dmmc_set_ios(struct mmc *mmc)
                dmmc_set_clock(mmc, mmc->clock);
 }
 
+static const struct mmc_ops dmmc_ops = {
+       .send_cmd       = dmmc_send_cmd,
+       .set_ios        = dmmc_set_ios,
+       .init           = dmmc_init,
+};
+
 /* Called from board_mmc_init during startup. Can be called multiple times
  * depending on the number of slots available on board and controller
  */
 int davinci_mmc_init(bd_t *bis, struct davinci_mmc *host)
 {
-       struct mmc *mmc;
-
-       mmc = malloc(sizeof(struct mmc));
-       memset(mmc, 0, sizeof(struct mmc));
-
-       sprintf(mmc->name, "davinci");
-       mmc->priv = host;
-       mmc->send_cmd = dmmc_send_cmd;
-       mmc->set_ios = dmmc_set_ios;
-       mmc->init = dmmc_init;
-       mmc->getcd = NULL;
-       mmc->getwp = NULL;
-
-       mmc->f_min = 200000;
-       mmc->f_max = 25000000;
-       mmc->voltages = host->voltages;
-       mmc->host_caps = host->host_caps;
+       host->cfg.name = "davinci";
+       host->cfg.ops = &dmmc_ops;
+       host->cfg.f_min = 200000;
+       host->cfg.f_max = 25000000;
+       host->cfg.voltages = host->voltages;
+       host->cfg.host_caps = host->host_caps;
 
-       mmc->b_max = DAVINCI_MAX_BLOCKS;
+       host->cfg.b_max = DAVINCI_MAX_BLOCKS;
 
-       mmc_register(mmc);
+       mmc_create(&host->cfg, host);
 
        return 0;
 }