07 May, 2014

2 commits


06 May, 2014

2 commits


05 May, 2014

10 commits

  • Last argument shouldn't be there.

    Signed-off-by: Mateusz Zalega
    Acked-by: Marek Vasut
    Cc: Tom Rini

    Mateusz Zalega
     
  • g_dnl_register() currently first attempts to register a composite
    driver by name, and then saves the driver name once it's registered.
    Internally to the registration code, g_dnl_do_config() is called and
    attempts to compare the composite device's name with the list of known
    device names. This fails since the composite device's name has not yet
    been stored. This means that the first time "ums 0 0" is run, it fails,
    but subsequent attempts succeed.

    Re-order the name-saving and registration code to solve this.

    Fixes: e5b834e07f51 ("USB: gadget: added a saner gadget downloader registration API")
    Signed-off-by: Stephen Warren

    Stephen Warren
     
  • Preprocessor definitions and hardcoded implementation selection in
    g_dnl core were replaced by a linker list made of (usb_function_name,
    bind_callback) pairs.

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

    Mateusz Zalega
     
  • Future patches will make DFU too large to fit in this board's SPL build.

    Signed-off-by: Mateusz Zalega
    Acked-by: Tom Rini
    Reviewed-by: Lukasz Majewski

    Mateusz Zalega
     
  • In cases when MMC hadn't been initialized before, ie. by the user or other
    subsystem, it was still uninitialized while UMS media capacity check,
    leading to broken ums command.

    UMS has to initialize resources it uses.

    Tested on Samsung Goni.

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

    Mateusz Zalega
     
  • 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
     

02 May, 2014

1 commit


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

15 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
     
  • Signed-off-by: Masahiro Yamada
    Cc: Nobuhiro Iwamatsu
    Acked-by: Nobuhiro Iwamatsu
    Signed-off-by: Nobuhiro Iwamatsu

    Masahiro Yamada
     

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

1 commit