On Fri, Oct 9, 2015 at 3:09 PM, Liviu Dudau <[email protected]> wrote:
> Juno R1 has an XpressRICH3 PCIe host bridge that needs to be initialised > in order for the Linux kernel to be able to enumerate the bus. Add > support code here that enables the host bridge, trains the links and > sets up the Address Translation Tables. > > Signed-off-by: Liviu Dudau <[email protected]> Very nice! Now we (soon) have PCIe on the Juno. Did you: - Test with compiling in e.g. network cards and booting off of ethernet on PCIe? - Test what happens with a simple VGA card on PCIe? Sometimes the VGA card BIOS need to be initialized using an emulator running the x86 ROM and I never got that working on anything ARM :( (Maybe PCIe doesn't suffer from this? Just vanilla PCI has this problem? What do I know.) > +#ifdef CONFIG_TARGET_VEXPRESS64_JUNO > +void xr3pci_set_atr_entry(unsigned long base, unsigned long src_addr, > + unsigned long trsl_addr, int window_size, > + int trsl_param) > +{ (...) > int board_init(void) > { > +#ifdef CONFIG_TARGET_VEXPRESS64_JUNO (...) > +#endif > return 0; > } > +++ b/board/armltd/vexpress64/vexpress64.h > @@ -0,0 +1,60 @@ > +#ifndef __VEXPRESS64_H__ > +#define __VEXPRESS64_H__ Instead of peppering with #ifdefs I suggest you do like this: - Create two new files named board/armltd/vexpress64/pcie.c board/armltd/vexpress64/pcie.h - Move all the #defines from the vexpress64.h file into the top of the pcie.c file. - Use the pcie.h file for prototypes + stubs like this: #ifdef CONFIG_TARGET_VEXPRESS64_JUNO void vexpress64_pcie_init(void); #else static inline void vexpress64_pcie_init(void) { } #endif Then board_init() can unconditionallt call these functions and they will be stubbed out if compiled for anything else than Juno. Yours, Linus Walleij _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

