[U-Boot] [PATCH v2 2/3] mpc83xx/pci: Register IMMR region

Simon Glass sjg at chromium.org
Fri May 4 21:37:57 UTC 2018


Hi Mario,

On 4 May 2018 at 02:15, Mario Six <mario.six at gdsys.cc> wrote:
> Hi Simon,
>
> On Thu, May 3, 2018 at 9:02 PM, Simon Glass <sjg at chromium.org> wrote:
>> Hi Mario,
>>
>> On 27 April 2018 at 06:53, Mario Six <mario.six at gdsys.cc> wrote:
>>> Register the IMMR region as a PCI region when PCI is used on MPC83xx.
>>>
>>> Signed-off-by: Mario Six <mario.six at gdsys.cc>
>>> ---
>>>
>>> v1 -> v2:
>>> No changes
>>>
>>> ---
>>>  drivers/pci/pci-uclass.c | 5 +++++
>>>  1 file changed, 5 insertions(+)
>>>
>>> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
>>> index a2e829608a..37ca09d76b 100644
>>> --- a/drivers/pci/pci-uclass.c
>>> +++ b/drivers/pci/pci-uclass.c
>>> @@ -902,6 +902,11 @@ static int decode_regions(struct pci_controller
*hose, ofnode parent_node,
>>>                         base, size, PCI_REGION_MEM |
PCI_REGION_SYS_MEMORY);
>>>  #endif
>>>
>>> +#if defined(MPC83xx) && defined(CONFIG_SYS_IMMR)
>>> +       pci_set_region(hose->regions + hose->region_count++,
>>> +                      CONFIG_SYS_IMMR, CONFIG_SYS_IMMR, 0x100000,
>>> +                      PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
>>> +#endif
>>
>> Please don't add device-specific code in this file. This could go in
>> the device tree, perhaps. If not, we perhaps need to do it in your PCI
>> driver?
>>
>
> OK, I'll try to put it into the DT (I have absolutely no expertise with
PCI, so
> I'm still learning with this one).

Here's a possible idea:

decode_regions() is called from the PCI uclass' pre_probe() method. This
means that by the time your PCI controller enters the probe() method, all
the regions should be set up. So you should be able to add the above code
into the probe() method of your PCI controller driver. Perhaps can check a
compatible string etc. to decide whether to add this region, if it is no
described in the DT itself.

Regards,
Simon


More information about the U-Boot mailing list