19 Nov, 2015

40 commits

  • gcc 4.4.3 (which is the default native compiler on x86-64 Ubuntu 10.04)
    doesn't seem to like initializers for sub-fields of anonymous unions.
    Solve this by replacing the initialization with an assignment. This
    fixes:

    lib/lz4_wrapper.c: In function ‘ulz4fn’:
    lib/lz4_wrapper.c:97: error: unknown field ‘raw’ specified in initializer

    Signed-off-by: Stephen Warren
    Reviewed-by: Tom Rini
    Acked-by: Simon Glass

    Stephen Warren
     
  • Signed-off-by: Valentin Longchamp

    Valentin Longchamp
     
  • This board uses the same CPU (8309) as VECT1. The memory however is
    different since it has NAND Flash, the NOR Flash partitioning is
    different and of course the FPGAs as well.

    Signed-off-by: Valentin Longchamp
    Signed-off-by: Christoph Dietrich

    Valentin Longchamp
     
  • It should be after the u-boot reserved sectors and before the env
    sectors, since the solution used for kmvect1 (tell the linker to put the
    firmware into the u-boot produced binary, at the end of the area) should
    be the exception.

    The #define is only "conditional" so that we can still support kmvect1.

    Signed-off-by: Valentin Longchamp

    Valentin Longchamp
     
  • The hardcoded value are bad, since the address could change between
    different boards.

    Furthermore, the relevant #defines are set only if #undefined here, so
    that they can be changed by some boards if required.

    Signed-off-by: Valentin Longchamp

    Valentin Longchamp
     
  • Setting dip_switch 3 and 4 also will run bootloader in COGE3 and COGE6
    It is required remove local mgmt IP address, when DIP Switch PIN3 is
    enabled. DIP Switch 4 also enabled to avoid u-boot update in future
    for DIP switch enhancements.

    Signed-off-by: Bagavathiannan Palanisamy
    Signed-off-by: Valentin Longchamp

    Bagavathiannan Palanisamy
     
  • The ODT parameters for km8360 set the ODT_WR_ACS bit in u-boot KM-2011.09
    that is used in the release bootpackage for kmcoge5ne. During the
    transition from the kmeter1 to km8360 this was changed to
    ODT_RD_ONLY_CURRENT, which is uncorrect and causes faulty RAM accesses at
    low temperatures.

    This is now changed to ODT_WR_ONLY_CURRENT which is the equivalent of
    ODT_WR_ACS.

    Signed-off-by: Valentin Longchamp

    Valentin Longchamp
     
  • For consistency with all the other km83xx plaforms, this should also be
    defined for km8309. The same settings as for km8321 are taken.

    Signed-off-by: Valentin Longchamp

    Valentin Longchamp
     
  • On the km8321 boards is CONFIG_SYS_DDRCDR not defined, which leads to
    the DDRCDR not being configured at startup and still containing the
    reset value.

    The required settings for our km8321 hardware designs are different than
    the reset value and must be set with CONFIG_SYS_DDRCDR, that is used
    by mpc83xx's cpu_init_f function at early CPU initialization.

    The important settings are the DDR2 internal voltage level and the
    half-strength "drivers".

    In our case where the DRAM chips are soldered on board and the routing
    for these signals under control, half-strength is sufficient as a few
    measurements done in the lasts have shown. Since all the hardware
    qualification tests have been performed with half strength, the nominal
    strength settings are removed in favor of the default reset half
    strength settings.

    Signed-off-by: Valentin Longchamp

    Valentin Longchamp
     
  • commit 0a4f88b98 removed the usage of our setports function, but the
    function itself were not removed. So toss it it's dead code.

    Signed-off-by: Holger Brunck
    Signed-off-by: Valentin Longchamp

    Holger Brunck
     
  • We use CONFIG_OF_LIBFDT and CONFIG_OF_BOARD_SETUP on all our powerpc
    targets, so there is no need to check these defines within our C code.

    Signed-off-by: Holger Brunck
    Signed-off-by: Valentin Longchamp

    Holger Brunck
     
  • We use the same settings for open firmware defines on all our powerpc
    targets, so move them from the CPU specific headers to the common
    powerpc header.

    Signed-off-by: Holger Brunck
    Signed-off-by: Valentin Longchamp

    Holger Brunck
     
  • 128kByte and 3,986MB may be in the future too little for kernel the fdt
    blob respectively the kernel image. So increase the reserved areas here,
    we have the space for this.

    Signed-off-by: Holger Brunck
    Signed-off-by: Valentin Longchamp

    Holger Brunck
     
  • On mgcoge3ne we also want to start the test application if the testpin
    is asserted. But we don't have a full POST test support yet. So simply
    add a function to read the testpin value.

    Signed-off-by: Holger Brunck
    Signed-off-by: Valentin Longchamp

    Holger Brunck
     
  • The get_pin and set_pin funciton was only used for pins on Port D and
    therefore the value was hard coded in the function. Enhance this with a
    parameter, that we are able to use this functions for other ports too.

    Signed-off-by: Holger Brunck
    Signed-off-by: Valentin Longchamp

    Holger Brunck
     
  • This board is similar to TUXX1, but it has differend FPGAs.

    Signed-off-by: Christoph Dietrich
    Signed-off-by: Andreas Huber
    Signed-off-by: Valentin Longchamp

    Christoph Dietrich
     
  • Search for the kernel and DTBs in a folder named PRODUCTNAME (found in the IVM)
    at the TFTP server instead of the u-boot boardname.

    Signed-off-by: Tobias Müller
    Signed-off-by: Valentin Longchamp
    Reviewed-by: Heiko Schocher

    Tobias Müller
     
  • When loading the dtb file via tftp we should load the one which matches
    boardId and hwKey and not a common one for the boardname. We have boards
    were different hwKeys are used and then we may load an incorrect dtb
    file. If no fdt_bid_kwkey.dtb file is not a fallback to boardname.dtb is used.

    Signed-off-by: Holger Brunck
    Signed-off-by: Tobias Müller
    Signed-off-by: Valentin Longchamp
    Reviewed-by: Heiko Schocher

    Holger Brunck
     
  • If a DTB is found with cramfsls, the bootscript continues as expected.
    If none is found, the cramfsloadfdt and boot subbootcmds are updated to
    not load the DTB from cramfs and not pass it to the kernel. The kernel
    thus must have an appended DTB otherwise the boot will fail.

    This is required for the km_kirkwood boards that must support .esw where
    the DTB sometimes is appended (for backwards compatibility) and sometimes
    is passed correctly (as we do now for all newer boards).

    Signed-off-by: Valentin Longchamp
    Reviewed-by: Heiko Schocher

    Valentin Longchamp
     
  • To prevent u-boot to stop accidently e.g. due to line noise on the
    serial line, we now use the option CONFIG_AUTOBOOT_KEYED. We choose the
    key for this.

    Signed-off-by: Holger Brunck
    Signed-off-by: Valentin Longchamp
    Reviewed-by: Heiko Schocher

    Holger Brunck
     
  • There was a small typo for KM_COGE5UN that resulted in the dip switch
    not to behave as expected.

    Signed-off-by: Valentin Longchamp

    Valentin Longchamp
     
  • Similar to kmcoge5un we need to check the dip switch at startup
    connected to the kirkwood at MPP43. If it's set we need to set the
    actual_bank to zero to boot from SW bank zero. Additional to kmcoge5un
    we need to check also the pin in misc_init to decide wether we wait for
    the ne to start or not. If the dip_switch is set we don't wait and
    continue immediately.

    Signed-off-by: Holger Brunck
    Signed-off-by: Valentin Longchamp

    Holger Brunck
     
  • Configure PHY LED register for Marvell 88E1118R PHY used on PIGGY3 to
    match with printed descriptions on PCB

    Signed-off-by: Tobias Müller
    Signed-off-by: Valentin Longchamp
    [trini: Fix typo, CRTL_PAGE -> CTRL_PAGE]
    Signed-off-by: Tom Rini

    Tobias Müller
     
  • KM_ENV_BUS was used for nothing else than an direct assignment to
    CONFIG_I2C_ENV_EEPROM_BUS. To avoid this, directly use
    CONFIG_I2C_ENV_EEPROM_BUS instead.

    Patchwork: http://patchwork.ozlabs.org/patch/399411/
    Signed-off-by: Valentin Longchamp

    Valentin Longchamp
     
  • SeeedStudio BeagleBone Green (BBG) is clone of the BeagleBone Black (BBB) minus
    the HDMI port and addition of two Grove connectors (i2c2 and usart2).

    This board can be identified by the 1A value after A335BNLT (BBB) in the at24 eeprom:
    1A: [aa 55 33 ee 41 33 33 35 42 4e 4c 54 1a 00 00 00 |.U3.A335BNLT....|]

    http://beagleboard.org/green
    http://www.seeedstudio.com/wiki/Beaglebone_green

    In Mainline Kernel as of:
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=79a4e64c679d8a0b1037da174e4aea578c80c4e6

    Patch tested on BeagleBone Black (rev C) and BeagleBone Green (production model)

    Signed-off-by: Robert Nelson
    CC: Tom Rini
    CC: Jason Kridner
    Reviewed-by: Tom Rini

    robertcnelson@gmail.com
     
  • Add CMD_GPIO to Kconfig and run tools/moveconfig.py .

    Signed-off-by: Thomas Chou
    Reviewed-by: Simon Glass

    Thomas Chou
     
  • This updates git-mailrc to add me as a maintainer of x86.

    Signed-off-by: Bin Meng
    Acked-by: Simon Glass

    Bin Meng
     
  • CM-T3517 has several HW revisions.
    Add board specific get_board_rev() callback to retrieve revision number.

    Signed-off-by: Dmitry Lifshitz
    Reviewed-by: Igor Grinberg

    Dmitry Lifshitz
     
  • Currently the mmc device that SPL looks at is always mmc0, regardless
    of the BOOT_DEVICE_MMCx value. This forces some boards to
    implement hacks in order to boot from other mmc devices.

    Make SPL take into account the correct mmc device.

    Signed-off-by: Nikita Kiryanov
    Reviewed-by: Tom Rini

    Nikita Kiryanov
     
  • Use spl alternate boot device feature to define fallback to
    the main boot device as it is defined by hardware.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Stefano Babic
    Cc: Tom Rini
    Reviewed-by: Tom Rini
    Reviewed-by: Stefano Babic

    Nikita Kiryanov
     
  • Now that we support alternative boot devices, it can sometimes be
    unclear which boot devices was actually used. Provide a function to
    announce which boot devices are attempted during boot.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Tom Rini
    Cc: Simon Glass
    Reviewed-by: Tom Rini
    Reviewed-by: Simon Glass

    Nikita Kiryanov
     
  • Introduce spl_boot_list array, which defines a list of boot devices
    that SPL will try before hanging. By default this list will consist
    of only spl_boot_device(), but board_boot_order() can be overridden
    by board code to populate the array with custom values.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Tom Rini
    Cc: Simon Glass
    Reviewed-by: Tom Rini
    Reviewed-by: Simon Glass

    Nikita Kiryanov
     
  • Refactor spl image load code out of board_init_r and into its own
    function. This is a preparation for supporting alternative boot
    devices.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Tom Rini
    Cc: Simon Glass
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini

    Nikita Kiryanov
     
  • Make spl_*_load_image() functions return a value instead of
    hanging if a problem is encountered. This enables main spl code
    to make the decision whether to hang or not, thus preparing
    it to support alternative boot devices.

    Some boot devices (namely nand and spi) do not hang on error.
    Instead, they return normally and SPL proceeds to boot the
    contents of the load address. This is considered a bug and
    is rectified by hanging on error for these devices as well.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Tom Rini
    Cc: Simon Glass
    Cc: Ian Campbell
    Cc: Hans De Goede
    Cc: Albert Aribaud
    Cc: Jagan Teki
    Reviewed-by: Tom Rini
    Reviewed-by: Simon Glass

    Nikita Kiryanov
     
  • Get rid of emmc boot code duplication in spl_mmc_load_image() using a switch
    case fallthrough into MMCSD_MODE_RAW. Since the #ifdef CONFIG_SUPPORT_EMMC_BOOT
    check is not really necessary, remove it in the process.

    No functional changes.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Paul Kocialkowski
    Cc: Pantelis Antoniou
    Cc: Tom Rini
    Cc: Simon Glass
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini

    Nikita Kiryanov
     
  • Move the code that handles fs boot out of spl_mmc_load_image() and into its
    own function to reduce the #ifdef complexity of spl_mmc_load_image().

    No functional changes.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Paul Kocialkowski
    Cc: Pantelis Antoniou
    Cc: Tom Rini
    Cc: Simon Glass
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini

    Nikita Kiryanov
     
  • Implement defaults for the raw partition image loading so that the #ifdef
    CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION in spl_mmc_load_image() will no
    longer be necessary.

    This change makes it possible for mmc_load_image_raw_partition() and
    mmc_load_image_raw_sector() to coexist.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Paul Kocialkowski
    Cc: Pantelis Antoniou
    Cc: Tom Rini
    Cc: Simon Glass
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini

    Nikita Kiryanov
     
  • Implement default versions of falcon mode functions to make the
    CONFIG_SPL_OS_BOOT check in spl_mmc_load_image() unnecessary, thus reducing
    its #ifdef complexity.

    No functional changes.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Paul Kocialkowski
    Cc: Pantelis Antoniou
    Cc: Tom Rini
    Cc: Simon Glass
    Cc: Guillaume GARDET
    Cc: Suriyan Ramasami
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini

    Nikita Kiryanov
     
  • Simplify spl_mmc_load_image() code by moving the part that finds the mmc device
    into its own function spl_mmc_find_device(), available in two flavors: DM and
    non-DM.

    This refactor fixes a bug in which an error in the device location sequence
    does not necessarily aborts the rest of the code. With this refactor, we fail
    the moment there is an error.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Paul Kocialkowski
    Cc: Pantelis Antoniou
    Cc: Tom Rini
    Cc: Simon Glass
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini

    Nikita Kiryanov
     
  • The original intention of the mmc load_image() function was to try multiple
    boot modes before failing. This is evident by the lack of break statements
    in the switch, and the following line in the default case:
    puts("spl: mmc: no boot mode left to try\n");

    This implementation is problematic because:
    - The availability of alternative boot modes is very arbitrary since it
    depends on the specific order of the switch cases. If your boot mode happens to
    be the first case, then you'll have a bunch of other boot modes as alternatives.
    If it happens to be the last case, then you have none.
    - Opting in/out is tied to config options, so the only way for you to prevent an
    alternative boot mode from being attempted is to give up on the feature completely.
    - This implementation makes the code more complicated and difficult to
    understand.

    Address these issues by inserting a break statements between the cases to make the
    function try only one boot mode.

    Signed-off-by: Nikita Kiryanov
    Cc: Igor Grinberg
    Cc: Paul Kocialkowski
    Cc: Pantelis Antoniou
    Cc: Tom Rini
    Cc: Simon Glass
    Reviewed-by: Simon Glass
    Reviewed-by: Tom Rini

    Nikita Kiryanov