[U-Boot] [PATCH 4/5] x86: Explicitly trigger pci bus configuration with driver model
Simon Glass
sjg at chromium.org
Wed Aug 5 16:40:07 CEST 2015
Hi Bin,
On 2 August 2015 at 19:54, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Simon,
>
> On Mon, Aug 3, 2015 at 6:31 AM, Simon Glass <sjg at chromium.org> wrote:
>> Hi Bin,
>>
>> On 27 July 2015 at 01:33, Bin Meng <bmeng.cn at gmail.com> wrote:
>>> With driver model, probing pci bus is all done on a lazy basis,
>>> as needed. On x86, pci bus is the fundamental device that needs
>>> to work before any other peripherals. In order to have a working
>>> pci before any other pci devices can be initialized, we need
>>> explicitly trigger the pci bus configuration.
>>>
>>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>>> ---
>>>
>>> common/board_r.c | 16 ++++++++++++++++
>>> 1 file changed, 16 insertions(+)
>>>
>>> diff --git a/common/board_r.c b/common/board_r.c
>>> index bf6c725..4263e47 100644
>>> --- a/common/board_r.c
>>> +++ b/common/board_r.c
>>> @@ -233,6 +233,22 @@ static int initr_pci(void)
>>> {
>>> #ifndef CONFIG_DM_PCI
>>> pci_init();
>>> +#else
>>> +#ifdef CONFIG_X86
>>> + /*
>>> + * With driver model, probing pci bus is all done on a lazy basis,
>>> + * as needed. On x86, pci bus is the fundamental device that needs
>>> + * to work before any other peripherals. In order to have a working
>>> + * pci before any other pci devices can be initialized, we need
>>> + * explicitly trigger the pci bus configuration.
>>> + */
>>> + struct udevice *dev;
>>> + int ret;
>>> +
>>> + ret = uclass_first_device(UCLASS_PCI, &dev);
>>> + if (ret)
>>> + return ret;
>>
>> Won't this happen anyway when you first access a PCI device?
>>
>
> Unfortunately no. The pci bus configuration will not be triggered when
> calling pci config read/write.
>
> [snip]
We should be able to use the dm_pci_config..() functions and by just
getting hold of the bus device it should probe the bus before doing
any config. Then it would be auto-triggered.
In general we should try to make use of automatic probing - it was
supposed to be a key feature of driver model.
Regards,
Simon
More information about the U-Boot
mailing list