[U-Boot] [PATCH 30/57] x86: ivybridge: Move northbridge setup to the northbridge driver
Bin Meng
bmeng.cn at gmail.com
Sun Dec 13 13:54:47 CET 2015
Hi Simon,
On Tue, Dec 8, 2015 at 11:38 AM, Simon Glass <sjg at chromium.org> wrote:
> This init can be done in the northbridge's probe() method. Move it.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> arch/x86/cpu/ivybridge/northbridge.c | 17 +++++++++++++++++
> arch/x86/cpu/ivybridge/pci.c | 20 --------------------
> 2 files changed, 17 insertions(+), 20 deletions(-)
>
> diff --git a/arch/x86/cpu/ivybridge/northbridge.c b/arch/x86/cpu/ivybridge/northbridge.c
> index e03e472..ee09103 100644
> --- a/arch/x86/cpu/ivybridge/northbridge.c
> +++ b/arch/x86/cpu/ivybridge/northbridge.c
> @@ -14,6 +14,7 @@
> #include <asm/cpu.h>
> #include <asm/io.h>
> #include <asm/pci.h>
> +#include <asm/post.h>
> #include <asm/processor.h>
> #include <asm/arch/pch.h>
> #include <asm/arch/model_206ax.h>
> @@ -283,9 +284,25 @@ static int bd82x6x_northbridge_early_init(struct udevice *dev)
>
> static int bd82x6x_northbridge_probe(struct udevice *dev)
> {
> + u16 reg16;
> +
> if (!(gd->flags & GD_FLG_RELOC))
> return bd82x6x_northbridge_early_init(dev);
>
> + reg16 = 0xff;
> + dm_pci_read_config16(dev, PCI_COMMAND, ®16);
> + reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
> + dm_pci_write_config16(dev, PCI_COMMAND, reg16);
> +
I don't think the programming of PCI_COMMAND is needed as it was
already done during enumeration.
> + /*
> + * Clear non-reserved bits in status register.
> + */
> + dm_pci_write_config16(dev, PCI_STATUS, 0xffff);
> + dm_pci_write_config8(dev, PCI_LATENCY_TIMER, 0x80);
> + dm_pci_write_config8(dev, PCI_CACHE_LINE_SIZE, 0x08);
Ditto
> + dm_pci_write_bar32(dev, 0, 0xf0000000);
What is this? Why hardcoded BAR0 to 0xf0000000? Isn't it already
assigned to a value during enumeration?
> + post_code(0x52);
> +
> bd82x6x_pci_init(dev);
> northbridge_enable(dev);
> northbridge_init(dev);
> diff --git a/arch/x86/cpu/ivybridge/pci.c b/arch/x86/cpu/ivybridge/pci.c
> index 8af99b4..b081469 100644
> --- a/arch/x86/cpu/ivybridge/pci.c
> +++ b/arch/x86/cpu/ivybridge/pci.c
> @@ -19,32 +19,12 @@
>
> static int pci_ivybridge_probe(struct udevice *bus)
> {
> - struct pci_controller *hose = dev_get_uclass_priv(bus);
> - pci_dev_t dev;
> - u16 reg16;
> -
> if (!(gd->flags & GD_FLG_RELOC))
> return 0;
> post_code(0x50);
> bd82x6x_init_extra();
> post_code(0x51);
>
> - reg16 = 0xff;
> - dev = PCH_DEV;
> - reg16 = x86_pci_read_config16(dev, PCI_COMMAND);
> - reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
> - x86_pci_write_config16(dev, PCI_COMMAND, reg16);
> -
> - /*
> - * Clear non-reserved bits in status register.
> - */
> - pci_hose_write_config_word(hose, dev, PCI_STATUS, 0xffff);
> - pci_hose_write_config_byte(hose, dev, PCI_LATENCY_TIMER, 0x80);
> - pci_hose_write_config_byte(hose, dev, PCI_CACHE_LINE_SIZE, 0x08);
> -
> - pci_write_bar32(hose, dev, 0, 0xf0000000);
> - post_code(0x52);
> -
> return 0;
> }
>
Regards,
Bin
More information about the U-Boot
mailing list