rpmsg/rpmsg.git
2 years agoremoteproc/k3-r5: cleanup k3_r5_cluster_rproc_exit() for split-mode rpmsg-ti-linux-4.14.y-intg
Suman Anna [Fri, 26 Oct 2018 23:57:42 +0000 (18:57 -0500)]
remoteproc/k3-r5: cleanup k3_r5_cluster_rproc_exit() for split-mode

The function k3_r5_cluster_rproc_exit() performs complimentary operations
to those performed in the k3_r5_cluster_rproc_init() function and is
responsible for unregistering and freeing the remoteprocs. This function
currently unregisters the remoteprocs in the same order as done in the
init function. Reorder this unregistration so that Core1 is unregistered
before Core0 in Split-mode, the behavior in LockStep mode is unchanged
since this mode has only one remoteproc registered.

Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoremoteproc/k3-r5: cleanup failure paths in k3_r5_cluster_rproc_init()
Suman Anna [Mon, 29 Oct 2018 21:48:47 +0000 (16:48 -0500)]
remoteproc/k3-r5: cleanup failure paths in k3_r5_cluster_rproc_init()

The k3_r5_cluster_rproc_init() function is not performing all the
required cleanup for failure paths if the MCU R5F cluster is configured
for Split-mode. Clean up the function so that all prior successful
operation on any of Core0 and/or Core1 are addressed upon any failure
on any core in both LockStep and Split modes. The changes also fixes
a minor cleanup bug introduced in commit 2419f21396b9 ("remoteproc/k3-r5:
fix the R5 boot state machine for multiple combinations").

Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoremoteproc: use a local copy for the name field
Suman Anna [Tue, 30 Oct 2018 18:06:34 +0000 (13:06 -0500)]
remoteproc: use a local copy for the name field

The current name field used in the remoteproc structure is simply
a pointer to a name field supplied during the rproc_alloc() call.
The pointer passed in by remoteproc drivers during registration is
typically a dev_name pointer, but it is possible that the pointer
will no longer remain valid if the devices themselves were created
at runtime like in the case of of_platform_populate(), and were
deleted upon any failures within the respective remoteproc driver
probe function.

So, allocate and maintain a local copy for this name field to
keep it agnostic of the logic used in the remoteproc drivers.

Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoremoteproc/k3-r5: fix missing put_device() in cluster OF init code
Suman Anna [Mon, 29 Oct 2018 23:36:00 +0000 (18:36 -0500)]
remoteproc/k3-r5: fix missing put_device() in cluster OF init code

The of_find_device_by_node() function returns a platform device for the
passed in device node and takes a reference to the embedded struct device
on success. This needs to be dropped to balance the reference count once
the platform device usage is done with. This is currently missing on each
of the R5F core nodes in the k3_r5_cluster_of_init() function and results
in a memory leak. Fix this properly.

Fixes: 8cdfa3a5d4b8 ("remoteproc/k3-r5: add a remoteproc driver for MCU (dual-R5F) subsystem")
Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoMerge branch 'platform-ti-linux-4.14.y' of git://git.ti.com/~rrnayak/ti-linux-kernel...
LCPD Auto Merger [Tue, 30 Oct 2018 11:09:51 +0000 (06:09 -0500)]
Merge branch 'platform-ti-linux-4.14.y' of git://git.ti.com/~rrnayak/ti-linux-kernel/platform-linux-feature-tree into ti-linux-4.14.y

TI-Feature: platform_base
TI-Tree: git://git.ti.com/~rrnayak/ti-linux-kernel/platform-linux-feature-tree.git
TI-Branch: platform-ti-linux-4.14.y

* 'platform-ti-linux-4.14.y' of git://git.ti.com/~rrnayak/ti-linux-kernel/platform-linux-feature-tree:
  crypto: omap-sham: split up data to multiple sg elements with huge data
  firmware: ti_sci: allow frequency change for disabled clocks by default

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agocrypto: omap-sham: split up data to multiple sg elements with huge data
Tero Kristo [Fri, 26 Oct 2018 15:08:02 +0000 (18:08 +0300)]
crypto: omap-sham: split up data to multiple sg elements with huge data

When using huge data amount, allocating free pages fails as the kernel
isn't able to process get_free_page requests larger than MAX_ORDER.
Also, the DMA subsystem has an inherent limitation that data size
larger than some 2MB can't be handled properly. In these cases,
split up the data instead to smaller requests so that the kernel
can allocate the data, and also so that the DMA driver can handle
the separate SG elements.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Bin Liu <b-liu@ti.com>
2 years agofirmware: ti_sci: allow frequency change for disabled clocks by default
Tero Kristo [Mon, 1 Oct 2018 12:43:33 +0000 (15:43 +0300)]
firmware: ti_sci: allow frequency change for disabled clocks by default

If a clock is disabled, its frequency should be allowed to change as
it is no longer in use. Add a flag towards this to the firmware clock
API handler routines.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agoMerge branch 'connectivity-ti-linux-4.14.y' of git://git.ti.com/connectivity-integrat...
LCPD Auto Merger [Thu, 25 Oct 2018 20:59:38 +0000 (15:59 -0500)]
Merge branch 'connectivity-ti-linux-4.14.y' of git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel into ti-linux-4.14.y

TI-Feature: connectivity
TI-Tree: git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel.git
TI-Branch: connectivity-ti-linux-4.14.y

* 'connectivity-ti-linux-4.14.y' of git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel:
  net: ethernet: ti: am65-cpsw-nuss: use round robin mode for cppi tx queues

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agoMerge branch 'rpmsg-ti-linux-4.14.y-intg' of git://git.ti.com/rpmsg/rpmsg into ti...
LCPD Auto Merger [Thu, 25 Oct 2018 18:29:37 +0000 (13:29 -0500)]
Merge branch 'rpmsg-ti-linux-4.14.y-intg' of git://git.ti.com/rpmsg/rpmsg into ti-linux-4.14.y

TI-Feature: rpmsg
TI-Tree: git://git.ti.com/rpmsg/rpmsg.git
TI-Branch: rpmsg-ti-linux-4.14.y-intg

* 'rpmsg-ti-linux-4.14.y-intg' of git://git.ti.com/rpmsg/rpmsg:
  remoteproc/k3-r5: fix the R5 boot state machine for multiple combinations
  remoteproc: add prepare and unprepare ops
  remoteproc/k3-r5: fix use after free with reserved memory regions

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agoremoteproc/k3-r5: fix the R5 boot state machine for multiple combinations
Suman Anna [Wed, 24 Oct 2018 22:15:03 +0000 (17:15 -0500)]
remoteproc/k3-r5: fix the R5 boot state machine for multiple combinations

The R5F processors on TI K3 SoCs require a specific sequence for booting
and shutting down the processors. This sequence is also dependent on the
mode (LockStep or Split) the R5F cluster is configured for. The R5F cores
have a Memory Protection Unit (MPU) that has a default configuration that
does not allow the cores to run out of DDR out of reset. This is resolved
by using the TCMs for boot-strapping code that applies the appropriate
executable permissions on desired DDR memory. The loading into the TCMs
requires that the resets be released first with the cores in halted state.
The Power Sleep Controller (PSC) module on K3 SoCs requires that the cores
be in WFI/WFE states with no active bus transactions before the cores can
be put back into reset.

The existing code uses an asymmetric logic for asserting and deasserting
the resets to satisfy the above conditions. The resets are released before
the rproc is registered (during probe), with the cores unhalted in .start()
ops. The cores are halted, resets asserted and released again in .stop()
ops to allow the remoteprocs to be started and stopped repeatedly using
the sysfs 'state' file. The resets are also asserted during remove, and
the deassertion logic in .stop() is done conditionally only if it not
invoked through the remove path. This covers the repeated insmod/rmmod
or sysfs stop/start sequences. This however causes a rproc boot hang
with sysfs stop, rmmod followed by an insmod, since the cores are not
in WFE/WFI during rmmod.

Fix the above issue and the asymmetrical usage properly leveraging the
newly introduce .prepare() and .unprepare() ops in the remoteproc core.
The .prepare() ops is invoked before any loading, and the .unprepare()
ops is invoked after the remoteproc resource cleanup. The R5F core resets
are deasserted in .prepare() and asserted in .unprepare() eliminating the
need for the previous complex logic.

Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoremoteproc: add prepare and unprepare ops
Loic Pallardy [Thu, 1 Mar 2018 16:23:55 +0000 (17:23 +0100)]
remoteproc: add prepare and unprepare ops

On some SoC architecture, it is needed to enable HW like
clock, bus, regulator, memory region... before loading
co-processor firmware.

This patch introduces prepare and unprepare ops to execute
platform specific function before firmware loading and after
stop execution.

Signed-off-by: Loic Pallardy <loic.pallardy@st.com>
[s-anna@ti.com: cherry-pick linux-remoteproc patchwork id '10251897']
Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoremoteproc/k3-r5: fix use after free with reserved memory regions
Suman Anna [Wed, 24 Oct 2018 21:05:28 +0000 (16:05 -0500)]
remoteproc/k3-r5: fix use after free with reserved memory regions

The commit 6a28d115b972 ("remoteproc/k3-r5: add support for fixed reserved
memory regions") has replaced the of_reserved_mem_device_init/release()
functions with newer k3_r5_reserved_mem_init/exit() functions that include
the previous functionality. These new functions however have references
to the remoteproc structures, and the k3_r5_reserved_mem_exit() function
is currently invoked after the corresponding remoteproc is freed. This
can cause potential kernel crashes by accessing freed memory. Fix this
properly.

Fixes: 6a28d115b972 ("remoteproc/k3-r5: add support for fixed reserved memory regions")
Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoMerge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel...
LCPD Auto Merger [Thu, 25 Oct 2018 12:29:51 +0000 (07:29 -0500)]
Merge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree into ti-linux-4.14.y

TI-Feature: audio-display
TI-Tree: git@git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree.git
TI-Branch: audio-display-ti-linux-4.14.y

* 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree:
  drm/tidss: Fix copy-paste error in fb uv-plane address calculations

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agodrm/tidss: Fix copy-paste error in fb uv-plane address calculations
Jyri Sarha [Thu, 25 Oct 2018 11:52:05 +0000 (14:52 +0300)]
drm/tidss: Fix copy-paste error in fb uv-plane address calculations

The offset calculation of frame buffers uv-plane were wrongly using
the the first planes cpp and pitches values. This patch fixes the
problem.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agoMerge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel...
LCPD Auto Merger [Wed, 24 Oct 2018 12:53:34 +0000 (07:53 -0500)]
Merge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree into ti-linux-4.14.y

TI-Feature: audio-display
TI-Tree: git@git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree.git
TI-Branch: audio-display-ti-linux-4.14.y

* 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree:
  drm/tidss: The CRTC state needs to be written to HW also in enable()

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agodrm/tidss: The CRTC state needs to be written to HW also in enable()
Jyri Sarha [Wed, 24 Oct 2018 08:43:34 +0000 (11:43 +0300)]
drm/tidss: The CRTC state needs to be written to HW also in enable()

The CRTC properties were written to HW only in tidss_crtc_atomic_flush(),
which is skipped if the CRTC is not yet enabled. Because of this we need
to set the video port state also in tidss_crtc_atomic_enable().

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agoMerge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel...
LCPD Auto Merger [Wed, 24 Oct 2018 08:27:08 +0000 (03:27 -0500)]
Merge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree into ti-linux-4.14.y

TI-Feature: audio-display
TI-Tree: git@git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree.git
TI-Branch: audio-display-ti-linux-4.14.y

* 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree:
  drm/omap: omap_wb_m2m: add cropping parameter support
  drm/omap: omap_wb_m2m: g/s_selection ioctl always fails
  drm/omap: omap_wb: remove unneeded vb2_dma_addr_plus_data_offset()

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agoMerge branch 'for18.05.00' of git.ti.com:~bparrot/ti-linux-kernel/bp-ti-linux into...
Jyri Sarha [Wed, 24 Oct 2018 07:25:50 +0000 (10:25 +0300)]
Merge branch 'for18.05.00' of git.ti.com:~bparrot/ti-linux-kernel/bp-ti-linux into audio-display-ti-linux-4.14.y

OMAP-WB fixes 2018.05

* 'for18.05.00' of git.ti.com:~bparrot/ti-linux-kernel/bp-ti-linux:
  drm/omap: omap_wb_m2m: add cropping parameter support
  drm/omap: omap_wb_m2m: g/s_selection ioctl always fails
  drm/omap: omap_wb: remove unneeded vb2_dma_addr_plus_data_offset()

2 years agodrm/omap: omap_wb_m2m: add cropping parameter support
Benoit Parrot [Fri, 19 Oct 2018 19:55:07 +0000 (14:55 -0500)]
drm/omap: omap_wb_m2m: add cropping parameter support

Implement support for cropping functionality.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
2 years agodrm/omap: omap_wb_m2m: g/s_selection ioctl always fails
Benoit Parrot [Wed, 17 Oct 2018 21:24:36 +0000 (16:24 -0500)]
drm/omap: omap_wb_m2m: g/s_selection ioctl always fails

When checking the v4l2_selection.type parameter the driver was checking
against either V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE or
V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE values but the proper values to check
against would be either V4L2_BUF_TYPE_VIDEO_OUTPUT or
V4L2_BUF_TYPE_VIDEO_CAPTURE.

This was causing the g/s_selection ioctls to always return -EINVAL.

In addition a copy/paste mistake was having the driver validate both
V4L2_SEL_TGT_COMPOSE and V4L2_SEL_TGT_CROP operation against
V4L2_BUF_TYPE_VIDEO_OUTPUT. But for the proper validation
V4L2_SEL_TGT_COMPOSE operations are valid on
V4L2_BUF_TYPE_VIDEO_CAPTURE type while V4L2_SEL_TGT_CROP operations are
valid on V4L2_BUF_TYPE_VIDEO_OUTPUT type.

This was causing s_selection ioctl to also return -EINVAL.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
2 years agodrm/omap: omap_wb: remove unneeded vb2_dma_addr_plus_data_offset()
Benoit Parrot [Fri, 19 Oct 2018 14:59:47 +0000 (09:59 -0500)]
drm/omap: omap_wb: remove unneeded vb2_dma_addr_plus_data_offset()

vb2_dma_addr_plus_data_offset() was originally created for the VPE
driver as a hack to handle NV12 frames and make them look like 2 plane
buffer by mis-using the .data_offset to point to the beginning of the UV
part of the image for the second plane. However .data_offset was meant
to be used by userspace using frame buffer which would contain an info
header where the actual video data starts. Sometime after kernel v3.14
the V4L2 framework started to check that the .data_offset could not be
larger than the .bytesused, meaning .data_offset could not indicate an
offset outside of the current buffer. The V4L2 framework nows issue WARN
if data_offset is anything but zero.

Since .data_offset is forced to zero by the framework then this change
does not change the code behavior.

Both VPE and OMAP WB-M2M driver were updated to properly deal NV12
format but the above helper function was not removed from the OMAP WB
M2M driver when we removed it from VPE. We are now correcting that
mistake.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
2 years agoMerge branch 'rpmsg-ti-linux-4.14.y-intg' of git://git.ti.com/rpmsg/rpmsg into ti...
LCPD Auto Merger [Fri, 19 Oct 2018 21:26:34 +0000 (16:26 -0500)]
Merge branch 'rpmsg-ti-linux-4.14.y-intg' of git://git.ti.com/rpmsg/rpmsg into ti-linux-4.14.y

TI-Feature: rpmsg
TI-Tree: git://git.ti.com/rpmsg/rpmsg.git
TI-Branch: rpmsg-ti-linux-4.14.y-intg

* 'rpmsg-ti-linux-4.14.y-intg' of git://git.ti.com/rpmsg/rpmsg:
  arm64: dts: ti: k3-am654-base-board: split the R5F memory regions
  remoteproc/k3-r5: add support for fixed reserved memory regions
  dt-bindings: remoteproc: k3-r5f: Update bindings for multiple memory regions
  of: reserved_mem: Accessor for acquiring reserved_mem

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agoarm64: dts: ti: k3-am654-base-board: split the R5F memory regions
Suman Anna [Wed, 10 Oct 2018 01:45:21 +0000 (20:45 -0500)]
arm64: dts: ti: k3-am654-base-board: split the R5F memory regions

The commit 44dc2a65ba1d ("arm64: dts: ti: k3-am654-evm: Add DDR carveout
memory nodes for R5Fs") adds two carveout reserved memory nodes for each
of the MCU R5F remote processor devices. Split each of these regions into
two different regions for the all the TI K3 AM65x boards to support R5F
firmwares without any RSC_CARVEOUT entries in their resource tables. The
first region will be used as the DMA pool for the rproc devices, and the
second region will furnish the static carveout regions for the firmware
memory.

Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoremoteproc/k3-r5: add support for fixed reserved memory regions
Suman Anna [Tue, 9 Oct 2018 20:57:02 +0000 (15:57 -0500)]
remoteproc/k3-r5: add support for fixed reserved memory regions

The R5F remote processors do not have an MMU, and so require fixed
memory carveout regions matching the firmware image addresses. The
R5F remoteproc driver currently relies on a single memory region
provided to the device and uses it to dynamically allocate memory
for both the vrings/vring buffers as well as for the firmware image
segments. The latter is done through matching RSC_CARVEOUT entries.
This is not a scalable solution though as there is no way to ensure
the allocated memories will match the exact firmware image addresses.

Enhance the current R5F remoteproc driver to remove this limitation.
Support for this is added by mandating multiple memory regions to be
attached to the remoteproc device. The first memory region will be
used to serve as the DMA pool for all dynamic allocations like the
vrings and vring buffers. The remaining memory regions are mapped
into the kernel at device probe time, and are used to provide address
translations for firmware image segments without the need for any
RSC_CARVEOUT entries. Any firmware image using memory outside of
the supplied reserved memory carveout regions will be errored out.

NOTE:
The R5F remoteproc driver currently does not support the Region
Address Translator allowing the R5F cores to use a 32-bit processor
address for leveraging a physical address > 32-bit address. All
the reserved memory regions are therefore expected to be using
memory regions within the first 2 GB.

Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agodt-bindings: remoteproc: k3-r5f: Update bindings for multiple memory regions
Suman Anna [Wed, 10 Oct 2018 20:13:12 +0000 (15:13 -0500)]
dt-bindings: remoteproc: k3-r5f: Update bindings for multiple memory regions

The R5F remote processors do not have an MMU, and so require fixed memory
carveout regions matching the firmware image addresses. Update the bindings
to require more than one memory region, with the first memory region used
for DMA allocations at runtime. The remaining memory regions are reserved
and are used for the loading and running of the R5F remote processors.

The AM65x example has also been updated accordingly.

Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoof: reserved_mem: Accessor for acquiring reserved_mem
Bjorn Andersson [Wed, 11 Oct 2017 05:08:54 +0000 (22:08 -0700)]
of: reserved_mem: Accessor for acquiring reserved_mem

In some cases drivers referencing a reserved-memory region might want to
remap the entire region, but when defining the reserved-memory by "size"
the client driver has no means to know the associated base address of
the reserved memory region.

This patch adds an accessor for such drivers to acquire a handle to
their associated reserved-memory for this purpose.

A complicating factor for the implementation is that the reserved_mem
objects are created from the flattened DeviceTree, as such we can't
use the device_node address for comparison. Fortunately the name of the
node will be used as "name" of the reserved_mem and will be used when
building the full_name, so we can compare the "name" with the basename
of the full_name to find the match.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
[s-anna@ti.com: cherry-pick commit 'eb297bc716ec' from v4.15]
Signed-off-by: Suman Anna <s-anna@ti.com>
2 years agoMerge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel...
LCPD Auto Merger [Fri, 19 Oct 2018 13:27:31 +0000 (08:27 -0500)]
Merge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree into ti-linux-4.14.y

TI-Feature: audio-display
TI-Tree: git@git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree.git
TI-Branch: audio-display-ti-linux-4.14.y

* 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree:
  drm/tidss: dispc7: Remove unneeded semicolon at the end of switch-block

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agodrm/tidss: dispc7: Remove unneeded semicolon at the end of switch-block
Jyri Sarha [Fri, 19 Oct 2018 10:15:35 +0000 (13:15 +0300)]
drm/tidss: dispc7: Remove unneeded semicolon at the end of switch-block

Remove unneeded semicolon at the end of the newly added switch-case-block.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
2 years agoMerge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel...
LCPD Auto Merger [Thu, 18 Oct 2018 21:26:54 +0000 (16:26 -0500)]
Merge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree into ti-linux-4.14.y

TI-Feature: audio-display
TI-Tree: git@git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree.git
TI-Branch: audio-display-ti-linux-4.14.y

* 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree:
  drm/tidss: dispc7: Remove double spaces from scaling code
  drm/tidss: dispc7: Simplify assignment of VP POL FREQ bits in vp_enable()
  drm/tidss: Add TI custom "background" color property and functionality
  drm/tidss: Add TI custom transparency key properties and functionality
  drm/tidss: dispc7: Add conversion modes to argb8888_to_argb12121212()
  drm/tidss: Add skeleton code for custom crtc properties
  drm/tidss: Add missing dispc_ops->vp_setup() call to crtc_atomic_flush()
  drm/tidss: dispc7: Statically assign OLDI and DPI bus types to vp
  drm/tidss: Add missing static to dispc[67]_plane_feat() functions
  drm/tidss: dispc7: Drop entry print in dispc7_init() to dbg level
  drm/tidss: dispc7: Cleanup OVR handling

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agoMerge branch '2018.05LTS-tidss' into audio-display-ti-linux-4.14.y
Jyri Sarha [Thu, 18 Oct 2018 20:47:18 +0000 (23:47 +0300)]
Merge branch '2018.05LTS-tidss' into audio-display-ti-linux-4.14.y

drm/tidss changes for 2018.05

* 2018.05LTS-tidss:
  drm/tidss: dispc7: Remove double spaces from scaling code
  drm/tidss: dispc7: Simplify assignment of VP POL FREQ bits in vp_enable()
  drm/tidss: Add TI custom "background" color property and functionality
  drm/tidss: Add TI custom transparency key properties and functionality
  drm/tidss: dispc7: Add conversion modes to argb8888_to_argb12121212()
  drm/tidss: Add skeleton code for custom crtc properties
  drm/tidss: Add missing dispc_ops->vp_setup() call to crtc_atomic_flush()
  drm/tidss: dispc7: Statically assign OLDI and DPI bus types to vp
  drm/tidss: Add missing static to dispc[67]_plane_feat() functions
  drm/tidss: dispc7: Drop entry print in dispc7_init() to dbg level
  drm/tidss: dispc7: Cleanup OVR handling

2 years agodrm/tidss: dispc7: Remove double spaces from scaling code
Jyri Sarha [Fri, 12 Oct 2018 07:29:53 +0000 (10:29 +0300)]
drm/tidss: dispc7: Remove double spaces from scaling code

Remove double spaces from scaling code debug print command lines.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: dispc7: Simplify assignment of VP POL FREQ bits in vp_enable()
Jyri Sarha [Tue, 9 Oct 2018 21:12:19 +0000 (00:12 +0300)]
drm/tidss: dispc7: Simplify assignment of VP POL FREQ bits in vp_enable()

Replace if statements that assign DISPC_VP_POL_FREQ bits according to
struct drm_display_mode flags with more compact logical expressions.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: Add TI custom "background" color property and functionality
Jyri Sarha [Thu, 4 Oct 2018 10:21:57 +0000 (13:21 +0300)]
drm/tidss: Add TI custom "background" color property and functionality

Add TI custom "background" color property and functionality for both
DSS6 and DSS7. The property should work the same way as the same
property in omapdrm.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: Add TI custom transparency key properties and functionality
Jyri Sarha [Thu, 11 Oct 2018 11:46:36 +0000 (14:46 +0300)]
drm/tidss: Add TI custom transparency key properties and functionality

Add TI custom transparency key properties and functionality for
DSS7. The properties should work the same way as the same
properties in omapdrm.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: dispc7: Add conversion modes to argb8888_to_argb12121212()
Jyri Sarha [Tue, 16 Oct 2018 16:25:18 +0000 (19:25 +0300)]
drm/tidss: dispc7: Add conversion modes to argb8888_to_argb12121212()

Add selection for min, max, and replicate conversion modes for 8-bit
to 12-bit color format conversion. With the mode the caller can select
how the four least significant bits are generated.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: Add skeleton code for custom crtc properties
Jyri Sarha [Wed, 3 Oct 2018 13:32:44 +0000 (16:32 +0300)]
drm/tidss: Add skeleton code for custom crtc properties

This patch does not add any working functionality, just callbacks
needed for custom properties.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: Add missing dispc_ops->vp_setup() call to crtc_atomic_flush()
Jyri Sarha [Thu, 11 Oct 2018 09:08:31 +0000 (12:08 +0300)]
drm/tidss: Add missing dispc_ops->vp_setup() call to crtc_atomic_flush()

The tidss->dispc_ops->vp_setup() should always be called in
tidss_crtc_atomic_flush(), even if the current implementation works
well without it. This patch adds the call.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: dispc7: Statically assign OLDI and DPI bus types to vp
Jyri Sarha [Wed, 19 Sep 2018 16:57:49 +0000 (19:57 +0300)]
drm/tidss: dispc7: Statically assign OLDI and DPI bus types to vp

This patch assigns statically OLDI and DPI bus types to video ports in
struct dispc7_features. Actually this was done already before, but
there was still some residual code allowing dynamic VP bus type
configuration. This patch removes all traces of the dynamic VP bus
type code.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agoMerge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel...
LCPD Auto Merger [Thu, 18 Oct 2018 13:27:36 +0000 (08:27 -0500)]
Merge branch 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree into ti-linux-4.14.y

TI-Feature: audio-display
TI-Tree: git@git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree.git
TI-Branch: audio-display-ti-linux-4.14.y

* 'audio-display-ti-linux-4.14.y' of git.ti.com:~jyrisarha/ti-linux-kernel/jyrisarhas-audio-video-linux-feature-tree:
  arm64: dts: Add k3-am654-evm-tc358876.dtso
  arm64: dts: am654-base-board: add mcu_i2c0 pinmux
  ti_config_fragments: audio_display: add TC358767
  drm/omap: fix missing scaler pixel fmt limitations
  drm/omap: DMM: Fix interrupt request/free sequence during probe/remove
  drm/omap: fbdev: avoid double initializer entry
  drm/omap: fbdev: use 'screen_buffer' field
  drm/omap: acx565akm:  use __be32 when reading status

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agoMerge branch 'ti/4.14-pull' of https://bitbucket.itg.ti.com/scm/~a0400822/linux into...
Jyri Sarha [Thu, 18 Oct 2018 09:34:38 +0000 (12:34 +0300)]
Merge branch 'ti/4.14-pull' of https://bitbucket.itg.ti.com/scm/~a0400822/linux into audio-display-ti-linux-4.14.y

2018.05 dss patches

* 'ti/4.14-pull' of https://bitbucket.itg.ti.com/scm/~a0400822/linux:
  arm64: dts: Add k3-am654-evm-tc358876.dtso
  arm64: dts: am654-base-board: add mcu_i2c0 pinmux
  ti_config_fragments: audio_display: add TC358767
  drm/omap: fix missing scaler pixel fmt limitations
  drm/omap: fbdev: avoid double initializer entry
  drm/omap: fbdev: use 'screen_buffer' field
  drm/omap: acx565akm:  use __be32 when reading status

2 years agoMerge branch 'peter/ti-linux-4.14.y/topic/display' of https://github.com/omap-audio...
Jyri Sarha [Thu, 18 Oct 2018 09:33:20 +0000 (12:33 +0300)]
Merge branch 'peter/ti-linux-4.14.y/topic/display' of https://github.com/omap-audio/linux-audio into audio-display-ti-linux-4.14.y

2018.05 - Fix DMM crash on module removal

* 'peter/ti-linux-4.14.y/topic/display' of https://github.com/omap-audio/linux-audio:
  drm/omap: DMM: Fix interrupt request/free sequence during probe/remove

2 years agoarm64: dts: Add k3-am654-evm-tc358876.dtso
Tomi Valkeinen [Fri, 5 Oct 2018 10:26:16 +0000 (13:26 +0300)]
arm64: dts: Add k3-am654-evm-tc358876.dtso

Add support for Toshiba TC358876 based expansion board for AM6 EVM. The
expansion board has a DisplayPort 1.1 output with 2 lanes.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agoarm64: dts: am654-base-board: add mcu_i2c0 pinmux
Tomi Valkeinen [Fri, 5 Oct 2018 10:25:38 +0000 (13:25 +0300)]
arm64: dts: am654-base-board: add mcu_i2c0 pinmux

Add mcu_i2c0 pinmux.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Sekhar Nori <nsekhar@ti.com>
2 years agoti_config_fragments: audio_display: add TC358767
Tomi Valkeinen [Thu, 11 Oct 2018 11:07:30 +0000 (14:07 +0300)]
ti_config_fragments: audio_display: add TC358767

Enable TC358767 DisplayPort bridge.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/omap: fix missing scaler pixel fmt limitations
Tomi Valkeinen [Tue, 16 Oct 2018 10:22:09 +0000 (13:22 +0300)]
drm/omap: fix missing scaler pixel fmt limitations

OMAP2 and OMAP3/AM4 have limitations with the scaler:
- OMAP2 can only scale XRGB8888
- OMAP3/AM4 can only scale XRGB8888, RGB565, YUYV and UYVY

The driver doesn't check these limitations, which leads to sync-lost
floods.

This patch adds a check for the pixel formats when scaling.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/omap: DMM: Fix interrupt request/free sequence during probe/remove
Peter Ujfalusi [Fri, 21 Sep 2018 13:06:00 +0000 (16:06 +0300)]
drm/omap: DMM: Fix interrupt request/free sequence during probe/remove

The interrupts should be enabled after the driver initialization to avoid
early interrupts while the driver is not yet ready to handle them.

On removal the interrupts must be disabled before other resources are
released, freed up.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agoMerge branch 'platform-ti-linux-4.14.y' of git://git.ti.com/~rrnayak/ti-linux-kernel...
LCPD Auto Merger [Tue, 16 Oct 2018 19:27:52 +0000 (14:27 -0500)]
Merge branch 'platform-ti-linux-4.14.y' of git://git.ti.com/~rrnayak/ti-linux-kernel/platform-linux-feature-tree into ti-linux-4.14.y

TI-Feature: platform_base
TI-Tree: git://git.ti.com/~rrnayak/ti-linux-kernel/platform-linux-feature-tree.git
TI-Branch: platform-ti-linux-4.14.y

* 'platform-ti-linux-4.14.y' of git://git.ti.com/~rrnayak/ti-linux-kernel/platform-linux-feature-tree: (39 commits)
  ti_config_fragments: v8_baseport: enable K3 thermal
  soc/dmaengine: ti: Move cppi5.h header under dma as ti-cppi5.h
  dmaengine: ti: k3-udma: Set the supported metadata modes
  dmaengine: Update the descriptor metadata support as per mainline
  dmaengine: ti: k3-udma: Do not set device_attach_metadata callback
  dmaengine: ti: k3-udma: Remove unnecessary dev_width <-> elsize conversions
  soc: ti: cppi5: Alignment fixes
  dmaengine: ti: k3-udma: Use the cppi5 helpers for TR descriptor setup
  soc: ti: cppi5: Update the TR descriptor init helper
  soc: ti: cppi5: Rename cppi5_desc_is_epib_present to cppi5_hdesc_epib_present
  soc: ti: cppi5: Collect generic Packet/TR descriptor helpers in one place
  dmaengine: ti: k3-udma: Use cppi5_tr_calc_size() from cppi5.h
  soc: ti: cppi5: Fix TR packet size calculation
  soc: ti: cppi5: Move TR inline functions after the definition
  dmaengine: ti: k3-udma: Use the cppi5_desc_hdr_t instead cppi50_tr_req_desc
  dmaengine: ti: k3-udma: Fix (again) the TR descriptor size calculation
  dmaengine: ti: k3-udma: Rename slave_thread_id to remote_thread_id
  soc: ti: Add header file for k3-navss-desc-pool (tree-wide)
  soc: ti: cppi5: Change prefixes from knav_udmap_ to cppi5_ (tree-wide)
  crypto: sa2ul: Omit error print for DMA channel in case of deferred probe
  ...

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agodrm/tidss: Add missing static to dispc[67]_plane_feat() functions
Jyri Sarha [Tue, 9 Oct 2018 08:33:28 +0000 (11:33 +0300)]
drm/tidss: Add missing static to dispc[67]_plane_feat() functions

The implementation of dispc6_plane_feat() and dispc7_plane_feat()
without declaration trigger sparse warnings. This commit fixes them.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: dispc7: Drop entry print in dispc7_init() to dbg level
Jyri Sarha [Thu, 4 Oct 2018 10:31:04 +0000 (13:31 +0300)]
drm/tidss: dispc7: Drop entry print in dispc7_init() to dbg level

Drop entry print in dispc7_init() from info to dbg level.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agodrm/tidss: dispc7: Cleanup OVR handling
Jyri Sarha [Wed, 19 Sep 2018 12:43:29 +0000 (15:43 +0300)]
drm/tidss: dispc7: Cleanup OVR handling

Implement dispc7_ovr_set_plane() and dispc7_ovr_enable_plane() and use
them in dispc7_plane_setup() and dispc7_plane_enable() instead of
having the ovr-code inline.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2 years agoti_config_fragments: v8_baseport: enable K3 thermal
Tero Kristo [Mon, 15 Oct 2018 12:54:33 +0000 (15:54 +0300)]
ti_config_fragments: v8_baseport: enable K3 thermal

K3 thermal driver is disabled by default, so enable it.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Acked-by: Keerthy <j-keerthy@ti.com>
Tested-by: Keerthy <j-keerthy@ti.com>
2 years agoMerge branch 'connectivity-ti-linux-4.14.y' of git://git.ti.com/connectivity-integrat...
LCPD Auto Merger [Tue, 16 Oct 2018 10:40:03 +0000 (05:40 -0500)]
Merge branch 'connectivity-ti-linux-4.14.y' of git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel into ti-linux-4.14.y

TI-Feature: connectivity
TI-Tree: git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel.git
TI-Branch: connectivity-ti-linux-4.14.y

* 'connectivity-ti-linux-4.14.y' of git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel:
  net: ti: icssg_prueth: fix command done check and cancel command
  net: ti: icssg_prueth: clear SMEM portion for the slice
  net: ti: icssg_prueth: Add ethtool support
  net: ti: icssg_prueth: Follow proper shutdown sequence
  net: ti: icssg_prueth: Support Promiscuous mode properly
  net: ti: icssg: Add classifier helpers
  net: ti: icssg_prueth: Increase port buffer in MSMC
  arm64: dts: ti: Add mii-g-rt to prueth nodes
  dt-bindings: net: ti,icssg-prueth: Add mii-g-rt property

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
2 years agonet: ethernet: ti: am65-cpsw-nuss: use round robin mode for cppi tx queues
Grygorii Strashko [Sat, 22 Sep 2018 02:07:16 +0000 (21:07 -0500)]
net: ethernet: ti: am65-cpsw-nuss: use round robin mode for cppi tx queues

By default Linux network stack does not assume the multiqueue network
device works in fixed priority mode. As result, it will try to dispatch
packets between HW queues fairly - basing on skb hash (and XPS map if
enabled). So, by default, MCU CPSW TX statistic looks like below:

     tx_pri0: 14
     tx_pri1: 2
     tx_pri2: 0
     tx_pri3: 12
     tx_pri4: 12
     tx_pri5: 0
     tx_pri6: 306127
     tx_pri7: 0

From another side, MCU CPSW HW processes TX queues in fixed priority mode
(7 - high prio) and this is does not corresponds to what Linux network
stack expects as some packets might be delayed.

To fix this switch MCU CPSW CPPI interface to Round Robin mode
(CPPI_P0_Pri_Ctl.p0_rx_ptype) by default, and implement the same in driver
for TX completion queues processing. Also, introduce netdev private flag
"p0-rx-ptype-rrobin", so switch between Round Robin and Fixed priority
modes:

 # ethtool --show-priv-flags eth0
 Private flags for eth0:
 p0-rx-ptype-rrobin: on

 # ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off

Fixed priority can be used with multiq, prio and mqprio qdisc's.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agosoc/dmaengine: ti: Move cppi5.h header under dma as ti-cppi5.h
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:24 +0000 (12:56 +0300)]
soc/dmaengine: ti: Move cppi5.h header under dma as ti-cppi5.h

The CPPI5 contains the defines, types and helpers to handle DMA descriptors
used by UDMA, it is better placed under dma than soc.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Set the supported metadata modes
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:23 +0000 (12:56 +0300)]
dmaengine: ti: k3-udma: Set the supported metadata modes

The driver supports both DESC_METADATA_CLIENT and DESC_METADATA_EMBEDDED
mode of accessing to metadata.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: Update the descriptor metadata support as per mainline
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:22 +0000 (12:56 +0300)]
dmaengine: Update the descriptor metadata support as per mainline

