From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752117AbbHQXo0 (ORCPT ); Mon, 17 Aug 2015 19:44:26 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:34451 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751336AbbHQXoX (ORCPT ); Mon, 17 Aug 2015 19:44:23 -0400 Subject: Re: [PATCH V3 4/6] slim: qcom: Add Qualcomm Slimbus controller driver To: Mark Brown References: <1438585190-11894-1-git-send-email-sdharia@codeaurora.org> <1438585190-11894-5-git-send-email-sdharia@codeaurora.org> <20150814183106.GE10748@sirena.org.uk> Cc: gregkh@linuxfoundation.org, bp@suse.de, poeschel@lemonage.de, treding@nvidia.com, gong.chen@linux.intel.com, andreas.noever@gmail.com, alan@linux.intel.com, mathieu.poirier@linaro.org, daniel@ffwll.ch, oded.gabbay@amd.com, jkosina@suse.cz, sharon.dvir1@mail.huji.ac.il, joe@perches.com, davem@davemloft.net, james.hogan@imgtec.com, michael.opdenacker@free-electrons.com, daniel.thompson@linaro.org, robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com, ijc+devicetree@hellion.org.uk, galak@codeaurora.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, kheitke@audience.com, mlocke@codeaurora.org, agross@codeaurora.org, linux-arm-msm@vger.kernel.org From: Sagar Dharia Message-ID: <55D271D4.6020903@codeaurora.org> Date: Mon, 17 Aug 2015 17:44:20 -0600 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <20150814183106.GE10748@sirena.org.uk> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 8/14/2015 12:31 PM, Mark Brown wrote: > On Mon, Aug 03, 2015 at 12:59:48AM -0600, Sagar Dharia wrote: > >> +/** >> + * Qualcomm slimbus controller may experience interference on the lines >> + * causing some early messages (e.g. logical-address assignment) to be >> + * NACKed. Retry after sometime (typically 1 superframe) >> + */ >> +static void msm_slim_wait_retry(struct msm_slim_ctrl *dev) >> +{ >> + int msec_per_frm = 0; >> + int sfr_per_sec; >> + >> + /* Wait for 1 superframe, or default time and then retry */ >> + sfr_per_sec = dev->framer.superfreq / >> + (1 << (SLIM_MAX_CLK_GEAR - dev->ctrl.clkgear)); >> + if (sfr_per_sec) >> + msec_per_frm = MSEC_PER_SEC / sfr_per_sec; >> + if (msec_per_frm < DEF_RETRY_MS) >> + msec_per_frm = DEF_RETRY_MS; >> + msleep(msec_per_frm); >> +} > This looks like logic which might be usefully pulled out to the > framework - I bet this isn't an issue unique to your controller, the > users (well, one user) look like cases where the bus might be > destabilised by devices powering up and trying to enumerate under less > than ideal electrical conditions which seems like something that's > likely to affect other hardware. I agree, I will move this to the framework. Thanks Sagar > >> + rclk = devm_clk_get(&pdev->dev, "core_clk"); >> + if (IS_ERR(rclk)) { >> + /* unlikely that this is probe-defer */ >> + dev_err(&pdev->dev, "rclk get failed:%ld\n", PTR_ERR(rclk)); >> + devm_clk_put(&pdev->dev, hclk); > No need to call devm_clk_put() explicitly in your probe function. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation