linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: ryan@bluewatersys.com (Ryan Mallon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 05/14] at91: use structure to store the current soc
Date: Tue, 26 Apr 2011 16:44:51 +1200	[thread overview]
Message-ID: <4DB64DC3.70609@bluewatersys.com> (raw)
In-Reply-To: <20110426042131.GD12904@game.jcrosoft.org>

On 04/26/2011 04:21 PM, Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 10:08 Tue 26 Apr     , Ryan Mallon wrote:
>> On 04/26/2011 06:31 AM, Jean-Christophe PLAGNIOL-VILLARD wrote:
>>> instead of reading the registers everytime
>>
>> Hi Jean, a couple of comments below.
>>
>>> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
>>> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
>>> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
>>> ---
>>>  arch/arm/mach-at91/at91rm9200.c       |    8 -
>>>  arch/arm/mach-at91/at91sam9260.c      |    1 +
>>>  arch/arm/mach-at91/at91sam9rl.c       |    1 +
>>>  arch/arm/mach-at91/cpu.h              |  181 +++++++++++++++++
>>>  arch/arm/mach-at91/include/mach/cpu.h |  355 ++++++++++++++-------------------
>>>  arch/arm/mach-at91/soc.c              |   66 +++++-
>>>  6 files changed, 391 insertions(+), 221 deletions(-)
>>>  create mode 100644 arch/arm/mach-at91/cpu.h
>>>  rewrite arch/arm/mach-at91/include/mach/cpu.h (71%)
>>>
>>> diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c
>>> index abc4cc9..afb29b9 100644
>>> --- a/arch/arm/mach-at91/at91rm9200.c
>>> +++ b/arch/arm/mach-at91/at91rm9200.c
>>> @@ -263,14 +263,6 @@ static void at91rm9200_reset(void)
>>>  	at91_sys_write(AT91_ST_CR, AT91_ST_WDRST);
>>>  }
>>>  
>>> -int rm9200_type;
>>> -EXPORT_SYMBOL(rm9200_type);
>>> -
>>> -void __init at91rm9200_set_type(int type)
>>> -{
>>> -	rm9200_type = type;
>>> -}
>>> -
>>
>> This only got introduce a couple of patches ago. I'm aware its a
>> stop-gap solution, but is it possible to rework/reorder the patches so
>> that this doesn't need to be temporarily introduced?
> the is to do not touch the other soc init api so I keep the changes local
> and prepare the soc to have the same init API so we can factorize them
> 
> I prefer to do small changes to be able to bisect them if needed
>>
>> <snip>
>>
>>> +
>>> +#ifdef CONFIG_ARCH_AT91RM9200
>>> +#define __cpu_is_at91rm9200()	(at91_cpu_identify() == ARCH_ID_AT91RM9200)
>>> +#else
>>> +#define __cpu_is_at91rm9200()	(0)
>>> +#endif
>>
>> I haven't looked at the subsequent patches yet to see if this patch
>> simplifies things later but it seems that this just adds more lines of
>> code by having two copies of the each of the cpu_is_xxx macros (the
>> __cpu_is_xxx version which reads the register, and the cpu_is_xxx
>> version which reads the shadow value)?
>>
>> What is the reasoning behind shadowing the cpu type rather than reading
>> the registers? The cpu detection macros are mostly used at
>> initialisation and device probe time, so they don't necessarily need to
>> be fast.
>>
>> If this eventually reduces code size then I think it is useful, but
>> otherwise I'm not sure I see the point?
> It's on purpose as the dbgu physical address is not at the same place
> so read the other register really does not impact the chip but if we do it
> later duting the boot or the life to the kernel it's an other story
>
> so the split between __cpu_is and cpu_is is necessarly

I don't understand. The at91_initialize function sets cpu_id using the
__cpu_is macros, and the cpu_is macros check cpu_id to determine the cpu
type. So the __cpu_is and cpu_is macros are functionally equivalent
except that the former uses register reads and the latter reads a shadow
value. i.e. the cpu_is macros are just indirectly using the __cpu_is macros.

If the register offsets are different between the various platforms then
this won't work anyway since the __cpu_is macros cannot be generic.

> all of this work is in preparation to allow multiple soc in the same kernel
> that's also why I map the system controller the same way on all at91 arm9

If the __cpu_is macros, which read the registers directly, remain then I
don't see how this can be generic between the various SoCs?

~Ryan

-- 
Bluewater Systems Ltd - ARM Technology Solution Centre

