All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 1/9] sunxi: initial sun7i clocks and timer support.
Date: Fri, 28 Mar 2014 09:25:40 +0100	[thread overview]
Message-ID: <53353204.1090702@redhat.com> (raw)
In-Reply-To: <1395994817.26869.6.camel@dagon.hellion.org.uk>

Hi,

On 03/28/2014 09:20 AM, Ian Campbell wrote:
> On Thu, 2014-03-27 at 23:36 +0100, Marek Vasut wrote:
>> On Thursday, March 27, 2014 at 11:12:38 PM, Ian Campbell wrote:
>>> On Thu, 2014-03-27 at 23:00 +0100, Marek Vasut wrote:
>>>> On Thursday, March 27, 2014 at 10:29:56 PM, Ian Campbell wrote:
>>>>> On Mon, 2014-03-24 at 21:52 +0100, Marek Vasut wrote:
>>>>>>> +static struct sunxi_timer *timer_base =
>>>>>>> +     &((struct sunxi_timer_reg
>>>>>>> *)SUNXI_TIMER_BASE)->timer[TIMER_NUM]; +
>>>>>>> +/* macro to read the 32 bit timer: since it decrements, we invert
>>>>>>> read value */ +#define READ_TIMER() (~readl(&timer_base->val))
>>>>>>
>>>>>> This macro has to go, just use ~readl() in place. But still, why do
>>>>>> you use that negation in "~readl()" anyway ?
>>>>>
>>>>> The comment right above it explains why: the timer counts backwards and
>>>>> inverting it accounts for that.
>>>>>
>>>>> This is subtle enough that I don't think using ~readl() in place in the
>>>>> 3 callers would be an improvement.
>>>>
>>>> Please do it, we don't want any implementers down the line using this
>>>> "READ_TIMER()" call and getting hit by "timer_base undefined" . That
>>>> macro hides the dependency on this symbol, while if you expanded it
>>>> in-place, the dependency would be explicit. I really do want to see that
>>>> macro gone, sorry.
>>>
>>> How about a static inline instead of the macro? I'm thinking with a
>>> body:
>>> {
>>>       struct sunxi_timer *timers =
>>>               (struct sunxi_timer_reg *)SUNXI_TIMER_BASE;
>>>       return timers[TIMER_NUM]->val;
>>> }
>>> With something similar in timer_init then both the macro and the static
>>> global timer_base can be dropped.
>>
>> That's just wrapping a readl() into another function, which seems unnecessary 
>> really.
> 
> Sorry, but I think inlining the readl (and along with it the
> interesting/subtle) inverting functionality is a terrible idea, it
> should be wrapped in some sort of accessor precisely because it is not a
> raw readl.
> 
> I'm going to make it a function as I suggested.
> 
>>> BTW this macro is in arch/arm/cpu/armv7/sunxi/timer.c not a header, so
>>> I'm not sure which implementers down the line you were worried about
>>> using it in some other context where it breaks.
>>
>> People plumbing in the timer.c file who are not aware the macro has a dependency 
>> which is not passed as it's parameter.
> 
> What people? What plumbing? I've no idea what you are concerned about
> here.

I think what Marek is concerned about is people making some global u-boot change
which for some reason requires fixing up a bunch of platform specific files,
and they end up touching our timer.c without ever test-compiling it.

These kind of things happen in qemu / the kernel too. In this case they could move
a READ_TIMER() somewhere where the timer_base is not defined. Your suggestion of
making it a proper function will fix that though, and I think is the best solution.

Regards,