To be aligned with what we have ended up in upstream to help client driver
upstreaming.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Do not set device_attach_metadata callback
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:21 +0000 (12:56 +0300)]
dmaengine: ti: k3-udma: Do not set device_attach_metadata callback

It is deprecated and going to be removed

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Remove unnecessary dev_width <-> elsize conversions
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:20 +0000 (12:56 +0300)]
dmaengine: ti: k3-udma: Remove unnecessary dev_width <-> elsize conversions

There is no point of converting dma_slave_buswidth to elsize, then when
needed convert elsize to number of bytes.
The dma_slave_buswidth is telling the number of bytes.

Furthermore for Static TR we can save code to do the dma_slave_buswidth to
elsize conversion when configuring the static_tr.

Lastly we can remove the whole elsize related defines and struct.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: cppi5: Alignment fixes
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:19 +0000 (12:56 +0300)]
soc: ti: cppi5: Alignment fixes

To get uniform look for the header file.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Use the cppi5 helpers for TR descriptor setup
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:18 +0000 (12:56 +0300)]
dmaengine: ti: k3-udma: Use the cppi5 helpers for TR descriptor setup

Remove the custom code for setting up the TR descriptor and use the cppi5
header's helpers to do the same.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: cppi5: Update the TR descriptor init helper
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:17 +0000 (12:56 +0300)]
soc: ti: cppi5: Update the TR descriptor init helper

