On 25 April 2017 at 17:39, David Woods <dwoods@xxxxxxxxxxxx> wrote: > Using the device_property interfaces allows the dw_mmc driver to work > on platforms which run on either device tree or ACPI. > > Signed-off-by: David Woods <dwoods@xxxxxxxxxxxx> > Reviewed-by: Chris Metcalf <cmetcalf@xxxxxxxxxxxx> > --- > drivers/mmc/core/host.c | 72 +++++++++++++++++++++++------------------------ > drivers/mmc/host/dw_mmc.c | 24 ++++++++-------- Can you please split this to two separate changes. One for dw_mmc with a proper prefix (mmc: dw_mmc:) and one for the mmc core (prefix "mmc: core:"). Kind regards Uffe > 2 files changed, 47 insertions(+), 49 deletions(-) > > diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c > index 3f8c85d..d2c059e 100644 > --- a/drivers/mmc/core/host.c > +++ b/drivers/mmc/core/host.c > @@ -176,19 +176,17 @@ static void mmc_retune_timer(unsigned long data) > */ > int mmc_of_parse(struct mmc_host *host) > { > - struct device_node *np; > + struct device *dev = host->parent; > u32 bus_width; > int ret; > bool cd_cap_invert, cd_gpio_invert = false; > bool ro_cap_invert, ro_gpio_invert = false; > > - if (!host->parent || !host->parent->of_node) > + if (!dev) > return 0; > > - np = host->parent->of_node; > - > /* "bus-width" is translated to MMC_CAP_*_BIT_DATA flags */ > - if (of_property_read_u32(np, "bus-width", &bus_width) < 0) { > + if (device_property_read_u32(dev, "bus-width", &bus_width) < 0) { > dev_dbg(host->parent, > "\"bus-width\" property is missing, assuming 1 bit.\n"); > bus_width = 1; > @@ -210,7 +208,7 @@ int mmc_of_parse(struct mmc_host *host) > } > > /* f_max is obtained from the optional "max-frequency" property */ > - of_property_read_u32(np, "max-frequency", &host->f_max); > + device_property_read_u32(dev, "max-frequency", &host->f_max); > > /* > * Configure CD and WP pins. They are both by default active low to > @@ -225,12 +223,12 @@ int mmc_of_parse(struct mmc_host *host) > */ > > /* Parse Card Detection */ > - if (of_property_read_bool(np, "non-removable")) { > + if (device_property_read_bool(dev, "non-removable")) { > host->caps |= MMC_CAP_NONREMOVABLE; > } else { > - cd_cap_invert = of_property_read_bool(np, "cd-inverted"); > + cd_cap_invert = device_property_read_bool(dev, "cd-inverted"); > > - if (of_property_read_bool(np, "broken-cd")) > + if (device_property_read_bool(dev, "broken-cd")) > host->caps |= MMC_CAP_NEEDS_POLL; > > ret = mmc_gpiod_request_cd(host, "cd", 0, true, > @@ -256,7 +254,7 @@ int mmc_of_parse(struct mmc_host *host) > } > > /* Parse Write Protection */ > - ro_cap_invert = of_property_read_bool(np, "wp-inverted"); > + ro_cap_invert = device_property_read_bool(dev, "wp-inverted"); > > ret = mmc_gpiod_request_ro(host, "wp", 0, false, 0, &ro_gpio_invert); > if (!ret) > @@ -264,64 +262,64 @@ int mmc_of_parse(struct mmc_host *host) > else if (ret != -ENOENT && ret != -ENOSYS) > return ret; > > - if (of_property_read_bool(np, "disable-wp")) > + if (device_property_read_bool(dev, "disable-wp")) > host->caps2 |= MMC_CAP2_NO_WRITE_PROTECT; > > /* See the comment on CD inversion above */ > if (ro_cap_invert ^ ro_gpio_invert) > host->caps2 |= MMC_CAP2_RO_ACTIVE_HIGH; > > - if (of_property_read_bool(np, "cap-sd-highspeed")) > + if (device_property_read_bool(dev, "cap-sd-highspeed")) > host->caps |= MMC_CAP_SD_HIGHSPEED; > - if (of_property_read_bool(np, "cap-mmc-highspeed")) > + if (device_property_read_bool(dev, "cap-mmc-highspeed")) > host->caps |= MMC_CAP_MMC_HIGHSPEED; > - if (of_property_read_bool(np, "sd-uhs-sdr12")) > + if (device_property_read_bool(dev, "sd-uhs-sdr12")) > host->caps |= MMC_CAP_UHS_SDR12; > - if (of_property_read_bool(np, "sd-uhs-sdr25")) > + if (device_property_read_bool(dev, "sd-uhs-sdr25")) > host->caps |= MMC_CAP_UHS_SDR25; > - if (of_property_read_bool(np, "sd-uhs-sdr50")) > + if (device_property_read_bool(dev, "sd-uhs-sdr50")) > host->caps |= MMC_CAP_UHS_SDR50; > - if (of_property_read_bool(np, "sd-uhs-sdr104")) > + if (device_property_read_bool(dev, "sd-uhs-sdr104")) > host->caps |= MMC_CAP_UHS_SDR104; > - if (of_property_read_bool(np, "sd-uhs-ddr50")) > + if (device_property_read_bool(dev, "sd-uhs-ddr50")) > host->caps |= MMC_CAP_UHS_DDR50; > - if (of_property_read_bool(np, "cap-power-off-card")) > + if (device_property_read_bool(dev, "cap-power-off-card")) > host->caps |= MMC_CAP_POWER_OFF_CARD; > - if (of_property_read_bool(np, "cap-mmc-hw-reset")) > + if (device_property_read_bool(dev, "cap-mmc-hw-reset")) > host->caps |= MMC_CAP_HW_RESET; > - if (of_property_read_bool(np, "cap-sdio-irq")) > + if (device_property_read_bool(dev, "cap-sdio-irq")) > host->caps |= MMC_CAP_SDIO_IRQ; > - if (of_property_read_bool(np, "full-pwr-cycle")) > + if (device_property_read_bool(dev, "full-pwr-cycle")) > host->caps2 |= MMC_CAP2_FULL_PWR_CYCLE; > - if (of_property_read_bool(np, "keep-power-in-suspend")) > + if (device_property_read_bool(dev, "keep-power-in-suspend")) > host->pm_caps |= MMC_PM_KEEP_POWER; > - if (of_property_read_bool(np, "wakeup-source") || > - of_property_read_bool(np, "enable-sdio-wakeup")) /* legacy */ > + if (device_property_read_bool(dev, "wakeup-source") || > + device_property_read_bool(dev, "enable-sdio-wakeup")) /* legacy */ > host->pm_caps |= MMC_PM_WAKE_SDIO_IRQ; > - if (of_property_read_bool(np, "mmc-ddr-3_3v")) > + if (device_property_read_bool(dev, "mmc-ddr-3_3v")) > host->caps |= MMC_CAP_3_3V_DDR; > - if (of_property_read_bool(np, "mmc-ddr-1_8v")) > + if (device_property_read_bool(dev, "mmc-ddr-1_8v")) > host->caps |= MMC_CAP_1_8V_DDR; > - if (of_property_read_bool(np, "mmc-ddr-1_2v")) > + if (device_property_read_bool(dev, "mmc-ddr-1_2v")) > host->caps |= MMC_CAP_1_2V_DDR; > - if (of_property_read_bool(np, "mmc-hs200-1_8v")) > + if (device_property_read_bool(dev, "mmc-hs200-1_8v")) > host->caps2 |= MMC_CAP2_HS200_1_8V_SDR; > - if (of_property_read_bool(np, "mmc-hs200-1_2v")) > + if (device_property_read_bool(dev, "mmc-hs200-1_2v")) > host->caps2 |= MMC_CAP2_HS200_1_2V_SDR; > - if (of_property_read_bool(np, "mmc-hs400-1_8v")) > + if (device_property_read_bool(dev, "mmc-hs400-1_8v")) > host->caps2 |= MMC_CAP2_HS400_1_8V | MMC_CAP2_HS200_1_8V_SDR; > - if (of_property_read_bool(np, "mmc-hs400-1_2v")) > + if (device_property_read_bool(dev, "mmc-hs400-1_2v")) > host->caps2 |= MMC_CAP2_HS400_1_2V | MMC_CAP2_HS200_1_2V_SDR; > - if (of_property_read_bool(np, "mmc-hs400-enhanced-strobe")) > + if (device_property_read_bool(dev, "mmc-hs400-enhanced-strobe")) > host->caps2 |= MMC_CAP2_HS400_ES; > - if (of_property_read_bool(np, "no-sdio")) > + if (device_property_read_bool(dev, "no-sdio")) > host->caps2 |= MMC_CAP2_NO_SDIO; > - if (of_property_read_bool(np, "no-sd")) > + if (device_property_read_bool(dev, "no-sd")) > host->caps2 |= MMC_CAP2_NO_SD; > - if (of_property_read_bool(np, "no-mmc")) > + if (device_property_read_bool(dev, "no-mmc")) > host->caps2 |= MMC_CAP2_NO_MMC; > > - host->dsr_req = !of_property_read_u32(np, "dsr", &host->dsr); > + host->dsr_req = !device_property_read_u32(dev, "dsr", &host->dsr); > if (host->dsr_req && (host->dsr & ~0xffff)) { > dev_err(host->parent, > "device tree specified broken value for DSR: 0x%x, ignoring\n", > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index 8718432..3728c59 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -2641,8 +2641,8 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id) > host->slot[id] = slot; > > mmc->ops = &dw_mci_ops; > - if (of_property_read_u32_array(host->dev->of_node, > - "clock-freq-min-max", freq, 2)) { > + if (device_property_read_u32_array(host->dev, "clock-freq-min-max", > + freq, 2)) { > mmc->f_min = DW_MCI_FREQ_MIN; > mmc->f_max = DW_MCI_FREQ_MAX; > } else { > @@ -2742,7 +2742,6 @@ static void dw_mci_init_dma(struct dw_mci *host) > { > int addr_config; > struct device *dev = host->dev; > - struct device_node *np = dev->of_node; > > /* > * Check tansfer mode from HCON[17:16] > @@ -2803,8 +2802,9 @@ static void dw_mci_init_dma(struct dw_mci *host) > dev_info(host->dev, "Using internal DMA controller.\n"); > } else { > /* TRANS_MODE_EDMAC: check dma bindings again */ > - if ((of_property_count_strings(np, "dma-names") < 0) || > - (!of_find_property(np, "dmas", NULL))) { > + if ((device_property_read_string_array(dev, "dma-names", > + NULL, 0) < 0) || > + !device_property_present(dev, "dmas")) { > goto no_dma; > } > host->dma_ops = &dw_mci_edmac_ops; > @@ -2964,7 +2964,6 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host) > { > struct dw_mci_board *pdata; > struct device *dev = host->dev; > - struct device_node *np = dev->of_node; > const struct dw_mci_drv_data *drv_data = host->drv_data; > int ret; > u32 clock_frequency; > @@ -2981,20 +2980,21 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host) > } > > /* find out number of slots supported */ > - of_property_read_u32(np, "num-slots", &pdata->num_slots); > + device_property_read_u32(dev, "num-slots", &pdata->num_slots); > > - if (of_property_read_u32(np, "fifo-depth", &pdata->fifo_depth)) > + if (device_property_read_u32(dev, "fifo-depth", &pdata->fifo_depth)) > dev_info(dev, > "fifo-depth property not found, using value of FIFOTH register as default\n"); > > - of_property_read_u32(np, "card-detect-delay", &pdata->detect_delay_ms); > + device_property_read_u32(dev, "card-detect-delay", > + &pdata->detect_delay_ms); > > - of_property_read_u32(np, "data-addr", &host->data_addr_override); > + device_property_read_u32(dev, "data-addr", &host->data_addr_override); > > - if (of_get_property(np, "fifo-watermark-aligned", NULL)) > + if (device_property_present(dev, "fifo-watermark-aligned")) > host->wm_aligned = true; > > - if (!of_property_read_u32(np, "clock-frequency", &clock_frequency)) > + if (!device_property_read_u32(dev, "clock-frequency", &clock_frequency)) > pdata->bus_hz = clock_frequency; > > if (drv_data && drv_data->parse_dt) { > -- > 2.7.2 > -- 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