05 May, 2014

5 commits

  • Previously offsets handled by dfu_fill_entity_mmc(), defined in boards'
    CONFIG_DFU_ALT were treated as hexadecimal regardless of their prefix,
    which sometimes led to confusion. This patch forces usage of explicit
    numerical base prefixes.

    Signed-off-by: Mateusz Zalega
    Acked-by: Lukasz Majewski
    Cc: Tom Rini
    Cc: Minkyu Kang

    Mateusz Zalega
     
  • When user attempted to perform a raw write using DFU (vide
    dfu_fill_entity_mmc) with MMC interface not initialized before,
    get_mmc_blk_size() reported invalid (zero) block size - it wasn't
    possible to write ie. a new u-boot image.

    This commit fixes that by initializing MMC device before use in
    dfu_fill_entity_mmc().

    While fixing initialization sequence, I had to change about half of
    dfu_fill_entity_mmc's body, so I refactored it on the way to make it,
    IMHO, considerably more comprehensible.

    Being left as dead code, get_mmc_blk_size() was removed.

    Tested on Samsung Goni.

    Signed-off-by: Mateusz Zalega
    Signed-off-by: Kyungmin Park
    Acked-by: Lukasz Majewski
    Acked-by: Tom Rini
    Cc: Minkyu Kang

    Mateusz Zalega
     
  • Former usb_cable_connected() patch broke compilation of boards which do
    not support this feature.

    I've renamed usb_cable_connected() to g_dnl_usb_cable_connected() and added
    its default implementation to gadget downloader driver code. There's
    only one driver of this kind and it's unlikely there'll be another, so
    there's no point in keeping it in /common.

    Previously this function was declared in usb.h. I've moved it, since
    it's more appropriate to keep it in g_dnl.h - usb.h seems to be intended
    for USB host implementation.

    Existing code, confronted with default -EOPNOTSUPP return value,
    continues as if the cable was connected.

    CONFIG_USB_CABLE_CHECK was removed.

    Change-Id: Ib9198621adee2811b391c64512f14646cefd0369
    Signed-off-by: Mateusz Zalega
    Acked-by: Marek Vasut
    Acked-by: Lukasz Majewski

    Mateusz Zalega
     
  • Implementation made use of types defined in common.h, even though it
    wasn't #included. It worked in circumstances when .c files included
    every needed header (all).

    Signed-off-by: Mateusz Zalega
    Cc: Tom Rini
    Cc: Minkyu Kang

    Mateusz Zalega
     
  • Structure definition used type block_dev_desc_t, defined in part.h, which
    wasn't included in mmc.h. It worked only in circumstances when common.h,
    or another header using part.h was incuded in implementation files.

    Change-Id: I5b203928b689887e3e78beb00a378955e0553eb7
    Signed-off-by: Mateusz Zalega
    Acked-by: Pantelis Antoniou
    Cc: Minkyu Kang

    Mateusz Zalega
     

01 May, 2014

1 commit

  • Allow ci_udc.o to be built when using the new(?) USB gadget framework,
    as enabled by CONFIG_USB_GADGET.

    Note that this duplicates the Makefile entry for ci_udc.o, since it's
    also included inside #ifdef CONFIG_USB_ETHER. I'm not sure what that
    define means; perhaps an old style of Ethernet-specific USB gadget
    implementation?

    I wonder if the line that this patch adds shouldn't be outside all of
    the ifdefs, so it stands on its own, similar to how e.g. epautoconf.o
    is shared between the two?

    Signed-off-by: Stephen Warren

    Stephen Warren
     

30 Apr, 2014