The implementation was obsolete.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: cppi5: Rename cppi5_desc_is_epib_present to cppi5_hdesc_epib_present
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:16 +0000 (12:56 +0300)]
soc: ti: cppi5: Rename cppi5_desc_is_epib_present to cppi5_hdesc_epib_present

EPIB is only supported in packet mode.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: cppi5: Collect generic Packet/TR descriptor helpers in one place
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:15 +0000 (12:56 +0300)]
soc: ti: cppi5: Collect generic Packet/TR descriptor helpers in one place

Move the helpers applicable for bot packet and TR descriptors in one place
and rename them if needed - causes tree-wide changes.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Use cppi5_tr_calc_size() from cppi5.h
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:14 +0000 (12:56 +0300)]
dmaengine: ti: k3-udma: Use cppi5_tr_calc_size() from cppi5.h

No need to duplicate the TR packet size calculation.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: cppi5: Fix TR packet size calculation
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:13 +0000 (12:56 +0300)]
soc: ti: cppi5: Fix TR packet size calculation

The correct way to calculate size needed for a given TR descriptor:

1 x tr_size : the first 16 bytes is used by the packet info block +
tr_count x tr_size : Transfer Request Records +
tr_count x sizeof(struct cppi5_tr_resp) : Transfer Response Records

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: cppi5: Move TR inline functions after the definition
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:12 +0000 (12:56 +0300)]
soc: ti: cppi5: Move TR inline functions after the definition

