Minor comment, Maybe Seungwon mentioned the prefix use as "dw_mmc". Best Regards, Jaehoon Chung On 04/02/2013 03:09 PM, Thomas Abraham wrote: > With device core now able to setup the default pin configuration, > the pin configuration code based on the deprecated Samsung specific > gpio bindings is removed. > > Signed-off-by: Thomas Abraham <thomas.abraham@xxxxxxxxxx> > Acked-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > Reviewed-by: Doug Anderson <dianders@xxxxxxxxxxxx> > Tested-by: Doug Anderson <dianders@xxxxxxxxxxxx> > --- > > Hi Doug, Seungwon, > > I apologize for the delaying in following up on the review comment. > The setup_bus callback support has been removed in this patch. I did > intend to retain the support for setup_bus callback in the previous > version of this patch since any new platform that might use this > driver and need such a callback would have this callback ready for > use. But it seems removing the setup_bus callback is preferred, so > I am fine with it. > > Thomas. > > drivers/mmc/host/dw_mmc-exynos.c | 38 -------------------------------------- > drivers/mmc/host/dw_mmc.c | 14 +------------- > drivers/mmc/host/dw_mmc.h | 3 --- > 3 files changed, 1 insertions(+), 54 deletions(-) > > diff --git a/drivers/mmc/host/dw_mmc-exynos.c b/drivers/mmc/host/dw_mmc-exynos.c > index 72fd0f2..467d043 100644 > --- a/drivers/mmc/host/dw_mmc-exynos.c > +++ b/drivers/mmc/host/dw_mmc-exynos.c > @@ -152,43 +152,6 @@ static int dw_mci_exynos_parse_dt(struct dw_mci *host) > return 0; > } > > -static int dw_mci_exynos_setup_bus(struct dw_mci *host, > - struct device_node *slot_np, u8 bus_width) > -{ > - int idx, gpio, ret; > - > - if (!slot_np) > - return -EINVAL; > - > - /* cmd + clock + bus-width pins */ > - for (idx = 0; idx < NUM_PINS(bus_width); idx++) { > - gpio = of_get_gpio(slot_np, idx); > - if (!gpio_is_valid(gpio)) { > - dev_err(host->dev, "invalid gpio: %d\n", gpio); > - return -EINVAL; > - } > - > - ret = devm_gpio_request(host->dev, gpio, "dw-mci-bus"); > - if (ret) { > - dev_err(host->dev, "gpio [%d] request failed\n", gpio); > - return -EBUSY; > - } > - } > - > - if (host->pdata->quirks & DW_MCI_QUIRK_BROKEN_CARD_DETECTION) > - return 0; > - > - gpio = of_get_named_gpio(slot_np, "samsung,cd-pinmux-gpio", 0); > - if (gpio_is_valid(gpio)) { > - if (devm_gpio_request(host->dev, gpio, "dw-mci-cd")) > - dev_err(host->dev, "gpio [%d] request failed\n", gpio); > - } else { > - dev_info(host->dev, "cd gpio not available"); > - } > - > - return 0; > -} > - > /* Exynos5250 controller specific capabilities */ > static unsigned long exynos5250_dwmmc_caps[4] = { > MMC_CAP_UHS_DDR50 | MMC_CAP_1_8V_DDR | > @@ -205,7 +168,6 @@ static const struct dw_mci_drv_data exynos5250_drv_data = { > .prepare_command = dw_mci_exynos_prepare_command, > .set_ios = dw_mci_exynos_set_ios, > .parse_dt = dw_mci_exynos_parse_dt, > - .setup_bus = dw_mci_exynos_setup_bus, > }; > > static const struct of_device_id dw_mci_exynos_match[] = { > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index 9834221..adb1b7d 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -1878,7 +1878,7 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id) > struct mmc_host *mmc; > struct dw_mci_slot *slot; > const struct dw_mci_drv_data *drv_data = host->drv_data; > - int ctrl_id, ret; > + int ctrl_id; > u8 bus_width; > > mmc = mmc_alloc_host(sizeof(struct dw_mci_slot), host->dev); > @@ -1935,14 +1935,6 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id) > else > bus_width = 1; > > - if (drv_data && drv_data->setup_bus) { > - struct device_node *slot_np; > - slot_np = dw_mci_of_find_slot_node(host->dev, slot->id); > - ret = drv_data->setup_bus(host, slot_np, bus_width); > - if (ret) > - goto err_setup_bus; > - } > - > switch (bus_width) { > case 8: > mmc->caps |= MMC_CAP_8_BIT_DATA; > @@ -2006,10 +1998,6 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id) > queue_work(host->card_workqueue, &host->card_work); > > return 0; > - > -err_setup_bus: > - mmc_free_host(mmc); > - return -EINVAL; > } > > static void dw_mci_cleanup_slot(struct dw_mci_slot *slot, unsigned int id) > diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h > index 53b8fd9..0b74189 100644 > --- a/drivers/mmc/host/dw_mmc.h > +++ b/drivers/mmc/host/dw_mmc.h > @@ -190,7 +190,6 @@ extern int dw_mci_resume(struct dw_mci *host); > * @prepare_command: handle CMD register extensions. > * @set_ios: handle bus specific extensions. > * @parse_dt: parse implementation specific device tree properties. > - * @setup_bus: initialize io-interface > * > * Provide controller implementation specific extensions. The usage of this > * data structure is fully optional and usage of each member in this structure > @@ -203,7 +202,5 @@ struct dw_mci_drv_data { > void (*prepare_command)(struct dw_mci *host, u32 *cmdr); > void (*set_ios)(struct dw_mci *host, struct mmc_ios *ios); > int (*parse_dt)(struct dw_mci *host); > - int (*setup_bus)(struct dw_mci *host, > - struct device_node *slot_np, u8 bus_width); > }; > #endif /* _DW_MMC_H_ */ > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html