
Hi Igor,
On 20 March 2017 at 01:30, Igor Grinberg grinberg@compulab.co.il wrote:
Hi Simon,
On 03/19/17 20:59, Simon Glass wrote:
At present we have a lot of ad-hoc init functions related to boards, for example board_early_init_f(), board_misc_init_f() and dram_init().
There are used in different ways by different boards as useful hooks to do the required init and sequence it correctly. Some functions are always enabled but have a __weak default. Some are controlled by the existence of a CONFIG.
There are two main init sequences: board_init_f() (f for running from read-only flash) which runs before relocation and board_init_r() (r for relocated) which runs afterwards.
One problem with the current sequence is that it has a lot of arch-specific #ifdefs around various functions. There are also #ifdefs for various features. There has been quite a bit of discussion about how to tidy this up and at least one RFC series[1].
Now that we have driver model we can use this to deal with the init sequences. This approach has several advantages:
- We have a path to remove the #ifdefs
- It is easy for multiple parts of the code to implement the same hook
- We can track what is called and what is not
- We don't need weak functions
- We can eventually adjust the sequence to improve naming or to add new
init phases
- It provides a model for how we might deal with ft_board_setup() and
friends
I haven't got this one yet from the patchset. May be I need to look closer...
It is not included in this patch set. I just mean that we could do a similar scheme with those functions.
This series starts the process of replacing the pre-relocation init sequence with a driver-model solution. It defines a uclass, adds tests and converts sandbox and a few x86 boards over to use this new setup.
This series is not ready for use yet as the rest of the init sequence hooks need to be converted. But there is enough here to show the idea.
Comments welcome.
Overall, it sounds like a great idea!
I'll do another spin and see if I can tighten it up a little.
-- Regards, Igor.
Regards, Simon