We should have the definitions (defines, structures) before the helper
functions.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Use the cppi5_desc_hdr_t instead cppi50_tr_req_desc
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:11 +0000 (12:56 +0300)]
dmaengine: ti: k3-udma: Use the cppi5_desc_hdr_t instead cppi50_tr_req_desc

Use the cppi5_desc_hdr_t from the cppi5.h for the TR packet header.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Fix (again) the TR descriptor size calculation
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:10 +0000 (12:56 +0300)]
dmaengine: ti: k3-udma: Fix (again) the TR descriptor size calculation

We must not count the size of the packet info block (packet header) as it
is actually covered by the extra tr we count with the number of TRs.

Add a comment to make sure that I will not change this again.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Rename slave_thread_id to remote_thread_id
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:09 +0000 (12:56 +0300)]
dmaengine: ti: k3-udma: Rename slave_thread_id to remote_thread_id

It is the thread id of the remote end of the PSI-L link from the point of
UDMA.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: Add header file for k3-navss-desc-pool (tree-wide)
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:08 +0000 (12:56 +0300)]
soc: ti: Add header file for k3-navss-desc-pool (tree-wide)

Remove the descriptor pool functions from the cppi5 header and move them
to separate header file as they are not strictly related.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: cppi5: Change prefixes from knav_udmap_ to cppi5_ (tree-wide)
Peter Ujfalusi [Fri, 12 Oct 2018 09:56:07 +0000 (12:56 +0300)]
soc: ti: cppi5: Change prefixes from knav_udmap_ to cppi5_ (tree-wide)

