summaryrefslogtreecommitdiff
path: root/drivers/media/platform/soc_camera/tegra_camera/vi2.c
AgeCommit message (Collapse)Author
2019-04-24Modify the way vi2 handles frame grabbing.Peter Gielda
(cherry picked from commit 0a8984655b5239833a3e6e0d54c7c867dbc7ea63) This fixes the dual camera use case. Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2017-04-04media: tegra_camera: add continuous clk supportWojciech Bieganski
Signed-off-by: Wojciech Bieganski <wbieganski@antmicro.com> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2017-04-04media: fix pal supportWojciech Bieganski
Signed-off-by: Wojciech Bieganski <wbieganski@antmicro.com> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2017-04-04media: fix simultaneous captureWojciech Bieganski
Signed-off-by: Wojciech Bieganski <wbieganski@antmicro.com> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2017-04-04Reapply "media: tegra_camera: introduce 2 kthreads for capture"Mariusz Glebocki
This reverts commit b2f6b2abc791802631ff1c85488cdf3c1f0a97e2. Signed-off-by: Mariusz Glebocki <mglebocki@antmicro.com> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2016-11-21Revert "media: tegra_camera: introduce 2 kthreads for capture"Marcel Ziswiler
This reverts commit ff5bccb61c1f8da1f63451fda88bd1f65dbee5b2. This makes Antmicro's OV5640 camera module work again as described on their blog here: http://antmicro.com/Blog/2015/09/jetson-tk1-cameras/ Further investigation pending. Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Acked-by: Dominik Sliwa <dominik.sliwa@toradex.com>
2016-11-21media: support for second single-lane decoder (ADV7280M)Wojciech Bieganski
Connected to CSI CIL-E. Cameras doesn't work simultaneously. Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Acked-by: Dominik Sliwa <dominik.sliwa@toradex.com>
2016-11-21YUV sensors support added to tegra_camera driverWojciech Bieganski
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Acked-by: Dominik Sliwa <dominik.sliwa@toradex.com>
2015-10-29media: tegra_camera: introduce 2 kthreads for captureBryan Wu
Use one kthread to start capture a frame and wait for next frame start. Before waiting, it will move the current buffer to another queue which will be handled another kthread. The second kthread (capture_done) will wait for memory output done sync point event and handle the buffer to videobuffer2 framework as capture done. Bug 1686911 Change-Id: Ia092c708ecca3b2e7cbc657a96fd247ea4a00d2f Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/819177 GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
2015-10-29media: tegra_camera: replace workqueue with kthreadBryan Wu
Use kthread instead of workqueue, which will create a dedicated kernel thread for capture. Remove useless mutex and convert spin_lock_irq() to normal spin_lock(). Bug 1686911 Change-Id: Ib236a7ebbdd0359f2705774a979825f1f9e9d82a Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/819176 GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
2015-10-29media: tegra_camera: add line alignment checkBryan Wu
bytes_per_line should be 64 bytes aligned in Tegra. Add a function to check that and return the right value for LINE_STRIDE register. Bug 1694764 Change-Id: I1bb926a416719d19cad509f9a9a7c4fce06b851a Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/816975 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
2015-06-19media: tegra_camera: optimize single shot modeBryan Wu
Current single shot mode, pixel parser is disabled after capture one frame and software waits for memory write ack done syncpoint, which only gives us half the frame rate. Optimized single shot mode: - during capture setup, set single shot mode - for each frame, wait for FRAME_START syncpoint - arm single shot bit to start capture - for the last frame, wait for MWA_DONE syncpoint to make sure capture finished. With optimized single shot mode, frame rate is about 4208x3120 @ 24fps for IMX135 and 1920x1080 @ 30fps for AR0261. Bug 1639982 Change-Id: I0b15d02c2853647d03f5b2d38a7fe5c145174bd5 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/754709 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: David Wang (SW-TEGRA) <davidw@nvidia.com> Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2015-06-05media: tegra_camera: change MIPI_CAL print levelBryan Wu
Bug 1648875 Change-Id: I970a3eafcd7ec10f217f4c1cb13db9193dc037f6 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/752761 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Arun Kannan <akannan@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
2015-06-04media: tegra_camera: clear MIPI_CAL flagBryan Wu
MIPI calibration should be done when power on the VI/CSI hardware. So clear the MIPI_CAL flag to trigger MIPI calibration for next power on operation. Bug 1648875 Change-Id: Ic0689a331a6058e4d54d5b41869f2e81feb4158c Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/752129 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Arun Kannan <akannan@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Arun Kannan <akannan@nvidia.com> Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
2015-04-14media: tegra_v4l2_camera: add CSI caliabrationBryan Wu
Add calibration for T124 VI2. Bug 1628147 Change-Id: If70b1562c1d6345b337e4a01236c392b79f14dad Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/678605 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Frank Chen <frankc@nvidia.com> Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
2015-01-07media: tegra_v4l2_camera: add dual camera supportBryan Wu
Change-Id: I3a358eb3f996917218798ae24eb1b0ef471a223f Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/591332 Reviewed-by: Venkat Moganty <vmoganty@nvidia.com> (cherry picked from commit 4011d6570ba8138348ccc45b2acb31526cb73863) Reviewed-on: http://git-master/r/665998 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2015-01-07media: tegra_v4l2_camera: disable line timeoutBryan Wu
Disable line timeout, since some sensor like IMX208 doesn't work with line timeout enabled. Bug 1560636 Change-Id: I38e9a03e04ca206cbb65c13829c567d0c0de1c6c Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/539004 Reviewed-by: Venkat Moganty <vmoganty@nvidia.com> (cherry picked from commit 8cca4a716c25cecbbc7455d5dd92f3e7fc074b07) Reviewed-on: http://git-master/r/665997 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2015-01-07media: tegra_v4l2_camera: add CSI_B/CSI_C supportBryan Wu
Bug 1560636 Change-Id: I2d27c631da0f4b6540af9b4da9ba9e212a4a56c5 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/539003 Reviewed-by: Venkat Moganty <vmoganty@nvidia.com> (cherry picked from commit e9b82e8a6e6edf5fc00e88c8610b9c2bb67f3872) Reviewed-on: http://git-master/r/665996 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2015-01-07media: tegra_v4l2_camera: use port num to init clkBryan Wu
Change clks_init() internal API to use CSI port number to enable clks instead of using dev_id which is incorrect sometime, since vi.0 might also assigned to CSI_B/CSI_C port. Bug 1560636 Change-Id: I0e26308ec885e2e34fe8faa63fca404c911912c4 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/539002 Reviewed-by: Venkat Moganty <vmoganty@nvidia.com> (cherry picked from commit c66d8e5880589b0d95dba63d10daff53e47e8628) Reviewed-on: http://git-master/r/665995 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2015-01-07media: tegra_v4l2_camera: fix format supportAndrew Chew
This driver does not demosaic, so when we are working with a bayer sensor, we can only report the various bayer formats. Similarly, we only support rgba for test pattern generator right now, so only report rgba if we are in test pattern mode. When in test pattern mode, don't ever query the sensor subdev, since it's not involved at all. Also, made some miscellaneous cleanup to some debug prints, and the conditionals around how CSI gets programmed. Bug 1560636 Change-Id: I9022ec6a489b20d0847dd9d2a79af2307b7a4af1 Signed-off-by: Andrew Chew <achew@nvidia.com> Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/489066 Reviewed-by: Jihoon Bang <jbang@nvidia.com> Reviewed-by: David Wang (SW-TEGRA) <davidw@nvidia.com> Reviewed-by: Venkat Moganty <vmoganty@nvidia.com> (cherry picked from commit f211247b0151b926f21b989cc031dc928db61aaa) Reviewed-on: http://git-master/r/665994 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2014-12-18media: tegra_camera: correct the return value of vi2_capture_startKassey Li
return the status of nvhost_syncpt_wait_timeout_ext in vi2_capture_start. Bug 1583009 Change-Id: I2b2ecaf868d0a05e2fa46b23e7eb40ee76aea380 Signed-off-by: Kassey Li <kasseyl@nvidia.com> Reviewed-on: http://git-master/r/655521 Reviewed-by: Bryan Wu <pengw@nvidia.com> GVS: Gerrit_Virtual_Submit Tested-by: Bryan Wu <pengw@nvidia.com> Reviewed-by: Frank Chen <frankc@nvidia.com> Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
2014-11-20media: tegra_camera: bypass pixel transformBryan Wu
Disable pixel transform for our L4T/V42L use case. This patch also add some missing settings for CSI-B. Bug 1579773 Change-Id: I0f7d81799e5edcae80329d9bdf3d5c56fa9c295d Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/604312 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Frank Chen <frankc@nvidia.com> Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2014-09-26media: tegra_v4l2_camera: set clock rate for pll_dBryan Wu
Test pattern generator in VI needs PLL_D running at certain clock rate, then CSI clock is a child of PLL_D can get the right clock for operation. If DC disable DSI and set PLL_D as a very low frequency and VI driver forgets to set PLL_D rate back, test pattern generator won't work. This patch will set PLL_D as 927M when we do test pattern generator testing. Bug 1515755 Change-Id: I8fd27d193a436e1057ce2bce8f8153630dc5cdce Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/489043 (cherry picked from commit e09393ad2a02309f63a3baeb567460e1e2f79cd9) Reviewed-on: http://git-master/r/498938 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com> Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2014-09-26media: tegra_camera: vi2: support for real sensorBryan Wu
Add code to support RAW10 capture from real sensor like IMX135. Add flag to skip register program from second frame. Fix sync point operations. Bug 1380143 Change-Id: I19bcd17ddfba0e16b4b3a34ae8a4e5a0119e85e1 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/337470 (cherry picked from commit ff1055fa436ffb5c1d57eee2e09c17578774d65f) Reviewed-on: http://git-master/r/498936 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com> Reviewed-by: Winnie Hsu <whsu@nvidia.com>
2014-03-31media: tegra_camera: free syncpts at driver removeDeepak Nibade
Use nvhost_free_syncpts() to free the syncpts during driver unload This is required to fix syncpts leak Bug 1489488 Bug 1305024 Change-Id: Ic02771e2078ddead4c9b54826a669bb7c3653ba2 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/388116 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Shridhar Rasal <srasal@nvidia.com> Reviewed-by: Bryan Wu <pengw@nvidia.com> Tested-by: Bryan Wu <pengw@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
2014-03-19media: tegra_camera: use dynamic syncptsDeepak Nibade
- use API nvhost_get_syncpt_client_managed() to get syncpts dynamically - add new function pointers .init_syncpts() to initialize the syncpts at probe() time only Bug 1305024 Change-Id: I6bdaace034b966d8409308fd52f5d2b1507314c1 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/381958 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
2014-03-17media: tegra_camera: update syncpt val on successShridhar Rasal
Update camera syncpoint value returned by nvhost on success. Bug 1469913 Change-Id: Ic450631bda94f2bdd6d1d352dbd5ec8aa97d7e63 Signed-off-by: Shridhar Rasal <srasal@nvidia.com> Reviewed-on: http://git-master/r/375434 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Jon Mayo <jmayo@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
2014-03-04driver: vi: tegra_camera: correct pdev->id for DTBryan Wu
DT will initialize the pdev->id as -1 for both vi.0 and vi.1. This will cause several subtle issues since checking pdev->id is used a in VI and Tegra V4L2 camera drivers. Set the pdev->id as the right value during probing for DT case. Then no change is need for others Bug 1463966 Change-Id: I8adf124c4d3489e9c06abbecb6d3587437954c50 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/373000 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Jihoon Bang <jbang@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
2014-02-25video: tegra: host: Revert dynamic syncpt patchesShridhar Rasal
With dynamic syncpoint allocation ap_systemsw fails intermittently for TN8. so reverting series of dynamic syncpoint patches. Bug 1305024 Bug 1467163 Revert "video: tegra: host: add pbdma syncpoint headers" commit 62efc18329c5da0e6dc90f088c145e1099213f20. Revert "video: tegra: host: print syncpt id in debug spew" commit c918cc4494008fe764e746142060d896436a1d3c. Revert "video: tegra: host: remove static from get_syncpt_name()" commit c098ce933738d892bbeba003ab35505c4b7d7951. Revert "video: tegra: host: remove unused variable" commit a4dad0592c95165e8366ebe939367a1ece2cb9b9. Revert "video: tegra: host: Hardcode AVP sync point" commit 8da84e56de66f20806cb706ee005f263ca5e213f. Revert "video: tegra: host: hard-code syncpts for t114" commit 410536f668a62d94603bc3287efaef3dcffb1226. Revert "video: tegra: host: remove static syncpt mappings" commit 4cee1d17b01019cc122acf21604d4f01ac6f7474. Revert "media: tegra_camera: use dynamic syncpts" commit eae55c8e4cbb65e3ed1a8c8ef8150d8a6ba938bf. Revert "video: tegra: dc: use dynamic syncpt" commit 03d7c261ceb62bf1eb93cae48aaa84881d6de5b9. Revert "video: tegra: host: use dynamic syncpt for hwctx" commit 03136f549f54a26d77987f3751bf12d202614372. Revert "video: tegra: host: implement dynamic synpt" commit 6c2d1b43e51f2e0424b793c9da1c25adf63ea569. Change-Id: I19a63e812680b7521bed3c1188858b2165a88c89 Signed-off-by: Shridhar Rasal <srasal@nvidia.com> Reviewed-on: http://git-master/r/374169 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
2014-02-13media: tegra_camera: use dynamic syncptsDeepak Nibade
- use API nvhost_get_syncpt_client_managed() to get syncpts dynamically - add new function pointers .init_syncpts() to initialize the syncpts at probe() time only Bug 1305024 Change-Id: Ib751b0a23d556444ba9d86fedc978439b4212b90 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/364854 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Shridhar Rasal <srasal@nvidia.com> Reviewed-by: Bryan Wu <pengw@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
2013-11-27media: tegra_camera: use pdev->dev.id after using DTBryan Wu
VI device tree node was added into tegra124.dtsi. - use pdev->dev.id to match sensor driver's bus_id, otherwise it will fail to start to probe sensor driver. - the name of VI platform device changed, as a result clock probing will fail during driver starting. So correct dev_id by using the name of pdev->dev. - check the cam->reg_base mapping, if it's NULL further register operation will cause oops Bug 1377330 Change-Id: Iacf93f88b4f37bbca1d310c16c6ed2ed0b786758 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/335947 GVS: Gerrit_Virtual_Submit Reviewed-by: Allen Martin <amartin@nvidia.com>
2013-11-01media: tegra v4l2 camera: refactor driver codeBryan Wu
Reconstruct the driver for Tegra V4L2 camera driver: - remove old driver file tegra_v4l2_camera.c - create driver file vi.c for VI/CSI (T20/T30/T114/T148) - create driver file vi2.c for VI2/CSI2 (T124) Bug 1377330 Change-Id: If030cf98e700b9201caa60328be822bc10610e74 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/289329 GVS: Gerrit_Virtual_Submit Reviewed-by: Allen Martin <amartin@nvidia.com>