Re: [RFC][PATCH 01/10] bcma: Use array to store cores.
From: Arend van Spriel <hidden>
Date: 2011-06-07 10:12:58
Also in:
linux-mips
On 06/06/2011 11:53 PM, Arnd Bergmann wrote:
On Monday 06 June 2011 23:38:50 Hauke Mehrtens wrote:quoted
Accessing chip common should be possible without scanning the hole bus as it is at the first position and initializing most things just needs chip common. For initializing the interrupts scanning is needed as we do not know where the mips core is located. As we can not use kalloc on early boot we could use a function which uses kalloc under normal conditions and when on early boot the architecture code which starts the bcma code should also provide a function which returns a pointer to some memory in its text segment to use. We need space for 16 cores in the architecture code. In addition bcma_bus_register(struct bcma_bus *bus) has to be divided into two parts. The first part will scan the bus and initialize chip common and mips core. The second part will initialize pci core and register the devices in the system. When using this under normal conditions they will be called directly after each other.Just split out the minimal low-level function from the bcma_bus_scan then, to locate a single device based on some identifier. The bcma_bus_scan() function can then repeatedly allocate one device and pass it to the low-level function when doing the proper scan, while the arch code calls the low-level function directly with static data.
If going for this we should pass struct bcma_device_id as match parameter as that identifies the core appropriately although you probably only want to match manufacturer and core identifiers. Gr. AvS -- Almost nobody dances sober, unless they happen to be insane. -- H.P. Lovecraft --