To be aligned with the file name and the content (we are describing CPPI5
descriptors).

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agocrypto: sa2ul: Omit error print for DMA channel in case of deferred probe
Peter Ujfalusi [Tue, 11 Sep 2018 09:58:46 +0000 (12:58 +0300)]
crypto: sa2ul: Omit error print for DMA channel in case of deferred probe

Do not print error message if the DMA channel request fails becase of
deferred probing.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agoarm64: dts: k3-am6: Remove the ghost psil node
Peter Ujfalusi [Fri, 5 Oct 2018 12:15:22 +0000 (15:15 +0300)]
arm64: dts: k3-am6: Remove the ghost psil node

The psil node is no longer needed. The driver has been removed and the
thread management should be done via the DMA driver.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agosoc: ti: k3: navss: Remove the psil driver
Peter Ujfalusi [Fri, 5 Oct 2018 12:15:21 +0000 (15:15 +0300)]
soc: ti: k3: navss: Remove the psil driver

It is no longer needed.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agoti_config_fragments: v8_baseport: Drop CONFIG_TI_K3_NAVSS_PSILCFG
Peter Ujfalusi [Fri, 5 Oct 2018 12:15:20 +0000 (15:15 +0300)]
ti_config_fragments: v8_baseport: Drop CONFIG_TI_K3_NAVSS_PSILCFG

