[PATCH v2 07/39] dm: pci: Allow disabling auto-config for a device

Andy Shevchenko andy.shevchenko at gmail.com
Mon Mar 9 08:43:25 CET 2020


On Mon, Mar 9, 2020 at 5:46 AM Simon Glass <sjg at chromium.org> wrote:
>
> Add a means to avoid configuring a device when needed. Add an explanation
> of why this is useful to the binding file.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
> ---
>
> Changes in v2: None
>
>  doc/device-tree-bindings/pci/x86-pci.txt | 24 ++++++++++++++++++++++++
>  drivers/pci/pci-uclass.c                 |  2 ++
>  2 files changed, 26 insertions(+)
>
> diff --git a/doc/device-tree-bindings/pci/x86-pci.txt b/doc/device-tree-bindings/pci/x86-pci.txt
> index 3aa5bd9a46..62b29a4e36 100644
> --- a/doc/device-tree-bindings/pci/x86-pci.txt
> +++ b/doc/device-tree-bindings/pci/x86-pci.txt
> @@ -10,6 +10,17 @@ Optional properties:
>         configuration in TPL/SPL to reduce code size and boot time, since these
>         phases only know about a small subset of PCI devices.
>
> +For PCI devices the following optional property is available:
> +
> +- pci,no-autoconfig : Don't automatically configure this PCI device at all.
> +       This is used when the device is statically configured and must maintain
> +       this same config throughout the boot process. An example is a serial
> +       UART being used to debug PCI configuration, since reconfiguring it stops
> +       the UART from working until the driver is re-probed, and this can cause
> +       output to be lost. This should not generally be used in production code,
> +       although it is often harmless.
> +
> +
>  Example:
>
>  pci {
> @@ -21,4 +32,17 @@ pci {
>                 0x42000000 0x0 0xb0000000 0xb0000000 0 0x10000000
>                 0x01000000 0x0 0x1000 0x1000 0 0xefff>;
>         u-boot,skip-auto-config-until-reloc;
> +
> +
> +       serial: serial at 18,2 {
> +               reg = <0x0200c210 0 0 0 0>;
> +               u-boot,dm-pre-reloc;
> +               compatible = "intel,apl-ns16550";
> +               early-regs = <0xde000000 0x20>;
> +               reg-shift = <2>;
> +               clock-frequency = <1843200>;
> +               current-speed = <115200>;


> +               acpi,name = "URT3";

Is this somehow being handled by the code at this point?
If no, please move to the patch that actually adds this functionality.

> +               pci,no-autoconfig;
> +       };
>  };
> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
> index 94733662b1..213381da6b 100644
> --- a/drivers/pci/pci-uclass.c
> +++ b/drivers/pci/pci-uclass.c
> @@ -536,6 +536,8 @@ int pci_auto_config_devices(struct udevice *bus)
>                 int ret;
>
>                 debug("%s: device %s\n", __func__, dev->name);
> +               if (dev_read_bool(dev, "pci,no-autoconfig"))
> +                       continue;
>                 ret = dm_pciauto_config_device(dev);
>                 if (ret < 0)
>                         return ret;
> --
> 2.25.1.481.gfbce0eb801-goog
>


-- 
With Best Regards,
Andy Shevchenko


More information about the U-Boot mailing list