1d188b18fSSimon Glass /* 2d188b18fSSimon Glass * Copyright (c) 2011 The Chromium OS Authors. 3d188b18fSSimon Glass * (C) Copyright 2008,2009 4d188b18fSSimon Glass * Graeme Russ, <graeme.russ@gmail.com> 5d188b18fSSimon Glass * 6d188b18fSSimon Glass * (C) Copyright 2002 7d188b18fSSimon Glass * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se> 8d188b18fSSimon Glass * 9d188b18fSSimon Glass * SPDX-License-Identifier: GPL-2.0+ 10d188b18fSSimon Glass */ 11d188b18fSSimon Glass 12d188b18fSSimon Glass #include <common.h> 13*7430f108SSimon Glass #include <errno.h> 14*7430f108SSimon Glass #include <malloc.h> 15d188b18fSSimon Glass #include <pci.h> 16d188b18fSSimon Glass #include <asm/pci.h> 17d188b18fSSimon Glass 18d188b18fSSimon Glass static struct pci_controller x86_hose; 19d188b18fSSimon Glass 20*7430f108SSimon Glass int pci_early_init_hose(struct pci_controller **hosep) 21*7430f108SSimon Glass { 22*7430f108SSimon Glass struct pci_controller *hose; 23*7430f108SSimon Glass 24*7430f108SSimon Glass hose = calloc(1, sizeof(struct pci_controller)); 25*7430f108SSimon Glass if (!hose) 26*7430f108SSimon Glass return -ENOMEM; 27*7430f108SSimon Glass 28*7430f108SSimon Glass board_pci_setup_hose(hose); 29*7430f108SSimon Glass pci_setup_type1(hose); 30*7430f108SSimon Glass gd->arch.hose = hose; 31*7430f108SSimon Glass *hosep = hose; 32*7430f108SSimon Glass 33*7430f108SSimon Glass return 0; 34*7430f108SSimon Glass } 35*7430f108SSimon Glass 36d188b18fSSimon Glass void pci_init_board(void) 37d188b18fSSimon Glass { 38d188b18fSSimon Glass struct pci_controller *hose = &x86_hose; 39d188b18fSSimon Glass 40*7430f108SSimon Glass /* Stop using the early hose */ 41*7430f108SSimon Glass gd->arch.hose = NULL; 42*7430f108SSimon Glass 43d188b18fSSimon Glass board_pci_setup_hose(hose); 44d188b18fSSimon Glass pci_setup_type1(hose); 45d188b18fSSimon Glass pci_register_hose(hose); 46d188b18fSSimon Glass 47d188b18fSSimon Glass hose->last_busno = pci_hose_scan(hose); 48d188b18fSSimon Glass } 49