The driver is no longer needed to be compiled.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: Kconfig: Drop TI_K3_NAVSS_PSILCFG for k3-udma
Peter Ujfalusi [Fri, 5 Oct 2018 12:15:19 +0000 (15:15 +0300)]
dmaengine: ti: Kconfig: Drop TI_K3_NAVSS_PSILCFG for k3-udma

The PSIL driver is no longer needed by the k3-udma driver.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: glue: Switch to use the local PSI-L thread API
Peter Ujfalusi [Fri, 5 Oct 2018 12:15:18 +0000 (15:15 +0300)]
dmaengine: ti: k3-udma: glue: Switch to use the local PSI-L thread API

Stop using the psil driver for thread pairing/unpairing.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Handle the PSI-L pairing/unpairing locally
Peter Ujfalusi [Fri, 5 Oct 2018 12:15:17 +0000 (15:15 +0300)]
dmaengine: ti: k3-udma: Handle the PSI-L pairing/unpairing locally

Use directly the tisci API to handle the pairing/unpairing instead of the
psil driver's wrappers for the messages.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agoarm64: dts: k3-am6: Add tisci-dev-id to NAVSS nodes
Peter Ujfalusi [Fri, 5 Oct 2018 12:15:16 +0000 (15:15 +0300)]
arm64: dts: k3-am6: Add tisci-dev-id to NAVSS nodes