14 commits

  • ci_udc.c allocates only a single buffer for each endpoint, which
    ci_ep_alloc_request() returns as a hard-coded value rather than
    dynamically allocating. Consequently, storage_common.c must limit
    itself to using a single buffer at a time. Add a special case
    to the definition of FSG_NUM_BUFFERS for this.

    Another option would be to fix ci_ep_alloc_request() to dynamically
    allocate the buffers like some/all(?) other device mode drivers do.
    However, I don't think that ci_ep_queue() supports queueing up
    multiple buffers either yet, and I'm not familiar enough with the
    controller yet to implement that. As such, any attempt to use multiple
    buffers simply results in data corruption and other errors.

    Signed-off-by: Stephen Warren

    Stephen Warren
     
  • Tegra's USB controller appears to be a variant of the ChipIdea
    controller; perhaps derived from it, or simply a different version of
    the IP core to what U-Boot supports today.

    In this variant, at least the following difference are present:
    - Some registers are moved about.
    - Setup transaction completion is reported in a separate 'epsetupstat'
    register, rather than in 'epstat' (which still exists, perhaps for
    other transaction types).
    - USB connection speed is reported in a separate 'hostpc1_devlc'
    register, rather than 'portsc'.
    - The registers used by ci_udc.c begin at offset 0x130 from the USB
    register base, rather than offset 0x140. However, this is handled
    by the associated EHCI controller driver, since the register address
    is stored in controller.ctrl->hcor.

    Introduce define CONFIG_CI_UDC_HAS_HOSTPC to indicate which variant of
    the controller should be supported. The "HAS_HOSTPC" part of this name
    mirrors the similar "has_hostpc" field used by the Linux EHCI controller
    core to represent the presence/absence of the hostpc1_devlc register.

    Signed-off-by: Stephen Warren

    Stephen Warren
     
  • usb_gadget_register_driver() currently unconditionally programs PORTSC
    to select a ULPI PHY. This is incorrect on at least the Tegra boards I
    am testing with, which use a UTMI PHY for the OTG ports. Make the PHY
    selection code conditional upon the specific EHCI controller that is in
    use.

    Ideally, I believe that the PHY initialization code should be part of
    ehci_hcd_init() in the relevant EHCI controller driver, or some board-
    specific function that ehci_hcd_init() calls.

    For MX6, I'm not sure this PHY initialization code is correct even before
    this patch, since ehci-mx6's ehci_hcd_init() already configures PORTSC to
    a board-specific value, and it seems likely that the code in ci_udc.c is
    incorrectly undoing this. Perhaps this is not an issue if the PHY
    selection register bits aren't implemented on this instance of the MX6
    USB controller?

    ehci-mxs.c doens't appear to touch PORTSC, so this code is likely still
    required there.

    Signed-off-by: Stephen Warren

    Stephen Warren
     
  • At least drivers/usb/gadget/storage_common.c expects that ep->req.actual
    contain the number of bytes actually transferred. (At least in practice,
    I observed it failing to work correctly unless this was the case).

    However, ci_udc.c modifies ep->req.length instead. I assume that .length
    is supposed to represent the allocated buffer size, whereas .actual is
    supposed to represent the actual number of bytes transferred. In the OUT
    transaction case, this may happen simply because the host sends a smaller
    packet than the max possible size, which is quite legal. In the IN case,
    transferring fewer bytes than requested could presumably happen as an
    error.

    Modify handle_ep_complete() to write to .actual rather than modifying
    .length.

    Signed-off-by: Stephen Warren

    Stephen Warren
     
  • ci_ep_queue() currently only fills in the page0/page1 fields in the
    queue item. If the buffer is larger than 4KiB (unaligned) or 8KiB
    (page-aligned), then this prevents the HW from knowing where to write
    the balance of the data.

    Fix this by initializing all 5 pageN pointers, which allows up to
    16KiB (potentially non-page-aligned) buffers.

    Signed-off-by: Stephen Warren

    Stephen Warren
     
  • This patch remove always false (since we tested ret = 0) ternary operator
    with ret value returned.

    Signed-off-by: Lukasz Majewski

    Lukasz Majewski
     
  • Commit 4a271cb1b4ff doesn't take into account that fdtdec_setup_gpio()
    returns success when the gpio passed to it is FDT_GPIO_NONE (no
    gpio node found in the fdtdec_decode_gpio() call). This results in
    calling gpio_direction_output() on invalid gpio. For this reason
    executing "usb start" command on Arndale causes data abort in the
    ehci-exynos driver.

    Add the fdt_gpio_isvalid() check to fix that problem.

    Signed-off-by: Andrey Konovalov
    Cc: Julius Werner
    Cc: Simon Glass
    Cc: Minkyu Kang
    Cc: Marek Vasut

    andrey.konovalov@linaro.org
     
  • Add missing missing disconnect and unbind calls to the musb gadget driver's
    usb_gadget_unregister_driver function. Otherwise, any gadget drivers fail
    to uninitialize and run a 2nd time.

    Signed-off-by: Rob Herring

    Rob Herring
     
  • Allow a NULL table to be passed to usb_gadget_get_string for cases
    when a string table may not be populated.

    Signed-off-by: Rob Herring
    Reviewed-by: Tom Rini
    Acked-by: Marek Vasut
    Acked-by: Lukasz Majewski

    Rob Herring
     
  • Since dfu read/write operations needs to be flushed manually,
    writing to filesystem on MMC by thor was broken. MMC raw write
    actually is working fine because current dfu_flush() function
    writes filesystem only. This commit adds dfu_flush() to f_thor
    and now filesystem write is working.

    This change was tested on Trats2 board.

    Signed-off-by: Przemyslaw Marczak
    Cc: Lukasz Majewski
    Cc: Marek Vasut
    Cc: Heiko Schocher
    Cc: Tom Rini

    Przemyslaw Marczak
     
  • In thor's download_tail() function, dfu_get_entity() is called
    before each dfu_write() call and the returned entity pointers
    are the same. So dfu_get_entity() can be called just once and
    this patch changes this.

    Signed-off-by: Przemyslaw Marczak
    Cc: Lukasz Majewski
    Cc: Marek Vasut
    Cc: Heiko Schocher
    Cc: Tom Rini

    Przemyslaw Marczak
     
  • USB keyboard polling failed for some keyboards on PowerPC 5020.
    This was caused by requesting only 4 bytes of data from keyboards that
    produce an 8 byte HID report.

    Signed-off-by: Adrian Cox
    Signed-off-by: Wolfgang Denk
    Cc: Marek Vasut

    Adrian Cox
     
  • Update the EHCI driver to support interrupt transfers on PowerPC.

    Signed-off-by: Adrian Cox

    Adrian Cox
     
  • The rmobile SoC has usb host controller.
    This supports USB controllers listed in the R8A7790, R8A7791 and R8A7740.

    Signed-off-by: Nobuhiro Iwamatsu
    Reviewed-by: Marek Vasut

    Nobuhiro Iwamatsu
     

