From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753241AbdI1NVH (ORCPT ); Thu, 28 Sep 2017 09:21:07 -0400 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:36090 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752527AbdI1NVF (ORCPT ); Thu, 28 Sep 2017 09:21:05 -0400 Subject: Re: [PATCH v4 2/4] dmaengine: Add STM32 MDMA driver To: Vinod Koul CC: Rob Herring , Mark Rutland , Maxime Coquelin , Alexandre Torgue , Russell King , Dan Williams , "M'boumba Cedric Madianga" , Fabrice GASNIER , Herbert Xu , Fabien DESSENNE , Amelie Delaunay , , , , References: <1503671466-32029-1-git-send-email-pierre-yves.mordret@st.com> <1503671466-32029-3-git-send-email-pierre-yves.mordret@st.com> <20170928081310.GA30097@localhost> From: Pierre Yves MORDRET Message-ID: <1a869018-31e7-9fd4-2017-9c8cdd8c7d88@st.com> Date: Thu, 28 Sep 2017 15:17:49 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20170928081310.GA30097@localhost> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.75.127.46] X-ClientProxiedBy: SFHDAG2NODE2.st.com (10.75.127.5) To SFHDAG5NODE2.st.com (10.75.127.14) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-09-28_04:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/28/2017 10:13 AM, Vinod Koul wrote: > On Fri, Aug 25, 2017 at 04:31:04PM +0200, Pierre-Yves MORDRET wrote: >> +static int stm32_mdma_probe(struct platform_device *pdev) >> +{ > > [snip] > >> + dmadev = devm_kzalloc(&pdev->dev, sizeof(*dmadev) + sizeof(u32) * count, >> + GFP_KERNEL); >> + if (!dmadev) >> + return -ENOMEM; >> + >> + dmadev->nr_channels = nr_channels; >> + dmadev->nr_requests = nr_requests; >> + device_property_read_u32_array(&pdev->dev, "st,ahb-addr-masks", >> + dmadev->ahb_addr_masks, >> + count); >> + dmadev->nr_ahb_addr_masks = count; >> + >> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); >> + dmadev->base = devm_ioremap_resource(&pdev->dev, res); >> + if (IS_ERR(dmadev->base)) >> + return PTR_ERR(dmadev->base); >> + >> + dmadev->clk = devm_clk_get(&pdev->dev, NULL); >> + if (IS_ERR(dmadev->clk)) { >> + dev_err(&pdev->dev, "Error: Missing controller clock\n"); >> + return PTR_ERR(dmadev->clk); >> + } > > I am assuming if clk is not availble at this point of time you return clk > error which maybe defer probe, right? Yes. So I will add an "if" statement as I did for DMAMUX if (ret == -EPROBE_DEFER) dev_info .... (instead of dev_err) > >> +static struct platform_driver stm32_mdma_driver = { >> + .driver = { >> + .name = "stm32-mdma", >> + .of_match_table = stm32_mdma_of_match, >> + }, >> +}; >> + >> +static int __init stm32_mdma_init(void) >> +{ >> + return platform_driver_probe(&stm32_mdma_driver, stm32_mdma_probe); > > and you register platform_driver_probe() which per > drivers/base/platform.c:760 is incompatible with defer probing. > So this need a fix > Will change to platform_driver_register Thanks and regards