Age | Commit message (Collapse) | Author | Files | Lines |
|
devm_regmap_init_mmio() can fail, add a check and bail out in case of
error.
Fixes: 4e5bd3fdbeb3 ("media: imx-pxp: convert to regmap")
Cc: [email protected]
Signed-off-by: Harshit Mogalapalli <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Laurent Pinchart <[email protected]>
|
|
The DT of_device.h and of_platform.h date back to the separate
of_platform_bus_type before it as merged into the regular platform bus.
As part of that merge prepping Arm DT support 13 years ago, they
"temporarily" include each other. They also include platform_device.h
and of.h. As a result, there's a pretty much random mix of those include
files used throughout the tree. In order to detangle these headers and
replace the implicit includes with struct declarations, users need to
explicitly include the correct includes.
Signed-off-by: Rob Herring <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
|
|
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
|
|
Replace the readl and writel with regmap to ease debugging the registers
from userspace.
Suggested-by: Alexander Stein <[email protected]>
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
There's no need to use threaded IRQs with the PXP, as the interrupt
handler doesn't need to sleep and doesn't perform any time-consuming
operation. Switch to regular IRQ handler.
This fixes lockups of the PXP noticed on i.MX7, where the PXP would stop
generating interrupts after a variable number of frames (from a few
dozens to a few hundreds). The root cause is however unknown.
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Add pxp_read() and pxp_write() functions to wrap readl() and writel()
respectively. This can be useful for debugging register accesses.
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Implement support for the VIDIOC_ENUM_FRAMESIZES ioctl.
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The find_format() function looks up format information for a given pixel
format. It takes a v4l2_format pointer, but only uses the contained
pixel format value. To prepare it for being used by callers that don't
have v4l2_format, modify it to take the pixel format value directly.
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Register a media device for the PXP, using the v4l2-mem2mem MC
infrastructure to populate the media graph. No media device operation is
implemented, the main use of the MC API is to allow consistent discovery
of media devices for userspace.
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The v4l2_capability.bus_info field is set by the V4L2 core when left
empty by the .querycap() handler. This is the recommended practice, in
order to ensure bus_info coherence between drivers. Don't set it
manually.
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Sorting headers alphabetically helps locating duplicates, and make it
easier to figure out where to insert new headers.
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The i.MX7D needs a different data path configuration than the i.MX6ULL.
Configure the data path as close as possible to the data path on the
i.MX6ULL.
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Unfortunately, the PXP_HW_VERSION register reports the PXP on the i.MX7D
and on the i.MX6ULL as version 3.0, although the PXP versions on these
SoCs have significant differences.
Use the compatible to configure the ctrl0 register as required dependent
on the platform.
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The LUT block is always configured in bypass mode.
Take it entirely out of the pipeline by disabling it and routing the
data path around the LUT.
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Various multiplexers in the pipeline are not used with the currently
configured data path. Disable all unused multiplexers by selecting the
"no output" (3) option.
The datasheet doesn't explicitly require this, but the PXP has been seen
to hang after processing a few hundreds of frames otherwise.
As at it, add documentation for the multiplexers that are actually
relevant for the data path.
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The driver must configure the data path through the Pixel Pipeline.
Currently, the driver is using a fixed setup, but once there are
different pipeline configurations, it is helpful to have a dedicated
function for determining the register value for the data path.
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Different versions of the Pixel Pipeline have different blocks and their
routing may be different. Read the PXP_HW_VERSION register to determine
the version of the PXP and print it to the log for debugging purposes.
Signed-off-by: Michael Tretter <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
In order to cleanup the main platform media directory, move NXP
drivers to their own directory.
Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|