msm: camera: cdm: Add support for different CDM hardware

Different CDM hardware have different capability and registers.
With old register space, handling new features and operations
would have been a complex task. This change takes care of old
version of CDM and also changes the regspace to provide every
register's access to CDM.
This change further adds support for "arbitration" in case of
multi-context CDMs.
Exports reset functionality to clients, detection of CDM hang.
Flushing the CDM requests and dumping the FIFO content for all
contexts.
It also adds submitting "debug_gen_irq" as BL_done IRQ is only
an indication for availability of FIFO's. The AHB operations
are completed can only be known if the added "debug_gen_irqs"
gets executed and are received by the CDM.

CRs-Fixed: 2594541
Change-Id: I9846b1c5320ba652c5d3b7d83d616d2dabc843e1
Signed-off-by: Abhilash Kumar <krabhi@codeaurora.org>
Signed-off-by: Trishansh Bhardwaj <tbhardwa@codeaurora.org>
This commit is contained in:
Trishansh Bhardwaj
2019-12-19 14:56:09 +05:30
parent 4aad75a2f9
commit d907c2c7cb
23 changed files with 3057 additions and 753 deletions

View File

@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
*/
#ifndef _CAM_SOC_UTIL_H_
@@ -123,6 +123,7 @@ struct cam_soc_gpio_data {
* @index: Instance id for the camera device
* @dev_name: Device Name
* @irq_name: Name of the irq associated with the device
* @label_name: label name
* @irq_line: Irq resource
* @irq_data: Private data that is passed when IRQ is requested
* @compatible: Compatible string associated with the device
@@ -171,6 +172,7 @@ struct cam_hw_soc_info {
uint32_t index;
const char *dev_name;
const char *irq_name;
const char *label_name;
struct resource *irq_line;
void *irq_data;
const char *compatible;