at the moment, i'm trying to get a minimal u-boot running on an MPC8280-based target board (please, no jokes), and for the sake of expediency, i just used git to check out a version of u-boot just before it removed the definition of a target
board (MPC8260ads) that seems moderately close to what i'm after. so i checked
out git commit 373a9788f05dfab47e01badc046459dead163104, which is dated May of
2014 to see what I could do with that, and I found the following oddity(?).

  I actually selected the (8280-based) PQ2FADS board:

  $ make PQ2FADS_config

and started tweaking until i got to configuring Ethernet support on FCC. the
board definition file MPC8260ADS.h contains the following snippet for selecting
Ethernet on FCC:

#ifdef CONFIG_ETHER_ON_FCC

#define CONFIG_ETHER_INDEX 2 /* which SCC/FCC channel for ethernet */

#if   CONFIG_ETHER_INDEX == 1

# define CONFIG_SYS_PHY_ADDR            0
# define CONFIG_SYS_CMXFCR_VALUE1 (CMXFCR_RF1CS_CLK11 | CMXFCR_TF1CS_CLK10) # define CONFIG_SYS_CMXFCR_MASK1 (CMXFCR_FC1 | CMXFCR_RF1CS_MSK | CMXFCR_TF1CS_MSK)

#elif CONFIG_ETHER_INDEX == 2

#if CONFIG_ADSTYPE == CONFIG_SYS_8272ADS /* RxCLK is CLK15, TxCLK is CLK16 */
# define CONFIG_SYS_PHY_ADDR            3
# define CONFIG_SYS_CMXFCR_VALUE2 (CMXFCR_RF2CS_CLK15 | CMXFCR_TF2CS_CLK16)
#else                                   /* RxCLK is CLK13, TxCLK is CLK14 */
# define CONFIG_SYS_PHY_ADDR            0
# define CONFIG_SYS_CMXFCR_VALUE2 (CMXFCR_RF2CS_CLK13 | CMXFCR_TF2CS_CLK14)
#endif /* CONFIG_ADSTYPE == CONFIG_SYS_8272ADS */

# define CONFIG_SYS_CMXFCR_MASK2 (CMXFCR_FC2 | CMXFCR_RF2CS_MSK | CMXFCR_TF2CS_MSK)

#endif  /* CONFIG_ETHER_INDEX */

  fair enough ... the above clearly implies that Ethernet on FCC will be
defined by the values of the two variables:

  CONFIG_ETHER_ON_FCC
  CONFIG_ETHER_INDEX

but here's the puzzler -- this appears to be implemented by the source file
arch/powerpc/cpu/mpc8260/ether_fcc.c (it is in fact compiled), but that file
contains the snippet:

#if defined(CONFIG_ETHER_ON_FCC) && defined(CONFIG_CMD_NET)

static struct ether_fcc_info_s
{
        int ether_index;
        int proff_enet;
        ulong cpm_cr_enet_sblock;
        ulong cpm_cr_enet_page;
        ulong cmxfcr_mask;
        ulong cmxfcr_value;
}
        ether_fcc_info[] =
{
#ifdef CONFIG_ETHER_ON_FCC1
{
        0,
        PROFF_FCC1,
        CPM_CR_FCC1_SBLOCK,
        CPM_CR_FCC1_PAGE,
        CONFIG_SYS_CMXFCR_MASK1,
        CONFIG_SYS_CMXFCR_VALUE1
},
#endif

#ifdef CONFIG_ETHER_ON_FCC2
... snip ...

 note that the board header file sets CONFIG_ETHER_INDEX to identify the
channel, but that source file checks the variables CONFIG_ETHER_ON_FCC1,
CONFIG_ETHER_ON_FCC2 and so on, which are not set in the board definition
file.

  i took a look and, back then, some boards defined CONFIG_ETHER_ON_FCCn,
while others set CONFIG_ETHER_INDEX. it seems that doing it that second way
could not possibly have worked. i'm just writing this off to bit-rot in that
nobody really looked at those old boards for a long time. but am i right in
concluding that using CONFIG_ETHER_INDEX to select the FCC channel could not
possibly have worked? or am i missing something?

rday

p.s. to be more precise about the target board, a group of us are porting
linux to the Mitel 3300 AX Controller. so if you've been down that or a
similar road, i'd love to hear from you.


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to