[U-Boot] [PATCH 1/5] mpc83xx/pcie: make it compile with PCIE2 unconfigured

Kim Phillips kim.phillips at freescale.com
Fri Sep 17 01:54:53 CEST 2010


On Tue, 14 Sep 2010 22:40:37 +0200
Ilya Yanok <yanok at emcraft.com> wrote:

> MPC8308 has only one PCIE host controller so we want it to compile
> without CONFIG_SYS_PCIE2_CFG_{BASE,SIZE} defined.

> +#if defined(CONFIG_SYS_PCIE2_CFG_BASE) && defined(CONFIG_SYS_PCIE2_SIZE)
>  #define PCIE_MAX_BUSES 2
> +#else
> +#define PCIE_MAX_BUSES 1
> +#endif

Technically this should be an indirect function of MPC8308, but what's
the problem with leaving MAX_BUSES as 2 always?

> +	unsigned int *cfg_addr;
> +
> +	if (bus == 0) {
> +		cfg_addr = (unsigned int *)CONFIG_SYS_PCIE1_CFG_BASE;
> +	} else {
> +#if defined(CONFIG_SYS_PCIE2_CFG_BASE) && defined(CONFIG_SYS_PCIE2_SIZE)
> +		cfg_addr = (unsigned int *)CONFIG_SYS_PCIE2_CFG_BASE;
> +#else
> +		printf("Second PCIE host controller not configured!\n");
> +		return;
> +#endif

let's reduce the new ifdefs introduced in the file down to one, and
still be able remove the 'if (bus)' clauses by adding a static pcie cfg
struct array[], to which this and code below it would directly
dereference with array[bus].  The single ifdef should protect the
second entry in the array.  The "second PCIE host controller not
configured" check can be made by comparing num_buses with ARRAY_SIZE
(array) in mpc83xx_pcie_init prior to calling mpc83xx_pcie_init_bus
with an illegal bus value.

Kim



More information about the U-Boot mailing list