Hans

  parent reply	other threads:[~2014-03-28  8:25 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-21 21:54 [U-Boot] [PATCH v2 0/9] sunxi: initial upstreamining effort Ian Campbell
2014-03-21 21:54 ` [U-Boot] [PATCH v2 1/9] sunxi: initial sun7i clocks and timer support Ian Campbell
2014-03-24 20:52   ` Marek Vasut
2014-03-24 22:42     ` Olliver Schinagl
2014-03-25  0:57       ` Marek Vasut
2014-03-25  6:35       ` Wolfgang Denk
2014-03-26  8:23       ` Ian Campbell
2014-04-13 19:55       ` Ian Campbell
2014-04-13 21:00         ` Marek Vasut
2014-03-26  8:23     ` Ian Campbell
2014-03-27 21:29     ` Ian Campbell
2014-03-27 22:00       ` Marek Vasut
2014-03-27 22:12         ` Ian Campbell
2014-03-27 22:36           ` Marek Vasut
2014-03-28  8:20             ` Ian Campbell
2014-03-28  8:24               ` Marek Vasut
2014-03-28  8:25               ` Hans de Goede [this message]
2014-03-28  8:39                 ` Marek Vasut
2014-03-21 21:54 ` [U-Boot] [PATCH v2 2/9] sunxi: initial sun7i pinmux and gpio support Ian Campbell
2014-03-24 20:54   ` Marek Vasut
2014-03-26  8:30     ` Ian Campbell
2014-03-26  8:59       ` Marek Vasut
2014-03-26  9:01       ` Wolfgang Denk
2014-03-27 21:52         ` Ian Campbell
2014-03-26  8:33     ` Ian Campbell
2014-03-26  9:01       ` Marek Vasut
2014-03-26  9:03       ` Wolfgang Denk
2014-03-26  9:39         ` Ian Campbell
2014-03-26 10:03           ` Marek Vasut
2014-03-26 14:57           ` Wolfgang Denk
2014-03-21 21:54 ` [U-Boot] [PATCH v2 3/9] sunxi: initial sun7i dram setup support Ian Campbell
2014-03-21 21:54 ` [U-Boot] [PATCH v2 4/9] sunxi: initial generic sun7i cpu, board and start of day support Ian Campbell
2014-03-22  6:52   ` Wolfgang Denk
2014-03-22  7:08     ` mrnuke
2014-03-22  9:04     ` Hans de Goede
2014-03-22  9:37       ` Ian Campbell
2014-03-22 12:27       ` Wolfgang Denk
2014-03-22 15:28         ` Ian Campbell
2014-03-21 21:54 ` [U-Boot] [PATCH v2 5/9] sunxi: generic sun7i build infrastructure Ian Campbell
2014-03-22  6:46   ` Wolfgang Denk
2014-03-22 10:04     ` Ian Campbell
2014-03-22 12:33       ` Wolfgang Denk
2014-03-22 15:12         ` Hans de Goede
2014-03-22 15:26           ` Ian Campbell
2014-03-22 19:31           ` Wolfgang Denk
2014-03-22 20:07             ` Hans de Goede
2014-03-24 21:01   ` Marek Vasut
2014-03-27 22:05     ` Ian Campbell
2014-03-27 22:37       ` Marek Vasut
2014-03-28  8:26         ` Ian Campbell
2014-03-28  8:37           ` Marek Vasut
2014-03-21 21:54 ` [U-Boot] [PATCH v2 6/9] sunxi: add support for Cubietruck booting in FEL mode Ian Campbell
2014-03-21 21:54 ` [U-Boot] [PATCH v2 7/9] sunxi: add gmac Ethernet support Ian Campbell
2014-03-21 21:54 ` [U-Boot] [PATCH v2 8/9] sunxi: mmc support Ian Campbell
2014-03-24 21:14   ` Marek Vasut
2014-03-21 21:54 ` [U-Boot] [PATCH v2 9/9] sunxi: non-FEL SPL boot support for sun7i Ian Campbell
2014-03-22  6:54 ` [U-Boot] [PATCH v2 0/9] sunxi: initial upstreamining effort Wolfgang Denk
2014-03-24  0:14 ` [U-Boot] [linux-sunxi] " Henrik Nordström
2014-03-24  8:05   ` Ian Campbell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53353204.1090702@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.