Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754391Ab3ILPMD (ORCPT ); Thu, 12 Sep 2013 11:12:03 -0400 Received: from devils.ext.ti.com ([198.47.26.153]:54769 "EHLO devils.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754351Ab3ILPMA (ORCPT ); Thu, 12 Sep 2013 11:12:00 -0400 Message-ID: <5231D9B4.5000308@ti.com> Date: Thu, 12 Sep 2013 20:41:48 +0530 From: Balaji T K User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Geert Uytterhoeven CC: Matt Porter , Chris Ball , Grant Likely , Rob Herring , Vinod Koul , Tony Lindgren , Linux OMAP List , Linux Kernel Mailing List , Linux MMC List , Arnd Bergmann , Santosh Shilimkar Subject: Re: Uninitialized rx_req/tx_req (was: Re: [PATCH v2 2/3] mmc: omap_hsmmc: Skip platform_get_resource_byname() for dt case) References: In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4107 Lines: 112 On Thursday 12 September 2013 06:11 PM, Geert Uytterhoeven wrote: > On Tue, Mar 5, 2013 at 10:13 PM, Matt Porter wrote: >> From: Santosh Shilimkar >> >> 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 >> --- >> 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? > Hi, rx_req and tx_req are not used in DT case [1]. dma_request_slave_channel is used to get dma info from mmc dt node. __dma_request_channel is fallback case for non dt boot. Note __dma_request_channel is called if dma info is not populated in dts files. static inline struct dma_chan *__dma_request_slave_channel_compat(const dma_cap_mask_t *mask, dma_filter_fn fn, void *fn_param, struct device *dev, char *name) { struct dma_chan *chan; chan = dma_request_slave_channel(dev, name); if (chan) return chan; return __dma_request_channel(mask, fn, fn_param); } > 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/