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: Fri, 29 Apr 2011 14:10:46 +1200 [thread overview]
Message-ID: <4DBA1E26.7060109@bluewatersys.com> (raw)
In-Reply-To: <4DB9F719.2080708@bluewatersys.com>
On 04/29/2011 11:24 AM, Ryan Mallon wrote:
> On 04/29/2011 11:06 AM, Jean-Christophe PLAGNIOL-VILLARD wrote:
>> On 08:20 Fri 29 Apr , Ryan Mallon wrote:
>>> On 04/29/2011 02:10 AM, Jean-Christophe PLAGNIOL-VILLARD wrote:
>>>> On 16:04 Thu 28 Apr , Andrew Victor wrote:
>>>>> hi,
>>>>>
>>>>>>> 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
>>>>>>
>>>>>> 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
>>>>>
>>>>> The cpu_is() or__cpu_is() perform a at91_sys_read() of one of the DBGU
>>>>> registers.
>>>>>
>>>>> But the address of the DBGU differs between CPUs regardless if you map
>>>>> the system controller the same:
>>>>> at572d940hf.h:#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS)
>>>>> at91cap9.h:#define AT91_DBGU (0xffffee00 - AT91_BASE_SYS)
>>>>> at91rm9200.h:#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS)
>>>>> at91sam9260.h:#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS)
>>>>> at91sam9261.h:#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS)
>>>>> at91sam9263.h:#define AT91_DBGU (0xffffee00 - AT91_BASE_SYS)
>>>>> at91sam9g45.h:#define AT91_DBGU (0xffffee00 - AT91_BASE_SYS)
>>>>> at91sam9rl.h:#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS)
>>>>>
>>>>> So I don't see how you can "detect" the CPU without first knowing
>>>>> which CPU and therefore where the DBGU register is anyway.
>>>>> And probing different addresses for a value is not an acceptable solution.
>>>>>
>>>>>
>>>>> While having a single kernel image that supports AT91 processors is a
>>>>> good goal, the soc.h is a totally unnecessary complication.
>>>>> I can't think of any situation where an AT91 board.c file doesn't know
>>>>> what processor it has.
>>>>>
>>>>> So instead of :
>>>>> boardXYZ-init -> at91_initialize() --> magic-cpu-detection -->
>>>>> at91XX_initialize()
>>>>> just do:
>>>>> boardXYZ-init -> at91XX_initialize()
>>>> except there is no need to known it and board seach as the usb-926x are the
>>>> same nearly and do not need to known on which soc they are
>>>>
>>>> ditto for other boards you do not need to known the soc we are on.
>>>> And when you work on CPU module the board is the same but not the cpu on the
>>>> module so detect the SOC allow to have one kernel for all and not multiple
>>>> machine ID for each module and board combination
>>>
>>> I Agree with Andrew. When can determine everything we need from the
>>> mach-type. For boards such as the usb-926x we have two separate
>>> mach-types for the 9263 and the 9260 variants. The init_machine callback
>>> can be separated in this case so that both of the boards initialise the
>>> correct cpu type.
>> I do work on board where is the case and I do not want to keep the limitation
>> and yes I'll put them mainline
>>
>> And Russell will not accept I'll create 10 or 20 machine ID for board / cpu
>> module combinaison just because of different I do not detect the SOC type
>>
>> so I'll continue to detect the soc
>
> How? It has been pointed out that there is no way that this can be
> reliably done if you have all of the at91 socs built into a single
> kernel. You cannot know where the DBGU registers are to read determine
> the cpu/soc type.
>
> The most reliable way to do this, which also requires the least code, is
> to have the boards explicitly specify which cpu/soc type they are. In
> this case most of the cpu detection code can be removed. Only the minor
> variant (i.e. 9260/9G20) detection code would need to remain.
Having another look at this, the cpu detection is already fine. For
example, board-snapper9260.c calls at91sam9260_initialize, which in turn
determines whether the soc is a 9xe, 9260, or 9g20 and does the
appropriate intialisation. This all works fine because the three socs
have the same DBGU location.
There are other obstacles to having a single kernel for all of AT91, in
particular the big ifdef switch in include/mach/hardware.h and the whole
AT91_BASE_SYS thing, but the cpu/soc detection should not actually need
to be modified.
Lets fix the other problems first.
~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
next prev parent reply other threads:[~2011-04-29 2:10 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
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 [this message]
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=4DBA1E26.7060109@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).