Message ID | 1448828291-12660-11-git-send-email-sjg@chromium.org |
---|---|
State | Accepted |
Commit | 9bf727fcc4743d06ba665f104e951b47f5029d56 |
Delegated to: | Simon Glass |
Headers | show |
On Mon, Nov 30, 2015 at 4:17 AM, Simon Glass <sjg@chromium.org> wrote: > Use the driver-model PCI functions here where possible. For now we have to > search for the device with pci_bus_find_bdf() but at some point we can put > this in a proper driver and avoid this. > > Signed-off-by: Simon Glass <sjg@chromium.org> > --- > > Changes in v2: > - Use pci_bus_find_bdf() > > arch/x86/cpu/ivybridge/bd82x6x.c | 6 ++++-- > arch/x86/cpu/ivybridge/gma.c | 15 +++++++-------- > arch/x86/include/asm/arch-ivybridge/bd82x6x.h | 3 +-- > 3 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/arch/x86/cpu/ivybridge/bd82x6x.c b/arch/x86/cpu/ivybridge/bd82x6x.c > index 3e7a907..434dfd6 100644 > --- a/arch/x86/cpu/ivybridge/bd82x6x.c > +++ b/arch/x86/cpu/ivybridge/bd82x6x.c > @@ -86,8 +86,10 @@ static int bd82x6x_probe(struct udevice *dev) > debug("%s: Cannot find GMA node\n", __func__); > return -EINVAL; > } > - ret = gma_func0_init(PCH_VIDEO_DEV, pci_bus_to_hose(0), blob, > - gma_node); > + ret = dm_pci_bus_find_bdf(PCH_VIDEO_DEV, &dev); > + if (ret) > + return ret; > + ret = gma_func0_init(dev, blob, gma_node); > if (ret) > return ret; > > diff --git a/arch/x86/cpu/ivybridge/gma.c b/arch/x86/cpu/ivybridge/gma.c > index 89d4a5e..695578b 100644 > --- a/arch/x86/cpu/ivybridge/gma.c > +++ b/arch/x86/cpu/ivybridge/gma.c > @@ -728,8 +728,7 @@ static int int15_handler(void) > return res; > } > > -int gma_func0_init(pci_dev_t dev, struct pci_controller *hose, > - const void *blob, int node) > +int gma_func0_init(struct udevice *dev, const void *blob, int node) > { > #ifdef CONFIG_VIDEO > ulong start; > @@ -740,16 +739,16 @@ int gma_func0_init(pci_dev_t dev, struct pci_controller *hose, > int ret; > > /* IGD needs to be Bus Master */ > - reg32 = x86_pci_read_config32(dev, PCI_COMMAND); > + dm_pci_read_config32(dev, PCI_COMMAND, ®32); > reg32 |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY | PCI_COMMAND_IO; > - x86_pci_write_config32(dev, PCI_COMMAND, reg32); > + dm_pci_write_config32(dev, PCI_COMMAND, reg32); > > /* Use write-combining for the graphics memory, 256MB */ > - base = pci_read_bar32(hose, dev, 2); > + base = dm_pci_read_bar32(dev, 2); > mtrr_add_request(MTRR_TYPE_WRCOMB, base, 256 << 20); > mtrr_commit(true); > > - gtt_bar = (void *)pci_read_bar32(pci_bus_to_hose(0), dev, 0); > + gtt_bar = (void *)dm_pci_read_bar32(dev, 0); > debug("GT bar %p\n", gtt_bar); > ret = gma_pm_init_pre_vbios(gtt_bar); > if (ret) > @@ -757,8 +756,8 @@ int gma_func0_init(pci_dev_t dev, struct pci_controller *hose, > > #ifdef CONFIG_VIDEO > start = get_timer(0); > - ret = pci_run_vga_bios(dev, int15_handler, PCI_ROM_USE_NATIVE | > - PCI_ROM_ALLOW_FALLBACK); > + ret = pci_run_vga_bios(dm_pci_get_bdf(dev), int15_handler, > + PCI_ROM_USE_NATIVE | PCI_ROM_ALLOW_FALLBACK); > debug("BIOS ran in %lums\n", get_timer(start)); > #endif > /* Post VBIOS init */ > diff --git a/arch/x86/include/asm/arch-ivybridge/bd82x6x.h b/arch/x86/include/asm/arch-ivybridge/bd82x6x.h > index 7786493..fcdf6e2 100644 > --- a/arch/x86/include/asm/arch-ivybridge/bd82x6x.h > +++ b/arch/x86/include/asm/arch-ivybridge/bd82x6x.h > @@ -12,8 +12,7 @@ void bd82x6x_sata_enable(pci_dev_t dev, const void *blob, int node); > void bd82x6x_pci_init(pci_dev_t dev); > void bd82x6x_usb_ehci_init(pci_dev_t dev); > void bd82x6x_usb_xhci_init(pci_dev_t dev); > -int gma_func0_init(pci_dev_t dev, struct pci_controller *hose, > - const void *blob, int node); > +int gma_func0_init(struct udevice *dev, const void *blob, int node); > int bd82x6x_init(void); > > /** > -- Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Applied to u-boot-dm/next.
diff --git a/arch/x86/cpu/ivybridge/bd82x6x.c b/arch/x86/cpu/ivybridge/bd82x6x.c index 3e7a907..434dfd6 100644 --- a/arch/x86/cpu/ivybridge/bd82x6x.c +++ b/arch/x86/cpu/ivybridge/bd82x6x.c @@ -86,8 +86,10 @@ static int bd82x6x_probe(struct udevice *dev) debug("%s: Cannot find GMA node\n", __func__); return -EINVAL; } - ret = gma_func0_init(PCH_VIDEO_DEV, pci_bus_to_hose(0), blob, - gma_node); + ret = dm_pci_bus_find_bdf(PCH_VIDEO_DEV, &dev); + if (ret) + return ret; + ret = gma_func0_init(dev, blob, gma_node); if (ret) return ret; diff --git a/arch/x86/cpu/ivybridge/gma.c b/arch/x86/cpu/ivybridge/gma.c index 89d4a5e..695578b 100644 --- a/arch/x86/cpu/ivybridge/gma.c +++ b/arch/x86/cpu/ivybridge/gma.c @@ -728,8 +728,7 @@ static int int15_handler(void) return res; } -int gma_func0_init(pci_dev_t dev, struct pci_controller *hose, - const void *blob, int node) +int gma_func0_init(struct udevice *dev, const void *blob, int node) { #ifdef CONFIG_VIDEO ulong start; @@ -740,16 +739,16 @@ int gma_func0_init(pci_dev_t dev, struct pci_controller *hose, int ret; /* IGD needs to be Bus Master */ - reg32 = x86_pci_read_config32(dev, PCI_COMMAND); + dm_pci_read_config32(dev, PCI_COMMAND, ®32); reg32 |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY | PCI_COMMAND_IO; - x86_pci_write_config32(dev, PCI_COMMAND, reg32); + dm_pci_write_config32(dev, PCI_COMMAND, reg32); /* Use write-combining for the graphics memory, 256MB */ - base = pci_read_bar32(hose, dev, 2); + base = dm_pci_read_bar32(dev, 2); mtrr_add_request(MTRR_TYPE_WRCOMB, base, 256 << 20); mtrr_commit(true); - gtt_bar = (void *)pci_read_bar32(pci_bus_to_hose(0), dev, 0); + gtt_bar = (void *)dm_pci_read_bar32(dev, 0); debug("GT bar %p\n", gtt_bar); ret = gma_pm_init_pre_vbios(gtt_bar); if (ret) @@ -757,8 +756,8 @@ int gma_func0_init(pci_dev_t dev, struct pci_controller *hose, #ifdef CONFIG_VIDEO start = get_timer(0); - ret = pci_run_vga_bios(dev, int15_handler, PCI_ROM_USE_NATIVE | - PCI_ROM_ALLOW_FALLBACK); + ret = pci_run_vga_bios(dm_pci_get_bdf(dev), int15_handler, + PCI_ROM_USE_NATIVE | PCI_ROM_ALLOW_FALLBACK); debug("BIOS ran in %lums\n", get_timer(start)); #endif /* Post VBIOS init */ diff --git a/arch/x86/include/asm/arch-ivybridge/bd82x6x.h b/arch/x86/include/asm/arch-ivybridge/bd82x6x.h index 7786493..fcdf6e2 100644 --- a/arch/x86/include/asm/arch-ivybridge/bd82x6x.h +++ b/arch/x86/include/asm/arch-ivybridge/bd82x6x.h @@ -12,8 +12,7 @@ void bd82x6x_sata_enable(pci_dev_t dev, const void *blob, int node); void bd82x6x_pci_init(pci_dev_t dev); void bd82x6x_usb_ehci_init(pci_dev_t dev); void bd82x6x_usb_xhci_init(pci_dev_t dev); -int gma_func0_init(pci_dev_t dev, struct pci_controller *hose, - const void *blob, int node); +int gma_func0_init(struct udevice *dev, const void *blob, int node); int bd82x6x_init(void); /**
Use the driver-model PCI functions here where possible. For now we have to search for the device with pci_bus_find_bdf() but at some point we can put this in a proper driver and avoid this. Signed-off-by: Simon Glass <sjg@chromium.org> --- Changes in v2: - Use pci_bus_find_bdf() arch/x86/cpu/ivybridge/bd82x6x.c | 6 ++++-- arch/x86/cpu/ivybridge/gma.c | 15 +++++++-------- arch/x86/include/asm/arch-ivybridge/bd82x6x.h | 3 +-- 3 files changed, 12 insertions(+), 12 deletions(-)