The dev-id 118 and 119 is referred in the sysfw documentation as NAVSS
device id and it is used by the PSI-L pairing API.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodt-bindings: dma: ti: k3-udma: Update for PSI-L thread management
Peter Ujfalusi [Fri, 5 Oct 2018 12:15:15 +0000 (15:15 +0300)]
dt-bindings: dma: ti: k3-udma: Update for PSI-L thread management

Remove the ti,psi-proxy from the documentation and update it to clarify
the thread handling.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Mark the TR descriptor as 64 byte aligned
Peter Ujfalusi [Fri, 5 Oct 2018 17:55:03 +0000 (17:55 +0000)]
dmaengine: ti: k3-udma: Mark the TR descriptor as 64 byte aligned

The descriptor should be aligned to 64 bytes in memory.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Use dma_pool for DMA_MEM_TO_MEM channels
Peter Ujfalusi [Fri, 5 Oct 2018 17:55:02 +0000 (17:55 +0000)]
dmaengine: ti: k3-udma: Use dma_pool for DMA_MEM_TO_MEM channels

While the MEM_TO_MEM channel is used in TR mode we know that we will have
either one or two TRs per transfer.
Create dma_pool providing TR descriptor with two TRs size of chunks.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Use dma_pool for packet mode channel descriptors
Peter Ujfalusi [Fri, 5 Oct 2018 17:55:01 +0000 (17:55 +0000)]
dmaengine: ti: k3-udma: Use dma_pool for packet mode channel descriptors

