Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966099AbbBCR0M (ORCPT ); Tue, 3 Feb 2015 12:26:12 -0500 Received: from smtp-out-020.synserver.de ([212.40.185.20]:1078 "EHLO smtp-out-017.synserver.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965461AbbBCR0J (ORCPT ); Tue, 3 Feb 2015 12:26:09 -0500 X-SynServer-TrustedSrc: 1 X-SynServer-AuthUser: lars@metafoo.de X-SynServer-PPID: 5693 Message-ID: <54D104AC.5010603@metafoo.de> Date: Tue, 03 Feb 2015 18:26:04 +0100 From: Lars-Peter Clausen User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.4.0 MIME-Version: 1.0 To: Russell King - ARM Linux CC: Mark Brown , Manuel Lauss , alsa-devel , Richard Purdie , patches@opensource.wolfsonmicro.com, LKML , linux-sound@vger.kernel.org, Manuel Lauss , Bo Shen , linux-arm-kernel@lists.infradead.org, Liam Girdwood Subject: Re: [alsa-devel] [RFC PATCH] ASoC: wm8731: let codec to manage clock by itself References: <1422934415-24957-1-git-send-email-voice.shen@atmel.com> <20150203124441.GK21293@sirena.org.uk> <54D0FD1C.9020305@metafoo.de> <20150203171733.GY8656@n2100.arm.linux.org.uk> In-Reply-To: <20150203171733.GY8656@n2100.arm.linux.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 Content-Length: 1646 Lines: 34 On 02/03/2015 06:17 PM, Russell King - ARM Linux wrote: > On Tue, Feb 03, 2015 at 05:53:48PM +0100, Lars-Peter Clausen wrote: >> On 02/03/2015 01:44 PM, Mark Brown wrote: >>> On Tue, Feb 03, 2015 at 08:54:57AM +0100, Manuel Lauss wrote: >>> >>>> + wm8731->mclk = devm_clk_get(&spi->dev, "mclk"); >>>> + if (IS_ERR(wm8731->mclk)) { >>>> + wm8731->mclk = NULL; >>>> + dev_warn(&spi->dev, "assuming static MCLK\n"); >>>> + } >>> >>> This is broken for both deferred probe and in the case where the clock >>> API genuinely returns a NULL clock. Other than that it's the kind of >>> thing that we've done for some other drivers, though it's not good to >>> have to do this. Check them for correct behaviour. >> >> Ideally we'd introduce a {devm_}clk_get_optional(), with the same semantics >> as gpiod_get_optional(), which handles the finer details of differentiating >> between clock specified, but not yet probed, clock specified, but >> incorrectly and no clock specified, so this doesn't have to be done over and >> over by each driver. > > No, we don't need to. It clk_get() already knows this distinction, and > it appropriately returns -ENOENT vs -EPROBE_DEFER according to whether > there's a clock specified in DT or not. I know, but it returns a error when no clock is specified (-ENOENT), whereas gpiod_get_optional()-like semantics mean, it would return no error. -- 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/