29 Apr, 2014

2 commits

  • Most of the I2C slaves support accesses in the typical style
    that is : read/write series of bytes at particular address offset.
    These transactions look like:"
    (1) START:Address:Tx:Offset:RESTART:Address[0..4]:Tx/Rx:data[0..n]:STOP"

    However there are certain devices which support accesses in
    terms of the transactions as follows:
    (2) "START:Address:Tx:Txdata[0..n1]:Clock_stretching:
    RESTART:Address:Rx:data[0..n2]"
    Here Txdata is typically a command and some associated data,
    similarly Rxdata could be command status plus some data received
    as a response to the command sent.

    Type (1) transactions are currently supportd in the
    i2c driver using i2c_read and i2c_write APIs. I2C EEPROMs,
    RTC, etc fall in this category.

    To handle type (2) along with type (1) transactions,
    i2c_read() function has been modified.

    Signed-off-by: Shaveta Leekha
    Signed-off-by: Poonam Aggrwal

    Shaveta Leekha
     
  • This driver needs a data structure in SRAM before SDRAM is available.
    This is not alway the case using .data section. Moving this data
    structure to global_data guarantees it is writable.

    Signed-off-by: York Sun
    CC: Troy Kisky

    York Sun
     

26 Apr, 2014

4 commits


25 Apr, 2014

2 commits


24 Apr, 2014

4 commits


23 Apr, 2014

