From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753471AbbJGMcE (ORCPT ); Wed, 7 Oct 2015 08:32:04 -0400 Received: from mail-wi0-f170.google.com ([209.85.212.170]:34741 "EHLO mail-wi0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751855AbbJGMcB (ORCPT ); Wed, 7 Oct 2015 08:32:01 -0400 Subject: Re: [PATCH v2] clocksource/drivers/tango_xtal: Add new timer for Tango SoCs To: Marc Gonzalez , Thomas Gleixner References: <5613E45C.5020208@sigmadesigns.com> <5614549F.2070002@linaro.org> <5614D66A.1060402@sigmadesigns.com> <56150369.2050609@sigmadesigns.com> Cc: LKML , Mans Rullgard , Mason From: Daniel Lezcano Message-ID: <561510BF.7050207@linaro.org> Date: Wed, 7 Oct 2015 14:31:59 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <56150369.2050609@sigmadesigns.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/07/2015 01:35 PM, Marc Gonzalez wrote: > Sigma Designs Tango platforms provide a 27 MHz crystal oscillator. > Use it for clocksource, sched_clock, and delay_timer. > > Signed-off-by: Marc Gonzalez > --- > AFAICS, clocksource_register_hz does not report failures via its > return value (always 0) but writes warnings to stdout? Yeah, it returns always 0. I suggest you assume it is returning an error code, that will be safer for future changes in the framework (if any). > Open question: can I call register_current_timer_delay, > sched_clock_register, clocksource_register_hz in any order? > --- Yes, I think so. Thomas ? [ ... ] > +static void __init tango_clocksource_init(struct device_node *np) > +{ > + struct clk *clk = of_clk_get(np, 0); > + unsigned int xtal_freq = clk_get_rate(clk); > + xtal_in_cnt = of_iomap(np, 0); > + if (xtal_in_cnt == NULL) > + panic("%s: of_iomap failed\n", np->full_name); ^^^^^^^^^^^ That does not comply with the Linux kernel coding style. xtal_in_cnt = of_iomap(np, 0); if (!xtal_in_cnt) { pr_err("Argh!"); return; } clk = of_clk_get(np, 0); if (!clk) { pr_err("grumf!"); return; } freq = clk_get_rate(clk); > + > + delay_timer.freq = xtal_freq; > + delay_timer.read_current_timer = read_xtal_counter; > + register_current_timer_delay(&delay_timer); > + sched_clock_register(read_sched_clock, 32, xtal_freq); > + clocksource_register_hz(&tango_xtal, xtal_freq); ret = clocksource_register_hz(&tango_xtal, xtal_freq); if (ret) { pr_err("oups!"); return; } -- Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog