12 Sep, 2017

1 commit

  • Currently, all fixed-clock declared in "clocks" node in device tree
    can be binded by clk_fixed_rate.c driver only if each of them have
    the "simple-bus" compatible string.
    This constraint has been invoked here [1].

    This patch offers a solution to avoid adding "simple-bus" compatible
    string to nodes that are not busses.

    [1] https://patchwork.ozlabs.org/patch/558837/

    Signed-off-by: Patrice Chotard
    Reviewed-by: Simon Glass

    Patrice Chotard
     

01 Jun, 2017

2 commits


05 Apr, 2017

1 commit

  • The new function dm_remove_devices_flags() is intented for driver specific
    last-stage cleanup operations before the OS is started. This patch adds
    this functionality and hooks it into the common device_remove()
    function.

    Drivers wanting to use this feature for some last-stage removal calls,
    need to add one of the DM_REMOVE_xx flags to their driver .flags.

    Signed-off-by: Stefan Roese
    Reviewed-by: Simon Glass

    Stefan Roese
     

03 Dec, 2016

1 commit

  • When CONFIG_SPL_STACK_R is enabled, and spl_init() is called before
    board_init_r(), spl_relocate_stack_gd() will move global_data to a new
    place in memory. This affects driver model since it uses a list for the
    uclasses. Unless this is updated the list will become invalid. When
    looking for a non-existent uclass, such as when adding a new one, the loop
    in uclass_find() may continue forever, thus causing a hang.

    Add a function to correct this rather obscure bug.

    Signed-off-by: Simon Glass

    Simon Glass
     

23 Jul, 2014

6 commits

  • Some boards will have devices which are not in the device tree and do not
    have platform data. They may be programnatically created, for example.
    Add a hook which boards can use to bind those devices early in boot.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • At present only root nodes in the device tree are scanned for devices.
    But some devices can have children. For example a SPI bus may have
    several children for each of its chip selects.

    Add a function which scans subnodes and binds devices for each one. This
    can be used for the root node scan also, so change it.

    A device can call this function in its bind() or probe() methods to bind
    its children.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Fix up the style of a few comments and add/clarify a few others.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Initialise devices marked 'pre-reloc' and make them available prior to
    relocation. Note that this requires pre-reloc malloc() to be available.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Driver model currently only operates after relocation is complete. In this
    state U-Boot typically has a small amount of memory available. In adding
    support for driver model prior to relocation we must try to use as little
    memory as possible.

    In addition, on some machines the memory has not be inited and/or the CPU
    is not running at full speed or the data cache is off. These can reduce
    execution performance, so the less initialisation that is done before
    relocation the better.

    An immediately-obvious improvement is to only initialise drivers which are
    actually going to be used before relocation. On many boards the only such
    driver is a serial UART, so this provides a very large potential benefit.

    Allow drivers to mark themselves as 'pre-reloc' which means that they will
    be initialised prior to relocation. This can be done either with a driver
    flag or with a 'dm,pre-reloc' device tree property.

    To support this, the various dm scanning function now take a 'pre_reloc_only'
    parameter which indicates that only drivers marked pre-reloc should be
    bound.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Add a new method which removes and unbinds all drivers.

    Signed-off-by: Simon Glass
    Acked-by: Marek Vasut

    Simon Glass
     

21 Jun, 2014

1 commit

  • There is a spelling mistake and two functions are missing comments
    altogether. Also the flags declaration is correct, but doesn't follow
    style. Finally, the uclass_get_device() function has some errors in
    its documentation.

    Fix these problems.

    Signed-off-by: Simon Glass
    Acked-by: Marek Vasut

    Simon Glass
     

27 May, 2014

1 commit

  • using UBI and DM together leads in compiler error, as
    both define a "struct device", so rename "struct device"
    in include/dm/device.h to "struct udevice", as we use
    linux code (MTD/UBI/UBIFS some USB code,...) and cannot
    change the linux "struct device"

    Signed-off-by: Heiko Schocher
    Cc: Simon Glass
    Cc: Marek Vasut

    Heiko Schocher
     

05 Mar, 2014

1 commit

  • Add driver model functionality for generic board.

    This includes data structures and base code for registering devices and
    uclasses (groups of devices with the same purpose, e.g. all I2C ports will
    be in the same uclass).

    The feature is enabled with CONFIG_DM.

    Signed-off-by: Simon Glass
    Signed-off-by: Marek Vasut
    Signed-off-by: Pavel Herrmann
    Signed-off-by: Viktor Křivák
    Signed-off-by: Tomas Hlavacek

    Simon Glass