[U-Boot] [PATCH v2 5/7] x86: pci: Tidy up the generic x86 PCI driver
Bin Meng
bmeng.cn at gmail.com
Mon Jun 29 11:21:23 CEST 2015
Hi Simon,
On Fri, Jun 26, 2015 at 1:55 AM, Simon Glass <sjg at chromium.org> wrote:
> This driver should use the x86 PCI configuration functions. Also adjust its
> compatible string to something generic (i.e. without a vendor name).
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> Changes in v2:
> - Rename the ops and ids arrays for consistency
> - Drop the coreboot PCI driver which is no-longer needed
>
> arch/x86/cpu/coreboot/pci.c | 21 ---------------------
> drivers/pci/pci_x86.c | 13 ++++++++-----
> 2 files changed, 8 insertions(+), 26 deletions(-)
>
> diff --git a/arch/x86/cpu/coreboot/pci.c b/arch/x86/cpu/coreboot/pci.c
> index 67eb14c..af9f391 100644
> --- a/arch/x86/cpu/coreboot/pci.c
> +++ b/arch/x86/cpu/coreboot/pci.c
> @@ -11,30 +11,9 @@
>
> #include <common.h>
> #include <dm.h>
> -#include <errno.h>
> #include <pci.h>
> -#include <asm/io.h>
> #include <asm/pci.h>
Should <pci.h> and <asm/pci.h> be removed too?
>
> -DECLARE_GLOBAL_DATA_PTR;
> -
> -static const struct dm_pci_ops pci_x86_ops = {
> - .read_config = pci_x86_read_config,
> - .write_config = pci_x86_write_config,
> -};
> -
> -static const struct udevice_id pci_x86_ids[] = {
> - { .compatible = "pci-x86" },
> - { }
> -};
> -
> -U_BOOT_DRIVER(pci_x86_drv) = {
> - .name = "pci_x86",
> - .id = UCLASS_PCI,
> - .of_match = pci_x86_ids,
> - .ops = &pci_x86_ops,
> -};
> -
> static const struct udevice_id generic_pch_ids[] = {
> { .compatible = "intel,pch" },
> { }
What's this? Is this required by some board?
> diff --git a/drivers/pci/pci_x86.c b/drivers/pci/pci_x86.c
> index 901bdca..89e8c11 100644
> --- a/drivers/pci/pci_x86.c
> +++ b/drivers/pci/pci_x86.c
> @@ -7,18 +7,21 @@
> #include <common.h>
> #include <dm.h>
> #include <pci.h>
> +#include <asm/pci.h>
>
> -static const struct dm_pci_ops x86_pci_ops = {
> +static const struct dm_pci_ops pci_x86_ops = {
> + .read_config = pci_x86_read_config,
> + .write_config = pci_x86_write_config,
> };
As I mentioned in previous discussion, I still think it's better to
move the implementation of pci_x86_read_config() and
pci_x86_write_config() from arch/x86/cpu/pci.c to this file
(drivers/pci/pci_x86.c). I don't think calling
arch/x86/cpu/ivybridge/pci.c would be a problem. The
arch/x86/cpu/pci.c provides generic x86 pci config access methods
which can be utilized by some variants of x86 pci controller (like
ivybridge). And I also looked the arch/x86/cpu/ivybridge/pci.c driver
and just wonder why should we create that ivybridge-specific driver?
Can we move pci_ivybridge_probe() from that file to
arch/x86/cpu/ivybridge/bd82x6x.c? This way, we no longer need the
ivybridge-specific pci driver as x86 pci controller should be generic
enough.
>
> -static const struct udevice_id x86_pci_ids[] = {
> - { .compatible = "x86,pci" },
> +static const struct udevice_id pci_x86_ids[] = {
> + { .compatible = "pci-x86" },
> { }
> };
>
> U_BOOT_DRIVER(pci_x86) = {
> .name = "pci_x86",
> .id = UCLASS_PCI,
> - .of_match = x86_pci_ids,
> - .ops = &x86_pci_ops,
> + .of_match = pci_x86_ids,
> + .ops = &pci_x86_ops,
> };
> --
Regards,
Bin
More information about the U-Boot
mailing list