Age | Commit message (Collapse) | Author |
|
TI-Feature: connectivity
TI-Branch: connectivity-ti-linux-5.10.y
* 'connectivity-ti-linux-5.10.y' of ssh://bitbucket.itg.ti.com/lcpdpublicdom/connectivity: (82 commits)
arm64: dts: ti: k3-j721s2: Fix DSS clock IDs
arm64: dts: ti: k3-am64-main: Remove support for HS400 speed mode
arm64: dts: ti: k3-j7200-som: Describe hyperflash partition info
arm64: dts: ti: k3-j7200-som: Describe OSPI flash partition info
arm64: dts: ti: k3-j721e-sk: Describe OSPI flash partition info
arm64: dts: ti: k3-j721e-som: Describe OSPI flash partition info
arm64: dts: ti: k3-am642-sk: Add pinmux corresponding to main_uart0
Revert "usb: dwc3: Don't switch OTG -> peripheral if extcon is present"
ti_config_fragments/audio_display.cfg: Enable FPDLink configs
arch: arm64: dts: ti: Add FPDLink overlays for J721E
media: i2c: add Sony IMX390 driver
dt-bindings: media: Add bindings for Sony IMX390
media: cadence: csi2rx: configure DPHY before starting source stream
media: cadence: csi2rx: plug the leak of DPHY device usage count
media: cadence: csi2rx: handle external DPHY runtime PM better
media: cadence: csi2rx: Add RAW12 formats
media: ti: j721e-csi2rx: Add RAW12 formats
media: ti: j721e-csi2rx: Set V4L2_SUBDEV_FL_MULTIPLEXED
media: i2c: ds90ub960: Add 1.2 Gbps support
media: i2c: add DS90UB953 driver
...
Signed-off-by: Texas Instruments Auto Merger <lcpd_integration@list.ti.com>
|
|
Fix DSS clock IDs based on the fixes made
in system firmware
Signed-off-by: Rahul T R <r-ravikumar@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
AM64 SoC, does not support HS400 and HS200 is the maximum supported speed
mode[1]. Therefore, fix the device tree node to reflect the same.
[1] - https://www.ti.com/lit/ds/symlink/am6442.pdf
(SPRSP56C – JANUARY 2021 – REVISED FEBRUARY 2022)
Fixes: 6fbf3719f230 ("arm64: dts: ti: Add support for AM642 SoC")
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Describe hyperflash flash partition information in device tree
so as to remove passing partition information in `mtdparts`
commandline parameter.
Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Describe OSPI flash partition information in device tree
so as to remove passing partition information in `mtdparts`
commandline parameter.
Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Describe OSPI flash partition information in device tree
so as to remove passing partition information in `mtdparts`
commandline parameter.
Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Describe OSPI flash partition information in device tree
so as to remove passing partition information in `mtdparts`
commandline parameter.
Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add pinmux details required for the zeroth instance of main UART.
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
This reverts commit 8619ef728695676405dc7e456e6b97c9e56c3863.
This conflicts with stable merges and changes are no longer required.
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Enable configs for UB960, UB953, and IMX390 which are the 3 devices
currently being used in the FPDLink pipeline.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add overlays for Fusion Application Board containing the UB960
deserializer for J721E EVM and J721E SK, along with overlays for IMX390
+ UB953 cameras connected to its 8 ports.
The IMX390 + UB953 module from D3 Engineering has two versions: CM and
RCM. Both use a different GPIO configuration and I2C address. Add
overlays for both modules on each port.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add driver for Sony IMX390 camera sensor. Support 1936x1096 RAW12 30 and
60 FPS RGGB output with HDR mode, Exposure control, Gain controls, White
Balance, etc.
Signed-off-by: Apurva Nandan <a-nandan@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add DT bindings for Sony IMX390 camera sensor.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
When the source device is operating above 1.5 Gbps per lane, it needs to
send the Skew Calibration Sequence before sending any HS data. If the
DPHY is initialized after the source stream is started, then it might
miss the sequence and not be able to receive data properly. Move the
start of source subdev to the end of the sequence to make sure
everything is ready to receive data before the source starts streaming.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
The DPHY usage counter is incremented when starting the stream, but it
is never decremented when stopping it, leaking the device usage count.
Plug the leak.
Fixes: e9849aee398a ("media: cadence: csi2rx: Add external DPHY support")
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
phy_pm_runtime_*() calls return -EOPNOTSUPP and do nothing else if
runtime PM is not enabled. Use that fact to make the code flow a bit
better. Call phy_pm_runtime_put() unconditionally since it will simply
return an error if runtime PM is not enabled. The variable got_pm is not
longer needed.
This also fixes a bug where phy_pm_runtime_get_sync() returning a
positive value (in case device usage count is > 0) would be treated as
an error.
Fixes: e9849aee398a ("media: cadence: csi2rx: Add external DPHY support")
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add RAW12 formats in the formats table to allow capturing those formats.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add Bayer RAW12 formats to the formats table to allow capturing them.
Tested with SRGGB12 using IMX390 sensor.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
This flag indicates multiplexed streams support and is needed to allow
setting the subdev routing. This should have been added from the start
but was missed when initially adding multiplexed streams support.
Fixes: 36c9d14a3c5b ("media: ti: j721e-csi2rx: add multistream support")
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
UB960 can also support 1.2 Gbps per lane. Allow selecting that mode.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add driver for TI DS90UB953 FPDLink-3 Serializer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add driver for TI DS90UB960 FPDLink-3 Deserializer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add DT bindings for TI DS90UB953 FPDLink-3 Serializer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add DT bindings for TI DS90UB960 FPDLink-3 Deserializer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
An ATR is a device that looks similar to an i2c-mux: it has an I2C
slave "upstream" port and N master "downstream" ports, and forwards
transactions from upstream to the appropriate downstream port. But is
is different in that the forwarded transaction has a different slave
address. The address used on the upstream bus is called the "alias"
and is (potentially) different from the physical slave address of the
downstream chip.
Add a helper file (just like i2c-mux.c for a mux or switch) to allow
implementing ATR features in a device driver. The helper takes care or
adapter creation/destruction and translates addresses at each transaction.
Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
An adapter might need to know when a new device is about to be
added. This will soon bee needed to implement an "I2C address
translator" (ATR for short), a device that propagates I2C transactions
with a different slave address (an "alias" address). An ATR driver
needs to know when a slave is being added to find a suitable alias and
program the device translation map.
Add an attach/detach callback pair to allow adapter drivers to be
notified of clients being added and removed.
Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
The pipeline validation being done here is completely broken. Firstly,
it assumes that the media_graph_walk_* APIs perform a depth-first
traversal on the media graph. They claim to do so, but that is not the
case in reality. The order of traversal seems to not be guaranteed, just
that all the entities in the graph will be traversed at some point. This
means that the device that last touched for format can't be reliably
found.
Secondly, a driver is not supposed to validate format propagation
through the entire pipeline anyway. It should just mind its own formats
and its own links, and should not traverse the graph to validate the
entire thing.
Due to these two reasons, it is better to just drop the validation.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
When the media pipeline start fails, it is not right to just return from
the function. The buffers should be returned to VB2 and DMA state
updated. Make sure the error path from media_pipeline_start() does that.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Each CSI2 stream can be multiplexed into 4 independent streams, each
identified by its virtual channel number. To capture this multiplexed
stream, the application needs to tell the driver how it wants to route
the data. It needs to specify which context should process which stream.
This is done via the new routing APIs.
Add ioctls to accept routing information from the application and save
that in the driver. This can be used when starting streaming on a
context to determine which route and consequently which virtual channel
it should process.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Use get_frame_desc() to get the frame desc from the connected source,
and use the provided virtual channel instead of hardcoded one.
get_frame_desc() works per stream, but as we don't support multiple
streams yet, we will just always use stream 0. If the source doesn't
support get_frame_desc(), fall back to the previous method of always
capturing virtual channel 0.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add routing and stream_config support to CAL driver.
Add multiplexed streams support. CAL has 8 dma-engines and can capture 8
separate streams at the same time.
Add 8 video device nodes, each representing a single dma-engine, and set
the number of source pads on camerarx to 8. Each video node can be
connected to any of the source pads on either of the camerarx instances
using media links. Camerarx internal routing is used to route the
incoming CSI-2 streams to one of the 8 source pads.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
[p.yadav@ti.com: Squash Tomi's patch to fix legacy mode]
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
CAL HW interrupts are inherently racy. If we get both start and end
interrupts, we don't know what has happened: did the DMA for a single
frame start and end, or did one frame end and a new frame start?
Usually for normal pixel frames we get the interrupts separately. If
we do get both, we have to guess. The assumption in the code is that the
active vertical area is larger than the blanking vertical area, and thus
it is more likely that we get the end of the old frame and the start of
a new frame.
However, for embedded data, which is only a few lines high, we always
get both interrupts. Here the assumption is that we get both for the
same frame.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Instead of handling the WDMA START and END interrupts separately, we
need to handle both at the same time to better manage the inherent race
conditions related to CAL interrupts.
Change the code so that we have a single function,
cal_irq_handle_wdma(), which gets two booleans, start and end, as
parameters, which allows us to manage the race conditions in following
patches.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
An attempt to fix the seq number based on mailing list discussions.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
The userspace needs a way to match received metadata buffers to pixel
data buffers. The obvious way to do this is to use the CSI-2 frame
number, as both the metadata and the pixel data have the same frame
number as they come from the same frame.
However, we don't have means to convey the frame number to userspace. We
do have the 'sequence' field, which with a few tricks can be used for
this purpose.
To achieve this, track the frame number for each virtual channel and
increase the sequence for each virtual channel by frame-number -
previous-frame-number, also taking into account the eventual wrap of the
CSI-2 frame number.
This way we get a monotonically increasing sequence number which is
common to all streams using the same virtual channel.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Use get_frame_desc() to get the frame desc from the connected source,
and use the provided virtual channel and datatype instead of hardcoded
ones.
get_frame_desc() works per stream, but as we don't support multiple
streams yet, we will just always use stream 0.
If the source doesn't support get_frame_desc(), fall back to the
previous method of always capturing virtual channel 0 and any datatype.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
'ret' is initialized needlessly in cal_legacy_try_fmt_vid_cap(). We can
also move the variable to the for block, which is the only place where
it is used.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
The error paths are not correct: media_entity_cleanup() should not be
called unless media_entity_pads_init() has been called. Fix this.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add a subdev capability flag to expose to userspace if a subdev supports
multiplexed streams.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add a helper for verifying routing for the common case of
non-overlapping 1-to-1 streams.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
v4l2_subdev_set_routing_with_fmt() is the same as
v4l2_subdev_set_routing(), but additionally initializes all the streams
with the given format.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add v4l2_subdev_get_fmt() helper function which implements
v4l2_subdev_pad_ops.get_fmt using streams. Subdev drivers that do not
need to do anything special in their get_fmt op can use this helper
directly for v4l2_subdev_pad_ops.get_fmt.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add two helper functions to make dealing with streams easier:
v4l2_state_find_opposite_end - given a routing table and a pad + stream,
return the pad + stream on the opposite side of the subdev.
v4l2_state_get_opposite_stream_format - return a pointer to the format
on the pad + stream on the opposite side from the given pad + stream.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Update v4l2_subdev_link_validate() to use routing and streams for
validation.
Instead of just looking at the format on the pad on both ends of the
link, the routing tables are used to collect all the streams going from
the source to the sink over the link, and the streams' formats on both
ends of the link are verified.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add support to manage configurations (format, crop, compose) per stream,
instead of per pad. This is accomplished with data structures that hold
an array of all subdev's stream configurations.
The number of streams can vary at runtime based on routing. Every time
the routing is changed, the stream configurations need to be
re-initialized.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add documentation related to multiplexed streams.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add a helper function to set the subdev routing. The helper can be used
from subdev driver's set_routing op to store the routing table.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add a v4l2_subdev_has_route() helper function which can be used for
media_entity_operations.has_route op.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
|
Add support for subdev internal routing. A route is defined as a single
stream from a sink pad to a source pad.
The userspace can configure the routing via two new ioctls,
VIDIOC_SUBDEV_G_ROUTING and VIDIOC_SUBDEV_S_ROUTING, and subdevs can
implement the functionality with v4l2_subdev_pad_ops.set_routing().
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
- Add sink and source streams for multiplexed links
- Copy the argument back in case of an error. This is needed to let the
caller know the number of routes.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
- Expand and refine documentation.
- Make the 'routes' pointer a __u64 __user pointer so that a compat32
version of the ioctl is not required.
- Add struct v4l2_subdev_krouting to be used for subdevice operations.
Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
- Fix typecasing warnings
- Check sink & source pad types
- Add 'which' field
- Add V4L2_SUBDEV_ROUTE_FL_SOURCE
- Routing to subdev state
- Dropped get_routing subdev op
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|