If the channel is configured in packet mode the cppi5 descriptor sizes are
fixed (HPD, HBD). Instead of the expensive dma_zalloc_coherent use dma_pool
for the cppi5 descriptors.
The dma_pool will allocate memory on demand providing the channel enough
space to work without the need to allocate memory over time, which saves
time in prepare time.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Simplify push to ring parameters
Peter Ujfalusi [Fri, 5 Oct 2018 17:55:00 +0000 (17:55 +0000)]
dmaengine: ti: k3-udma: Simplify push to ring parameters

The udma_desc is redundant parameter, it can be fetch internally.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Pre-calculate the descriptor size for packet mode
Peter Ujfalusi [Fri, 5 Oct 2018 17:54:59 +0000 (17:54 +0000)]
dmaengine: ti: k3-udma: Pre-calculate the descriptor size for packet mode

The size of the CPPI5 descriptor is constant in packet mode and can be
calculated once when the channel is requested.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Do not count the terminated transfer's length
Peter Ujfalusi [Fri, 5 Oct 2018 17:54:58 +0000 (17:54 +0000)]
dmaengine: ti: k3-udma: Do not count the terminated transfer's length

When a descriptor is terminated we should not add the whole size of the
terminated descriptor to our counter and after termination the counters
are going to be reset anyways.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Do a complete reset of the channel to recover
Peter Ujfalusi [Fri, 5 Oct 2018 17:54:57 +0000 (17:54 +0000)]
dmaengine: ti: k3-udma: Do a complete reset of the channel to recover

PSI-L unpair and pair will toggle the ENABLE of the UDMA and peer, but after
this the channel needs to be reconfigured.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Replace magic numbers with defines
Peter Ujfalusi [Fri, 5 Oct 2018 17:54:56 +0000 (17:54 +0000)]
dmaengine: ti: k3-udma: Replace magic numbers with defines

We had lots of magic bits open coded which is hard to read and understand.
Replace them with defines and document them when it make sense.

At the same time remove unnecessary TR flag settings to not confuse the
reader of the code.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Correct the packet descriptor alignment
Peter Ujfalusi [Fri, 5 Oct 2018 17:54:55 +0000 (17:54 +0000)]
dmaengine: ti: k3-udma: Correct the packet descriptor alignment

According to the documentation the descriptors must be 64 byte aligned.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Do not allow slave transfers bigger than 4M-1
Peter Ujfalusi [Fri, 5 Oct 2018 17:54:54 +0000 (17:54 +0000)]
dmaengine: ti: k3-udma: Do not allow slave transfers bigger than 4M-1

The packet size is limited to 4M-1 and instead of just printing an error
message we should fail the prepare to avoid mis-configuration.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agodmaengine: ti: k3-udma: Remove unused struct definitions and defines
Peter Ujfalusi [Fri, 5 Oct 2018 17:54:53 +0000 (17:54 +0000)]
dmaengine: ti: k3-udma: Remove unused struct definitions and defines

The driver uses the cppi5 definition for packet mode from the cppi5.h

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
2 years agonet: ti: icssg_prueth: fix command done check and cancel command
Roger Quadros [Mon, 8 Oct 2018 12:58:05 +0000 (15:58 +0300)]
net: ti: icssg_prueth: fix command done check and cancel command

We need to check if firmware read the command by checking the
BUSY bit, before checking if the command is done (i.e. DONE bit).

Use the common icss_hs_send_cmd() helper to issue CANCEL command
so it goes through the proper done check.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agonet: ti: icssg_prueth: clear SMEM portion for the slice
Roger Quadros [Mon, 8 Oct 2018 12:58:04 +0000 (15:58 +0300)]
net: ti: icssg_prueth: clear SMEM portion for the slice

SMEM area is used for handshake between Firmware and OS.
Clear the area so that we start with a clean slate on
every boot.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agonet: ti: icssg_prueth: Add ethtool support
Roger Quadros [Mon, 8 Oct 2018 12:58:03 +0000 (15:58 +0300)]
net: ti: icssg_prueth: Add ethtool support

Add support for hardware stats over ethtool.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agonet: ti: icssg_prueth: Follow proper shutdown sequence
Roger Quadros [Mon, 8 Oct 2018 12:58:02 +0000 (15:58 +0300)]
net: ti: icssg_prueth: Follow proper shutdown sequence

We need to disable all RX traffic before issuing CANCEL
command and finally issue RX teardown.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agonet: ti: icssg_prueth: Support Promiscuous mode properly
Roger Quadros [Mon, 8 Oct 2018 12:58:01 +0000 (15:58 +0300)]
net: ti: icssg_prueth: Support Promiscuous mode properly

Setup a default classifier setup to accept
broadcast and own-address packets.

Support promiscuous mode by configuring filter 1 (FT1-0)
to accept all unicast, broadcast and multicast packets.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agonet: ti: icssg: Add classifier helpers
Roger Quadros [Mon, 8 Oct 2018 12:58:00 +0000 (15:58 +0300)]
net: ti: icssg: Add classifier helpers

ICSSG firmware expects OS the configure the
classifier and filters. Add helper functions
for that.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agonet: ti: icssg_prueth: Increase port buffer in MSMC
Roger Quadros [Mon, 8 Oct 2018 12:57:59 +0000 (15:57 +0300)]
net: ti: icssg_prueth: Increase port buffer in MSMC

Updates to firmware require a larger port buffer in MSMC.
Be prepared for that.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agoarm64: dts: ti: Add mii-g-rt to prueth nodes
Roger Quadros [Mon, 8 Oct 2018 12:57:58 +0000 (15:57 +0300)]
arm64: dts: ti: Add mii-g-rt to prueth nodes

This is required to support Classifier/filters.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2 years agodt-bindings: net: ti,icssg-prueth: Add mii-g-rt property
Roger Quadros [Mon, 8 Oct 2018 12:57:57 +0000 (15:57 +0300)]
dt-bindings: net: ti,icssg-prueth: Add mii-g-rt property

This is required to support Classifier/filters.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>