Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: John Crispin <john@phrozen.org>
To: linux-mips@linux-mips.org, Florian Fainelli <florian@openwrt.org>
Subject: Re: [PATCH] MIPS: add proper set_mode() to cevt-r4k
Date: Thu, 01 Aug 2013 08:15:50 +0200	[thread overview]
Message-ID: <51F9FD16.4030706@phrozen.org> (raw)
In-Reply-To: <1687511.8JA8mPPmNW@lenovo>

On 31/07/13 21:26, Florian Fainelli wrote:
> Le mercredi 31 juillet 2013 12:22:15 David Daney a écrit :
>> On 07/29/2013 04:14 AM, Florian Fainelli wrote:
>>> 2013/7/29 John Crispin<john@phrozen.org>:
>> [...]
>>
>>>>> It looks to me like you are moving the irq setup later just to ensure
>>>>> that your ralink clockevent device has been registered before and has
>>>>> set cp0_timer_irq_installed when the set_mode() r4k clockevent device
>>>>> runs, such that it won't register the same IRQ that your platforms
>>>>> uses. If that it the case, cannot you just ensure that you run your
>>>>> cevt device registration before mips_clockevent_init() is called?
>>>>
>>>> i dont like relying on the order in which the modules get loaded.
>>>
>>> plat_time_init() runs before mips_clockevent_init() and the ordering
>>> is explicit, would not that work for what you are trying to do?
>>>
>>>> the actual problem is not the irq sharing but that the cevt-r4k registers
>>>> the irq when the cevt is registered and not when it is activated. i
>>>> believe
>>>> that the patch fixes this problem
>>>
>>> Your patch certainly does what you say it does, but that is kind of an
>>> abuse of the set_mode() callback.
>>
>> I might as add my $0.02...
>>
>> There are many other clockevent drivers that do this type of thing
>> aren't there?  The clockevent framework uses this to
>> install/remove/switch drivers, so why should cevt-r4k not be made to
>> work like this?
>
> Whatever works for you. I still would like to understand why plat_time_init()
> is not suitable for John's specific use case.

Hi Florian,

the reason is that fixing it in plat_time_init() works around the real 
problem. the double request of the irq is a symptom of the actual 
problem, which is, that the cevt-r4k sets up the timer during init and 
not during setup. additionally, plat_time_init is used to probe the cevt 
drivers from OF already. currently the mips code just assumes that on a 
r4k we always have and want to run the cevt-r4k. this assumption is 
wrong and can quickly be fixed by making the cevt-r4k use the correct api.

also fixing it this way allows the user to control the clocksource and 
change it at runtime via sysfs, a feature als not working currently on 
r4k as the cevt driver did not implement the set_mode() handler 
correctly. to be quite honest, i cannot think of a single way in which 
this can be fixed cleanly in the ralink plat_time_init() without using 
some weird heuristic. also if i fix this inside ralink plat_time_init() 
it is fixed only on ralink SoC and not on any other platform.

	John

  reply	other threads:[~2013-08-01  6:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-29  9:55 [PATCH] MIPS: add proper set_mode() to cevt-r4k John Crispin
2013-07-29 10:40 ` Florian Fainelli
2013-07-29 10:52   ` John Crispin
2013-07-29 11:14     ` Florian Fainelli
2013-07-29 11:14       ` John Crispin
2013-07-30 10:01         ` Florian Fainelli
2013-07-31 19:22       ` David Daney
2013-07-31 19:26         ` Florian Fainelli
2013-08-01  6:15           ` John Crispin [this message]
2013-08-01 14:13             ` Ralf Baechle
2013-08-01 14:16               ` John Crispin
2013-07-29 14:53   ` Maciej W. Rozycki

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=51F9FD16.4030706@phrozen.org \
    --to=john@phrozen.org \
    --cc=florian@openwrt.org \
    --cc=linux-mips@linux-mips.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox