summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorE V Ravi <evenka@codeaurora.org>2018-11-16 23:54:27 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2018-12-12 20:52:54 -0800
commit16b4f6747c2faddcf36ac00a703a4cf2f9eed21b (patch)
tree328a7a0fdf91bc759bd30541159194554617dc16
parente46bc1b058b0d491c019e22c9708e7cfd068269d (diff)
msm: ais: Update early camera with new apis
Early domain core driver provides apis to communicate with LK instead of using scratch registers Change-Id: If312307d0b2eec7a40faf8575a7ad12451408c7c Signed-off-by: E V Ravi <evenka@codeaurora.org>
-rw-r--r--drivers/media/platform/msm/ais/isp/msm_isp_util.c3
-rw-r--r--drivers/media/platform/msm/ais/sensor/cci/msm_early_cam.c21
2 files changed, 9 insertions, 15 deletions
diff --git a/drivers/media/platform/msm/ais/isp/msm_isp_util.c b/drivers/media/platform/msm/ais/isp/msm_isp_util.c
index 83b3dfe68932..8753592d3dbf 100644
--- a/drivers/media/platform/msm/ais/isp/msm_isp_util.c
+++ b/drivers/media/platform/msm/ais/isp/msm_isp_util.c
@@ -24,6 +24,7 @@
#define CREATE_TRACE_POINTS
#include "trace/events/msm_cam.h"
#include "sensor/cci/msm_early_cam.h"
+#include <soc/qcom/early_domain.h>
#define MAX_ISP_V4l2_EVENTS 100
#define MAX_ISP_REG_LIST 100
@@ -2292,6 +2293,8 @@ int msm_isp_open_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
vfe_dev->isp_raw2_debug = 0;
/* Postpone hardware changes until early camera is complete */
+ /* Signal LK early camera that Kernel started running AIS */
+ request_early_service_shutdown(EARLY_CAMERA);
msm_early_camera_wait();
if (vfe_dev->hw_info->vfe_ops.core_ops.init_hw(vfe_dev) < 0) {
diff --git a/drivers/media/platform/msm/ais/sensor/cci/msm_early_cam.c b/drivers/media/platform/msm/ais/sensor/cci/msm_early_cam.c
index 1329511440c4..7329dd9ddb27 100644
--- a/drivers/media/platform/msm/ais/sensor/cci/msm_early_cam.c
+++ b/drivers/media/platform/msm/ais/sensor/cci/msm_early_cam.c
@@ -17,7 +17,7 @@
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/of_platform.h>
-#include <linux/iopoll.h>
+#include <soc/qcom/early_domain.h>
#include "msm_sd.h"
#include "msm_early_cam.h"
#include "msm_cam_cci_hwreg.h"
@@ -39,12 +39,6 @@
static struct platform_driver msm_early_camera_driver;
static struct early_cam_device *new_early_cam_dev;
-#define MMSS_A_VFE_0_BASE 0x00A10000
-#define MMSS_A_VFE_0_SIZE 0x1000
-#define EARLY_CAMERA_SIGNAL_DONE 0xa5a5a5a5
-#define EARLY_CAMERA_SIGNAL_DISABLED 0
-#define MMSS_A_VFE_0_SPARE 0xC84
-
int msm_early_cam_disable_clocks(void)
{
int rc = 0;
@@ -263,14 +257,11 @@ int msm_ais_disable_clocks(void)
void msm_early_camera_wait(void)
{
- u32 val = 0;
- void __iomem *base;
-
- base = ioremap(MMSS_A_VFE_0_BASE, MMSS_A_VFE_0_SIZE);
- readl_poll_timeout(base + MMSS_A_VFE_0_SPARE, val,
- ((val == EARLY_CAMERA_SIGNAL_DONE)
- || (val == EARLY_CAMERA_SIGNAL_DISABLED)), 0, 0);
- iounmap(base);
+ while (get_early_service_status(EARLY_CAMERA)) {
+ CDBG("%s: wait for signal of early camera from LK",
+ __func__);
+ msleep(500);
+ }
}
static int msm_early_cam_probe(struct platform_device *pdev)