Ryan Mallon         		5 Amuri Park, 404 Barbadoes St
ryan at bluewatersys.com         	PO Box 13 889, Christchurch 8013
http://www.bluewatersys.com	New Zealand
Phone: +64 3 3779127		Freecall: Australia 1800 148 751
Fax:   +64 3 3779135			  USA 1800 261 2934

  reply	other threads:[~2011-04-26  4:44 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-25 18:08 [PATCH 0/14] at91: factorize soc init and switch to early platform Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 01/14] at91rm9200: introduce at91rm9200_set_type to specficy cpu package Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 02/14] at91: introduce commom AT91_BASE_SYS Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 21:48   ` Ryan Mallon
2011-04-26  4:27     ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 03/14] at91: factorize at91 interrupts init to soc Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 21:52   ` Ryan Mallon
2011-04-25 22:11   ` H Hartley Sweeten
2011-04-26 17:29     ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-26 22:04       ` Andrew Victor
2011-04-26 23:39         ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-28 11:43   ` Russell King - ARM Linux
2011-04-25 18:31 ` [PATCH 04/14 v2] at91: merge board usb-a9260 and usb-a9263 together Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 05/14] at91: use structure to store the current soc Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 22:08   ` Ryan Mallon
2011-04-26  4:21     ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-26  4:44       ` Ryan Mallon [this message]
2011-04-26  6:42         ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-26 20:22           ` Ryan Mallon
2011-04-26 23:45             ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-27  0:13               ` Ryan Mallon
2011-04-27  1:27                 ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-27  1:47                   ` Ryan Mallon
2011-04-27  3:18                     ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-27  3:41                       ` Ryan Mallon
2011-04-28 14:04       ` Andrew Victor
2011-04-28 14:10         ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-28 20:20           ` Ryan Mallon
2011-04-28 23:06             ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-28 23:24               ` Ryan Mallon
2011-04-29  2:10                 ` Ryan Mallon
2011-04-29  8:32                   ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-29  8:35                 ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-29  8:50                   ` Ryan Mallon
2011-05-02 15:38         ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-02 20:25           ` Ryan Mallon
2011-05-02 20:24             ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-02 20:38               ` Ryan Mallon
2011-05-02 20:51                 ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-02 21:27                   ` Ryan Mallon
2011-05-02 21:29                     ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-02 22:05                       ` Ryan Mallon
2011-05-02 22:06                         ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-02 22:32                           ` Ryan Mallon
2011-05-02 22:41                             ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-02 23:16                     ` Russell King - ARM Linux
2011-05-02 23:16                       ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 06/14 v3] at91: switch to CLKDEV_LOOKUP Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 07/14] at91: switch gpio to early platfrom device Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 22:51   ` Ryan Mallon
2011-04-26  4:11     ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 08/14] at91: move gpio to drivers/gpio Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 09/14] at91: switch pit timer to early platform devices Jean-Christophe PLAGNIOL-VILLARD
2011-04-28  5:07   ` Ryan Mallon
2011-04-28 11:23   ` Andrew Victor
2011-04-28 11:34     ` Russell King - ARM Linux
2011-04-28 13:15       ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-28 16:56         ` Andrew Victor
2011-04-28 17:33           ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-28 18:15           ` Russell King - ARM Linux
2011-04-28 20:47             ` Andrew Victor
2011-04-28 21:46               ` Russell King - ARM Linux
2011-04-28 23:38                 ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-29  9:28                   ` Russell King - ARM Linux
2011-04-30  1:36                     ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-08 10:08                       ` Russell King - ARM Linux
2011-05-08 10:44                         ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-29  7:55               ` Greg Ungerer
2011-04-29  6:08       ` Tony Lindgren
2011-04-29  8:31         ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:31 ` [PATCH 10/14] at91: switch st " Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 18:40 ` [PATCH 11/14] at91: move pit timer to drivers/clocksource Jean-Christophe PLAGNIOL-VILLARD
2011-04-25 19:14 ` [PATCH 12/14] at91: move st " Jean-Christophe PLAGNIOL-VILLARD
2011-04-26  1:11 ` [PATCH 13/14] at91: move register clocks to soc generic init Jean-Christophe PLAGNIOL-VILLARD
2011-04-26  3:13   ` Ryan Mallon
2011-04-26  1:11 ` [PATCH 14/14] at91: move clock subsystem init " Jean-Christophe PLAGNIOL-VILLARD
2011-04-26  3:13   ` Ryan Mallon
2011-04-26  4:13     ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-26  4:32       ` Ryan Mallon
2011-04-26  4:32         ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-27 21:13 ` [PATCH 0/14] at91: factorize soc init and switch to early platform Ryan Mallon
2011-04-28  2:26   ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-28  2:41   ` Jean-Christophe PLAGNIOL-VILLARD
2011-04-28  3:59     ` Ryan Mallon
2011-04-28  4:14       ` Jean-Christophe PLAGNIOL-VILLARD

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=4DB64DC3.70609@bluewatersys.com \
    --to=ryan@bluewatersys.com \
    --cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).