summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/la_priv.h
diff options
context:
space:
mode:
authorAdeel Raza <araza@nvidia.com>2013-10-04 16:22:37 -0700
committerChao Xu <cxu@nvidia.com>2013-10-23 16:41:42 -0700
commit410ae54bf080136960486f3832b31e6f9e7a1266 (patch)
tree4f44d598e0cdeba0d4463cd0c1539b873aebb9fa /arch/arm/mach-tegra/la_priv.h
parent853e6bda750b03360441e3d7631705d9b2f28ad2 (diff)
arm: tegra: la: add t12x camera la support
Bug 1381431 Change-Id: I12129c6d8b3e786c637351e4890af659e2654297 Signed-off-by: Adeel Raza <araza@nvidia.com> Reviewed-on: http://git-master/r/289995 Reviewed-by: Bruce Holmer <bholmer@nvidia.com> Reviewed-by: Krishna Reddy <vdumpa@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Chao Xu <cxu@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/la_priv.h')
-rw-r--r--arch/arm/mach-tegra/la_priv.h38
1 files changed, 35 insertions, 3 deletions
diff --git a/arch/arm/mach-tegra/la_priv.h b/arch/arm/mach-tegra/la_priv.h
index 6a4cb6650c93..2ede279026fd 100644
--- a/arch/arm/mach-tegra/la_priv.h
+++ b/arch/arm/mach-tegra/la_priv.h
@@ -58,9 +58,28 @@ do { \
#define NUM_DISP_CLIENTS (LAST_DISP_CLIENT_ID - FIRST_DISP_CLIENT_ID + 1)
#define DISP_CLIENT_ID(id) (ID(id) - FIRST_DISP_CLIENT_ID)
+#define FIRST_CAMERA_CLIENT_ID ID(VI_W)
+#define LAST_CAMERA_CLIENT_ID ID(ISP_WBB)
+#define NUM_CAMERA_CLIENTS (LAST_CAMERA_CLIENT_ID - \
+ FIRST_CAMERA_CLIENT_ID + \
+ 1)
+#define CAMERA_IDX(id) (ID(id) - FIRST_CAMERA_CLIENT_ID)
+#define CAMERA_LA_IDX(id) (id - FIRST_CAMERA_CLIENT_ID)
+#define AGG_CAMERA_ID(id) TEGRA_LA_AGG_CAMERA_##id
+
#define T12X_MC_LA_MAX_VALUE 255
+/* The following enum defines IDs for aggregated camera clients. In some cases
+ we have to deal with groups of camera clients rather than individual
+ clients. */
+enum agg_camera_client_id {
+ TEGRA_LA_AGG_CAMERA_VE = 0,
+ TEGRA_LA_AGG_CAMERA_VE2,
+ TEGRA_LA_AGG_CAMERA_ISP,
+ TEGRA_LA_AGG_CAMERA_NUM_CLIENTS
+};
+
struct la_client_info {
unsigned int fifo_size_in_atoms;
unsigned int expiration_in_ns; /* worst case expiration value */
@@ -75,6 +94,14 @@ struct la_client_info {
unsigned int la_ref_clk_mhz;
};
+struct agg_camera_client_info {
+ unsigned int bw_fp;
+ unsigned int frac_fp;
+ unsigned int ptsa_min;
+ unsigned int ptsa_max;
+ bool is_hiso;
+};
+
struct la_scaling_info {
unsigned int threshold_low;
unsigned int threshold_mid;
@@ -107,6 +134,7 @@ struct ptsa_info {
unsigned int ve_ptsa_rate;
unsigned int ve_ptsa_min;
unsigned int ve_ptsa_max;
+ unsigned int ve2_ptsa_rate;
unsigned int ve2_ptsa_min;
unsigned int ve2_ptsa_max;
unsigned int ring2_ptsa_rate;
@@ -130,6 +158,7 @@ struct ptsa_info {
unsigned int ptsa_grant_dec;
unsigned int bbcll_earb_cfg;
+ unsigned int isp_ptsa_rate;
unsigned int isp_ptsa_min;
unsigned int isp_ptsa_max;
unsigned int a9avppc_ptsa_min;
@@ -181,10 +210,10 @@ struct la_chip_specific {
unsigned short id_to_index[ID(MAX_ID) + 1];
unsigned int disp_bw_array[NUM_DISP_CLIENTS];
struct disp_client disp_clients[NUM_DISP_CLIENTS];
- unsigned int ispa_read_bw;
- unsigned int ispa_write_bw;
- unsigned int ispb_write_bw;
unsigned int bbc_bw_array[ID(BBCLLR) - ID(BBCR) + 1];
+ unsigned int camera_bw_array[NUM_CAMERA_CLIENTS];
+ struct agg_camera_client_info
+ agg_camera_array[TEGRA_LA_AGG_CAMERA_NUM_CLIENTS];
struct la_scaling_info scaling_info[ID(MAX_ID)];
int la_scaling_enable_count;
struct dentry *latency_debug_dir;
@@ -197,6 +226,9 @@ struct la_chip_specific {
void (*init_ptsa)(void);
void (*update_display_ptsa_rate)(unsigned int *disp_bw_array);
+ int (*update_camera_ptsa_rate)(enum tegra_la_id id,
+ unsigned int bw_mbps,
+ int is_hiso);
int (*set_disp_la)(enum tegra_la_id id,
unsigned int bw_mbps,
struct dc_to_la_params disp_params);