Hi Kim, 2014-11-07 1:18 GMT+01:00 Kim Phillips <kim.phill...@freescale.com>: > ... > sorry for the delay, I bricked a board when going through my queue > lately, and haven't been able to fully recover since.
no problem, Thanks for the review, I'm very happy we have some progress now. >> arch/powerpc/cpu/mpc83xx/Kconfig | 4 + >> board/gdsys/405ep/iocon.c | 190 +---------- >> board/gdsys/common/Makefile | 3 +- >> board/gdsys/common/ihs_mdio.c | 88 +++++ >> board/gdsys/common/ihs_mdio.h | 18 ++ >> board/gdsys/common/phy.c | 280 ++++++++++++++++ >> board/gdsys/common/phy.h | 14 + > > is it me, or should PHY support go under drivers/net/phy/gdsys.c (or > something like that)? Even if not immediately ported to the Generic > PHY Management layer, still, I think it would be a good idea to get > it in the right vicinity. > > Taking a closer look, it looks like at least one of the PHYs > involved here (the Marvell 88E1518) is already implemented in > drivers/phy/marvell.c to a certain degree, so it might be helpful to > define CONFIG_PHY_MARVELL as a first step to migrating to the > generic PHY subsystem. The first step was to factor out the common PHY code from iocon.c. The next step is merging this with the PHY subsystem. For the moment I would prefer it going in this way and doing a merge with the PHY subsystem for the next release. There are more boards coming that use this and I will clean it up alltogether. >> board/gdsys/mpc8308/Kconfig | 12 + >> board/gdsys/mpc8308/MAINTAINERS | 6 + >> board/gdsys/mpc8308/Makefile | 9 + >> board/gdsys/mpc8308/hrcon.c | 677 >> +++++++++++++++++++++++++++++++++++++++ >> board/gdsys/mpc8308/mpc8308.c | 109 +++++++ >> board/gdsys/mpc8308/mpc8308.h | 10 + >> board/gdsys/mpc8308/sdram.c | 82 +++++ > >> common/Makefile | 1 + >> common/cmd_ioloop.c | 295 +++++++++++++++++ > > IDK what this is (FPGA io-endpoint looper/reflector?), but I'm > guessing since it's in common/, it should be separated from this > board support patch, otherwise it won't get the intended audience's > attention. Since this is very gdsys FPGA specific I should probably move it to our board directory. >> +int last_stage_init(void) >> +{ >> + int slaves; >> + unsigned int k; >> + unsigned int mux_ch; >> + unsigned char mclink_controllers[] = { 0x24, 0x25, 0x26 }; >> + u16 fpga_features; >> + bool hw_type_cat = pca9698_get_value(0x20, 20); >> + bool ch0_rgmii2_present = false; >> + >> + FPGA_GET_REG(0, fpga_features, &fpga_features); >> + >> + /* Turn on Parade DP501 */ >> + pca9698_direction_output(0x20, 10, 1); >> + >> + ch0_rgmii2_present = !pca9698_get_value(0x20, 30); >> + >> + /* wait for FPGA done */ >> + for (k = 0; k < ARRAY_SIZE(mclink_controllers); ++k) { >> + unsigned int ctr = 0; >> + >> + if (i2c_probe(mclink_controllers[k])) >> + continue; >> + >> + while (!(pca953x_get_val(mclink_controllers[k]) >> + & MCFPGA_DONE)) { >> + udelay(100000); >> + if (ctr++ > 5) { >> + printf("no done for mclink_controller %d\n", >> k); >> + break; >> + } >> + } >> + } >> + >> + if (hw_type_cat) { >> + miiphy_register(bb_miiphy_buses[0].name, bb_miiphy_read, >> + bb_miiphy_write); >> + for (mux_ch = 0; mux_ch < MAX_MUX_CHANNELS; ++mux_ch) { >> + if ((mux_ch == 1) && !ch0_rgmii2_present) >> + continue; >> + >> + setup_88e1514(bb_miiphy_buses[0].name, mux_ch); >> + } >> + } >> + >> + /* give slave-PLLs and Parade DP501 some time to be up and running */ >> + udelay(500000); >> + >> + mclink_fpgacount = CONFIG_SYS_MCLINK_MAX; >> + slaves = mclink_probe(); >> + mclink_fpgacount = 0; >> + >> + print_fpga_info(0, ch0_rgmii2_present); >> + osd_probe(0); >> + return 0; > > unless this was left in from debugging (in which case it should be > removed), it implies the remaining code in the fn..: Oops, you are absolutely rigth this is debugcode. Wonder how that crept in... >> + >> + if (slaves <= 0) >> + return 0; >> + >> + mclink_fpgacount = slaves; >> + >> + for (k = 1; k <= slaves; ++k) { >> + FPGA_GET_REG(k, fpga_features, &fpga_features); >> + >> + print_fpga_info(k, false); >> + osd_probe(k); >> + if (hw_type_cat) { >> + miiphy_register(bb_miiphy_buses[k].name, >> + bb_miiphy_read, bb_miiphy_write); >> + setup_88e1514(bb_miiphy_buses[k].name, 0); >> + } >> + } >> + >> + return 0; >> +} > > ..is dead code, and therefore not welcome here. > >> +int board_early_init_r(void) >> +{ >> + unsigned k; >> + unsigned ctr; >> + >> + for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k) >> + gd->arch.fpga_state[k] = 0; >> + >> + /* >> + * reset FPGA >> + */ >> + mpc8308_init(); >> + >> + mpc8308_set_fpga_reset(1); >> + >> + mpc8308_setup_hw(); >> + >> + for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k) { >> + ctr = 0; >> + while (!mpc8308_get_fpga_done(k)) { >> + udelay(100000); >> + if (ctr++ > 5) { >> + gd->arch.fpga_state[k] |= >> + FPGA_STATE_DONE_FAILED; >> + break; >> + } >> + } >> + } >> + >> + udelay(10); >> + >> + mpc8308_set_fpga_reset(0); >> + >> + for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k) { >> + /* >> + * wait for fpga out of reset >> + */ >> + ctr = 0; >> + while (1) { >> + u16 val; >> + >> + FPGA_SET_REG(k, reflection_low, >> REFLECTION_TESTPATTERN); >> + >> + FPGA_GET_REG(k, REFLECTION_TESTREG, &val); >> + if (val == REFLECTION_TESTPATTERN_INV) >> + break; >> + >> + udelay(100000); >> + if (ctr++ > 5) { >> + gd->arch.fpga_state[k] |= >> + FPGA_STATE_REFLECTION_FAILED; >> + break; >> + } >> + } >> + } > > should these functions have timeouts? not sure if there's anything > useful to do if they do timeout... In fact the ctr code is meant to be a timeout. Or do you address something different? >> +/* Fixed sdram init -- doesn't use serial presence detect. >> + * >> + * This is useful for faster booting in configs where the RAM is unlikely >> + * to be changed, or for things like NAND booting where space is tight. >> + */ > > this is ok if the board has its RAM soldered-on: does it? It does. >> diff --git a/common/Makefile b/common/Makefile >> index b19d379..b5ed9ae 100644 >> --- a/common/Makefile >> +++ b/common/Makefile >> @@ -119,6 +119,7 @@ obj-$(CONFIG_CMD_HASH) += cmd_hash.o >> obj-$(CONFIG_CMD_IDE) += cmd_ide.o >> obj-$(CONFIG_CMD_IMMAP) += cmd_immap.o >> obj-$(CONFIG_CMD_INI) += cmd_ini.o >> +COBJS-$(CONFIG_CMD_IOLOOP) += cmd_ioloop.o >> obj-$(CONFIG_CMD_IRQ) += cmd_irq.o >> obj-$(CONFIG_CMD_ITEST) += cmd_itest.o >> obj-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o > > hmm, does obj-$... not work? Sometimes git rebase is simply too smart. Will change to obj-$ Cheers Dirk _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot