Messages in this thread | | | Date | Thu, 12 Sep 2013 20:40:11 +0530 | From | Balaji T K <> | Subject | Re: Uninitialized rx_req/tx_req (was: Re: [PATCH v2 2/3] mmc: omap_hsmmc: Skip platform_get_resource_byname() for dt case) |
| |
On Thursday 12 September 2013 06:11 PM, Geert Uytterhoeven wrote: > On Tue, Mar 5, 2013 at 10:13 PM, Matt Porter <mporter@ti.com> wrote: >> From: Santosh Shilimkar <santosh.shilimkar@ti.com> >> >> MMC driver probe will abort for DT case because of failed >> platform_get_resource_byname() lookup. Fix it by skipping resource >> byname lookup for device tree build. >> >> Issue is hidden because hwmod popullates the IO resources which >> helps to succeed platform_get_resource_byname() and probe. >> >> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com> >> --- >> drivers/mmc/host/omap_hsmmc.c | 28 +++++++++++++++------------- >> 1 file changed, 15 insertions(+), 13 deletions(-) >> >> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c >> index e79b12d..8ae1225 100644 >> --- a/drivers/mmc/host/omap_hsmmc.c >> +++ b/drivers/mmc/host/omap_hsmmc.c >> @@ -1896,21 +1896,23 @@ static int omap_hsmmc_probe(struct platform_device *pdev) >> >> omap_hsmmc_conf_bus_power(host); >> >> - res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx"); >> - if (!res) { >> - dev_err(mmc_dev(host->mmc), "cannot get DMA TX channel\n"); >> - ret = -ENXIO; >> - goto err_irq; >> - } >> - tx_req = res->start; >> + if (!pdev->dev.of_node) { >> + res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx"); >> + if (!res) { >> + dev_err(mmc_dev(host->mmc), "cannot get DMA TX channel\n"); >> + ret = -ENXIO; >> + goto err_irq; >> + } >> + tx_req = res->start; >> >> - res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "rx"); >> - if (!res) { >> - dev_err(mmc_dev(host->mmc), "cannot get DMA RX channel\n"); >> - ret = -ENXIO; >> - goto err_irq; >> + res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "rx"); >> + if (!res) { >> + dev_err(mmc_dev(host->mmc), "cannot get DMA RX channel\n"); >> + ret = -ENXIO; >> + goto err_irq; >> + } >> + rx_req = res->start; >> } >> - rx_req = res->start; >> >> dma_cap_zero(mask); >> dma_cap_set(DMA_SLAVE, mask); > > Now this is in mainline, I get (gcc 4.1.2): > > drivers/mmc/host/omap_hsmmc.c: In function ‘omap_hsmmc_probe’: > drivers/mmc/host/omap_hsmmc.c:1779: warning: ‘rx_req’ may be used > uninitialized in this function > drivers/mmc/host/omap_hsmmc.c:1779: warning: ‘tx_req’ may be used > uninitialized in this function > > Indeed, rx_req and tx_req are not initialized in the DT case. > > Initializing them to zero is probably not the right fix. Where are the values > supposed to come from in the DT case? > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds >
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |