03 Apr, 2015

1 commit

  • This function is used to read the current value of the syncpt and is
    useful in situations where drivers don't schedule work and wait for the
    syncpoint to increment. One particular use-case is using the syncpoint
    as a VBLANK counter.

    Signed-off-by: Thierry Reding

    Thierry Reding
     

27 Jan, 2015

1 commit

  • Previously the struct bus_type exported by the host1x infrastructure was
    only a very basic skeleton. Turn that implementation into a more full-
    fledged bus to support proper probe ordering and power management.

    Note that the bus infrastructure needs to be available before any of the
    drivers can be registered. This is automatically ensured if all drivers
    are built as loadable modules (via symbol dependencies). If all drivers
    are built-in there are no such guarantees and the link order determines
    the initcall ordering. Adjust drivers/gpu/Makefile to make sure that the
    host1x bus infrastructure is initialized prior to any of its users (only
    drm/tegra currently).

    v2: Fix building host1x and tegra-drm as modules
    Reported-by: Dave Airlie

    Reviewed-by: Sean Paul
    Reviewed-by: Mark Zhang
    Signed-off-by: Thierry Reding

    Thierry Reding
     

23 Jan, 2015

1 commit


04 Aug, 2014

1 commit

  • Job submission currently relies on the fact that struct drm_tegra_reloc
    and struct host1x_reloc are the same size and uses a simple call to the
    copy_from_user() function to copy them to kernel space. This causes the
    handle to be stored in the buffer object field, which then needs a cast
    to a 32 bit integer to resolve it to a proper buffer object pointer and
    store it back in the buffer object field.

    On 64-bit architectures that will no longer work, since pointers are 64
    bits wide whereas handles will remain 32 bits. This causes the sizes of
    both structures to because different and copying will no longer work.

    Fix this by adding a new function, host1x_reloc_get_user(), that copies
    the structures field by field.

    While at it, use substructures for the command and target buffers in
    struct host1x_reloc for better readability. Also use unsized types to
    make it more obvious that this isn't part of userspace ABI.

    Signed-off-by: Thierry Reding

    Thierry Reding
     

04 Apr, 2014

1 commit


19 Dec, 2013

1 commit


31 Oct, 2013

7 commits

  • This patch adds support for hardware syncpoint bases. This creates
    a simple mechanism to stall the command FIFO until an operation is
    completed.

    Signed-off-by: Arto Merilainen
    Reviewed-by: Terje Bergstrom
    Signed-off-by: Thierry Reding

    Arto Merilainen
     
  • Functions host1x_syncpt_request() and _host1x_syncpt_alloc() have
    been taking a separate boolean flag ('client_managed') for indicating
    if the syncpoint value should be tracked by the host1x driver.

    This patch converts the field into generic 'flags' field so that
    we can easily add more information while requesting a syncpoint.
    Clients are adapted to use the new interface accordingly.

    Signed-off-by: Arto Merilainen
    Reviewed-by: Terje Bergstrom
    Signed-off-by: Thierry Reding

    Arto Merilainen
     
  • Initialize and power the 3D unit on Tegra20, Tegra30 and Tegra114 and
    register a channel with the Tegra DRM driver so that the unit can be
    used from userspace.

    Signed-off-by: Thierry Reding
    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • The Tegra DRM driver currently uses some infrastructure to defer the DRM
    core initialization until all required devices have registered. The same
    infrastructure can potentially be used by any other driver that requires
    more than a single sub-device of the host1x module.

    Make the infrastructure more generic and keep only the DRM specific code
    in the DRM part of the driver. Eventually this will make it easy to move
    the DRM driver part back to the DRM subsystem.

    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • Expose the buffer objects, syncpoint and channel functionality in the
    public public header so that drivers can use them.

    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • This structure derives from host1x_client. DRM-specific fields are moved
    from host1x_client to this structure, so that host1x_client can remain
    agnostic of DRM.

    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • In preparation to support host1x clients other than DRM, move this
    header into a public location.

    Signed-off-by: Thierry Reding

    Thierry Reding