Reorganize icp hw mgr structure to consolidate fields related to
device (IPE/BPS/OFE) to improve code readability and scalability
and avoid unnecessary array indexing. Optimizing ICP devices looping
by looping only available devices for current target instead of
looping to maximum devices.
CRs-Fixed: 3441726
Change-Id: I33ef62ceabbd85ff21aaf475b75d34b6c203b018
Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
Update CPAS HW driver to read multiple hw caps registers for v880
and v980 targets. Upgate CPAS API interface to provide multiple camera
caps to clients.
Move hw capability register offsets to cpas header files.
Update ICP driver to check the second hw capability mask
for OFE presence.
Based on the type of device(ICP/IPE/BPS/OFE) populated from DT, verify
with cpas titan hw capability to check if the device is supported for
the target. Verifying CPAS HW capability after populated devices from DT
removes the need for checking CPAS HW version.
CRs-Fixed: 3405111
Change-Id: I11a58920d97f25908e6bde49fd918b2cc90c1479
Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
This change registers tfe on v980 as an mc_tfe device
for userspace to enumerate.
CRs-Fixed: 3321317
Change-Id: Ic7810dc198aece0d1d0fa50e547f69c72218d49a
Signed-off-by: Li Sha Lim <quic_lishlim@quicinc.com>
Get CDM callback done timestamp for LDAR to know
if CDM write delay. And enlarge event monitor
numbers to make sure dump 10+ frames info.
CRs-Fixed: 3430787
Change-Id: If5a1bd925d5d82d1856d880ccb1f4ed9effc5251
Signed-off-by: Wang Kan <quic_wkan@quicinc.com>
camera-kernel:
c38501c0 Merge "msm: camera: icp: Add support for new mem region cmd" into camera-kernel.lnx.dev
1ba50950 Merge "msm: camera: smmu: Add support for new subregions" into camera-kernel.lnx.dev
26439955 Merge "msm: camera: cpas: Update CPAS for v980" into camera-kernel.lnx.dev
92c1cbcb Merge "msm: camera: common: Return err on flush and log req id" into camera-kernel.lnx.dev
8a691fa0 Merge "msm: camera: memmgr: Reduce potential mutex optimistic spin" into camera-kernel.lnx.dev.
Change-Id: I1a4c3bafed7c9995dd9d04134736f5d257728e27
Signed-off-by: hchintal <quic_hchintal@quicinc.com>
To avoid using GP registers to send different memory region
info, use GP registers to configure only the consolidated region.
The specifics for different regions within the consolidated region
are later sent to FW as a new HFI cmd.
CRs-Fixed: 3469619
Change-Id: I2eb9511a4df5c8eb4ca09b60acd1fcffb3ac4dff
Signed-off-by: Karthik Anantha Ram <quic_kartanan@quicinc.com>
Add support for new subregion to account for two different
HW mutex regions for ICP. The change also adds support for
new global cntr subregion.
CRs-Fixed: 3469619
Change-Id: I8625230bfec23d2a12699a283a33e6ab83acaf00
Signed-off-by: Karthik Anantha Ram <quic_kartanan@quicinc.com>
In CPAS v980, CAMNOC is split into RT and NRT. Camnoc RT and NRT each
has separate register base. Camnoc RT is used by TFE, IFE lite, RT CDM.
Camnoc NRT is used by OFE, IPE, ICP, JPEG, NRT CDM. There are also two
IRQ lines for CPAS: RT and NRT IRQs.
Add CPASTOP SBM IRQ for RT/NRT, static QOS NOC settings for RT/NRT,
Cesta, and others in the header file for v980. CPAS registers two IRQ
lines and handles the incoming (RT/NRT) IRQs based on the IRQ data for
each IRQ. CPAS SOC looks for IRQ identifier property in CPAS node DT
to classify the IRQ type.
Global Camnoc info variable and qchannel variable now contain separate
info for RT/NRT or combined info.
Add NRT reg base for camnoc NRT base. Add TFE UBWC Encode error.
CRs-Fixed: 3403163
Change-Id: I3044c6314fa65c4e486bfa1bff2e828ac5e285cd
Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
When a client driver tries to obtain the HW iova for a given buffer,
the call is directed to SMMU layer. In mem_mgr each buffer entry
has it's own lock, but in SMMU it is a singleton lock for the
entire context bank. If there are multiple clients trying to
obtain iova for buffers from the same bank, it leads to waiting
on the same singleton mutex. To avoid this, when allocating
or mapping a buffer, save the iova addr of the buffer for a given
device in the mem_mgr bufq entry. When a client requests, check
the bufq entry for iova, redirect the call to SMMU only if the
address is not found in the mem_mgr. The change attempts to
reduce the number of CPU cycles in trying to obtain a buffer
iova.
CRs-Fixed: 3466755
Change-Id: I19b983ee59704eccf421ab808cbe885725571f5b
Signed-off-by: Karthik Anantha Ram <quic_kartanan@quicinc.com>
When UMD requests to flush specific request that was submitted
to HW/FW, return error code back to userspace and log the particular
active request id if the device does not flush active request.
Currently devices that do not support flushing a specific active
request are ICP, OPE, and CRE.
Return error if there is no request to flush upon UMD call to
flush specific request.
Print all ICP requests' id from all active streams when encountering
WD or ICP fatal errors.
CRs-Fixed: 3438283
Change-Id: I7921463250c6e5e45ec263ccdce9d60d2b0f1ed3
Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
Assign OFE clock voting level to clk update command in order
for hw mgr to scale ICP clock to the updated OFE clock level.
CRs-Fixed: 3463474
Change-Id: I680394270e6ada0253e524ed88be9226954a0103
Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
When ICP encounters fatal errors, Kernel triggers a recovery and
UMD calls to release the hardware. Since FW encounters fatal erros
and no longer responds to HFI command, the abort and destroy command
to FW in release hw sequences bound to timeout anyway. So, this change
will avoid sending the commands in the release HW sequences.
CRs-Fixed: 3454098
Change-Id: I8dd119876df2f3cb360fbf5467221a31c47a8d22
Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
camera-kernel:
eeb1f5bc Merge "msm: camera: isp: Refactoring top and rx irq related code" into camera-kernel.lnx.dev
15540ec6 Merge "msm: camera: common: Fixing memory leak issues and removing dead code" into camera-kernel.lnx.dev
41532b8d Merge "msm: camera: isp: Update lite header for MUP" into camera-kernel.lnx.dev.
Change-Id: I0b775cfe1ef9207f62bc8c821ff140aac4e853d6
Signed-off-by: hchintal <quic_hchintal@quicinc.com>
Refactoring top and rx irq related code, and add support
for multiple top and rx register.
CRs-Fixed: 3321317
Change-Id: Ib34485d8d7c08e2d3729920504819fe6edac6bf1
Signed-off-by: Ashish Bhimanpalliwar <quic_abhiman@quicinc.com>
Support raw plain format update for write master while do seamless
switch between RAW10/RAW12/RAW14 sensor mode, and check the updated
format and io config format to avoid wrong pack format programming
on target who doesn't support 2 decode format in CSID.
CRs-Fixed: 3419387
Change-Id: I712ca3a346a2e2eb3b79d947a31423025069bf33
Signed-off-by: chengxue <quic_chengxue@quicinc.com>
When receiving OFE IO config ack from FW, signal completion
to wake up awaiting thread who calls to send IO config command
to FW.
CRs-Fixed: 3458585
Change-Id: I23bc7d1acd3a9ddf2d6b7120d51cdecb55569651
Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
Vfe out resources memory allocation is done at the time of
probe based on max out ports supported. Considering the
number of contexts and the size of each node, the total
size comes around 16KB whereas in normal use cases, this
much memory is way too large. For upcoming multi context
targets, this number will be multifold, roughly around
48KB.
This commit changes the memory design to maintain the
out resources. With this commit, at the time of probe,
around 400 bytes will be allocated and rest of the
memory will be allocated at the time of acquire and freed
at the time of release. Only the required memory will be
allocated.
CRs-Fixed: 3321317
Change-Id: Ibb069962736a90bcf89ecfd0f54f983094be942a
Signed-off-by: Gaurav Jindal <quic_gjindal@quicinc.com>
For dual ife, we add res id from both left and right ife hw to bus
comp group, and cause warn log print for duplicate buf done, we
only need add res id from left split ife hw to bus comp group.
CRs-Fixed: 3454579
Change-Id: I319ae4dcbff5f009d9a98abc020b439ac4eac55b
Signed-off-by: chengxue <quic_chengxue@quicinc.com>
We are seeing cam warning "cpas gdsc clk is on" and qchannel handshake
is failing on next power on. This will happen if some client want to
tunr on camnoc axi clk before turning off the gdsc clk in previous run.
CRs-Fixed: 3417264
Change-Id: I6927998cb47b7555e22c3d57b4c2f526adf62f34
Signed-off-by: Soumen Ghosh <quic_soumeng@quicinc.com>
camera-kernel:
0292d3c Merge "msm: camera: sensor: Add get sync and put sync for i2c QUP" into camera-kernel.lnx.dev.
Change-Id: Id6d4dab3fe8fad181ead67aa7539b402be3f8b80
Signed-off-by: hchintal <quic_hchintal@quicinc.com>
Use scnprintf instead of memcpy to copy string into mornitor
array. The length of dev name may be shorter than 256 when
function __cam_req_mgr_dev_handle_to_name return Invalid dev_hdl,
In this case, if we use memcpy to copy string into mornitor
array, it may cause to kernel panic.
CRs-Fixed: 3444923
Change-Id: I5b0c1a4c3d83041b778c39c00a4759392b6ee7be
Signed-off-by: mingpan <quic_mingpan@quicinc.com>
camera-kernel:
1675203 Merge "msm: camera: isp: Add support for V2 Out Configs" into camera-kernel.lnx.dev.
Change-Id: Ic14ba20d7cb41b17dfd8301fd304bd3545b5c5a5
Signed-off-by: hchintal <quic_hchintal@quicinc.com>
This commit adds support for the new fields need to be passed by
Userland. To support new fields, new version for out port config
structure is added.
During acquire, hint from user space is used to use packing
at Write master side.
CRs-Fixed: 3321317
Change-Id: Ide2640b96d8c3b2cd2cce77aa0279a69499f20c8
Signed-off-by: Gaurav Jindal <quic_gjindal@quicinc.com>
camera-kernel:
0814933 Merge "msm: camera: sensor: debugfs utility for i2c/cci" into camera-kernel.lnx.dev
3f72fa5 Merge "msm: camera: ife: Remove unnecessary cdm release call" into camera-kernel.lnx.dev
b3b9b82 Merge "msm: camera: isp: Add support to rup on v980" into camera-kernel.lnx.dev
6459fb4 Merge "msm: camera: memmgr: Use system movable heap if available" into camera-kernel.lnx.dev
a92db02 msm: camera: sensor: debugfs utility for i2c/cci
77e8336 msm: camera: isp: Enable crop and drop on PPP path.
Change-Id: If97ade46e9da35c4f1f63214a3c879f8843dbf2c
Signed-off-by: hchintal <quic_hchintal@quicinc.com>
This change adds support to read/write any sensor
devices that are on i2c, whether using cci or qup.
The debugfs file is mounted on i2c subdir under
camera root directory in debugfs.
Given that these devices are not always turned on,
and that this power on/off sequence is controlled
by userspace, this change displays all available
i2c devices, and their power states.
The user then can read/write to those devices which
are turned on, according to the following:
Usage:
- echo (anything or empty string) > i2c-rw
- cat i2c-rw then displays usage, and states of devices
- echo (proper r/w format) > i2c-rw
- cat i2c-rw displays output/error
Note that cat output is not persistent, it gets cleared
after displaying once.
CRs-Fixed: 3385104
Change-Id: I22023e0a8d9a680b5c8578cae2aa253c4c90226f
Signed-off-by: Li Sha Lim <quic_lishlim@quicinc.com>
LCR PD Violation is due to different clock domain crossing
architecture for PPP & RDI Paths. This issue observes when the
crop/drop Settings don't match for PPP & RDI paths.
The recommendation from Hw Team is to enable crop/drop on
both RDI & PPP paths to keep the delay same.
Enable crop and drop on RDI & PPP paths for v880.
CRs-Fixed: 3387109
Change-Id: I32bc5e6f4665f56d2b8c7ca8bf77cee5d7c24238
Signed-off-by: Chandan Kumar Jha <quic_cjha@quicinc.com>
To provide more peak memory space for camera usecase, utilize
system-movable heap. This will first check in standard system
heap for allocation, if memory is not available, allocation will
happen from system-movable heap. As we can not keep memory from
system-movable heap to stay forever (which will regress memory
power features), need to be careful when allocating from this
heap. All camera userspace allocations' lifetime is at the
usecase boundary, so allocate userspace allocations from
system-movable heap if available, fallback to standard system
heap if not available. kmd internal allocations will most likely
stay forever, so allocate them only from standard system heap.
CRs-Fixed: 3450854
Change-Id: Ic6644dea04cb44bf963b6277205de8502bc34bd9
Signed-off-by: Pavan Kumar Chilamkurthi <quic_pchilamk@quicinc.com>
The cdm release call should be called here only if there
is some other failure after cdm acquire. But since there is
no other failure condition, we are removing it.
CRs-Fixed: 3251362
Change-Id: I2bfad3f00dd95c70377f60d6005214b7892f0359
Signed-off-by: Shardul Bankar <quic_sharbank@quicinc.com>
v980 has different registers for aup and rup and a sync register,
this change adds support to it.
CRs-Fixed: 3321317
Change-Id: I5804bdd6024066760104802ce07ea055b30feefd
Signed-off-by: Ashish Bhimanpalliwar <quic_abhiman@quicinc.com>
when sequential register address present in register setting,
that can be combined as one I2C msg command and save some
Cycles. This lookahead is enabled by default, if it needs
to be disabled then we need to issue below command.
adb shell "echo 0 > /sys/module/camera/parameters/i2c_lookahead_en"
adb shell "echo 0 > /sys/module/camera/parameters/i3c_lookahead_en".
CRs-Fixed: 3418153
Change-Id: I0a63608316fe745e36a25e5206be6681da6aaa76
Signed-off-by: Lokesh Kumar Aakulu <quic_lkumar@quicinc.com>
After device inactive period timeouts, icp hw mgr receives a callback
to deinit the inactive device's clock. The current implementation of
the callback fetches the wrong hw type to deinit. This change will
get the right device type to deinit.
CRs-Fixed: 3449530
Change-Id: I63700d35d62d6096d09d23c933e22da623d087c9
Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
Query the CSF version in use from SMMU proxy driver and
use noncontiguous system heap in case of CSF 2.5
instead of the contiguous secure display heap.
In addition, do not lend the buffer in CSF 2.5.
CRs-Fixed: 3424427
Change-Id: I3d5f2402034dd455c304d5726eb9aa8ee2080dcc
Signed-off-by: Vijay Kumar Tumati <quic_vtumati@quicinc.com>
Print CCI master-id & hardware-id on probe.
Print CSIPHY rx & timer clock rates once when clocks are enabled
and also prints on error trigger notification.
Change-Id: I4ecb1c7214d7482b157c3c1647e19743e8d90e17
CRs-Fixed: 3432375
Signed-off-by: illa lakshmi soujanya <quic_illa@quicinc.com>
camera-kernel:
09d6170 Merge "msm: camera: isp: Move IFE FD out port to non-secure" into camera-kernel.lnx.dev.
Change-Id: I102b02058eefb05bcb6e3323126f57558a8e0427
Signed-off-by: hchintal <quic_hchintal@quicinc.com>
Currently, the IFE FD port is configured to be secure by TZ and the
camera software allocates secure buffers to be consumed by EFA FD
module. However, as we are moving to the software based DLFD, this
port needs to be configured as non secure by TZ and camera should
treat so and allocate non secure buffers.
CRs-Fixed: 3443139
Change-Id: I2fcc89d4d61bd944969bfe854584960c10648f6c
Signed-off-by: Suraj Dongre <quic_sdongre@quicinc.com>
Signed-off-by: Vijay Kumar Tumati <quic_vtumati@quicinc.com>
With the update in the synx driver for async wait, clients
are expected to register the callback with no specific
timeout value.
CRs-Fixed: 3434716
Change-Id: Ie9a5a88f9fddc9512b249919c843e2367de7db4e
Signed-off-by: Karthik Anantha Ram <quic_kartanan@quicinc.com>