8 commits

  • Tom Rini
     
  • This reverts commit a8b993eb81c142a439c24b871a2317f765fe5397.

    Commit a8b993eb claims it fixes u-boot.lds rule by replacing
    $(call if_changed) with $(call filechk).

    But the problem had already been fixed by commit 395e60cd
    a few days before commit a8b993eb was posted.

    There is no reason to apply commit a8b993eb. What is worse is
    $(call filechk) is too strong to fix the problem and looks weird.

    Date of the two patches:

    [1] commit 395e60cdc292dc0183c6867d34b43f14a373df55
    Author: Masahiro Yamada
    AuthorDate: Wed Apr 9 20:10:43 2014 +0900
    Commit: Tom Rini
    CommitDate: Fri Apr 11 10:08:42 2014 -0400
    replaces $(call if_changed) -> $(call if_changed_dep)

    [2] commit a8b993eb81c142a439c24b871a2317f765fe5397
    Author: Jon Loeliger
    AuthorDate: Tue Apr 15 16:09:37 2014 -0500
    Commit: Tom Rini
    CommitDate: Fri Apr 18 16:14:16 2014 -0400
    replaces $(call if_changed) -> $(call filechk)

    A conflict must have happened when applying [2], but somehow it was
    applied, sadly.

    Signed-off-by: Masahiro Yamada
    Cc: Jon Loeliger
    Cc: Andreas Bießmann
    Cc: Tom Rini

    Masahiro Yamada
     
  • ar8031 has the same config steps with ar8021, so change its
    config func to ar8021_config instead of genphy_config.

    Signed-off-by: Zhao Qiang
    Reviewed-by: York Sun

    Zhao Qiang
     
  • Add support of 2 stage NAND/SD boot loader using SPL framework.
    PBL initialise the internal SRAM and copy SPL, this further
    initialise DDR using SPD and environment and copy u-boot from
    NAND/SD to DDR, finally SPL transfer control to u-boot.
    NOR uses CS1 instead of CS2 when NAND boot, fix it.

    Signed-off-by: Shaohui Xie
    Reviewed-by: York Sun

    Shaohui Xie
     
  • Updated the RCW for rev2.0 which uses new frequency settings as below:

    Clock Configuration:
    CPU0:1666.667 MHz, CPU1:1666.667 MHz, CPU2:1666.667 MHz, CPU3:1666.667 MHz,
    CPU4:1666.667 MHz, CPU5:1666.667 MHz, CPU6:1666.667 MHz, CPU7:1666.667 MHz,
    CPU8:1666.667 MHz, CPU9:1666.667 MHz, CPU10:1666.667 MHz, CPU11:1666.667MHz,
    CCB:733.333 MHz,
    DDR:933.333 MHz (1866.667 MT/s data rate) (Asynchronous), IFC:183.333 MHz
    FMAN1: 733.333 MHz
    FMAN2: 733.333 MHz
    QMAN: 366.667 MHz
    PME: 533.333 MHz

    Remove workaround of IFC bus speed and SERDES A-006031 of rev1.0.

    Signed-off-by: Shaohui Xie
    Reviewed-by: York Sun

    Shaohui Xie
     
  • B4420 is a personality of B4860.
    It should have same FM1_CLK_SEK and FM1_CLK_SHIFT as B4860

    Signed-off-by: Prabhakar Kushwaha
    Reviewed-by: York Sun

    Prabhakar Kushwaha
     
  • - update readme.
    - add CONFIG_SYS_CORTINA_FW_IN_* for loading Cortina PHY CS4315
    ucode from NOR/NAND/SPI/SD/REMOTE.
    - update cpld vbank with SW3[5:7]=000 as default vbank0 instead of
    previous SW3[5:7]=111 as default vbank.
    - fix CONFIG_SYS_I2C_EEPROM_ADDR_LEN to 2.

    Signed-off-by: Shengzhou Liu
    Reviewed-by: York Sun

    Shengzhou Liu
     
  • Add support of 2-stage NAND/SPI/SD boot loader using SPL framework.
    PBL initializes the internal CPC-SRAM and copy SPL(160K) to it,
    SPL further initializes DDR using SPD and environment and copy
    u-boot(768K) from SPI/SD/NAND to DDR, finally SPL transfers control
    to u-boot.

    Signed-off-by: Shengzhou Liu
    Reviewed-by: York Sun

    Shengzhou Liu