aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/samsung/smart_dimming_ea8061.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/samsung/smart_dimming_ea8061.h')
-rw-r--r--drivers/video/samsung/smart_dimming_ea8061.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/drivers/video/samsung/smart_dimming_ea8061.h b/drivers/video/samsung/smart_dimming_ea8061.h
new file mode 100644
index 0000000..263c2e2
--- /dev/null
+++ b/drivers/video/samsung/smart_dimming_ea8061.h
@@ -0,0 +1,133 @@
+/* linux/drivers/video/samsung/smartdimming.h
+ *
+ * Copyright (c) 2010 Samsung Electronics Co., Ltd.
+ * http://www.samsung.com
+
+ * Samsung Smart Dimming for OCTA
+ *
+ * Minwoo Kim, <minwoo7945.kim@samsung.com>
+ *
+*/
+
+
+#ifndef __SMART_DIMMING_H__
+#define __SMART_DIMMING_H__
+
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/mutex.h>
+#include <linux/wait.h>
+#include <linux/ctype.h>
+
+#define MAX_GRADATION 300
+#define PANEL_ID_MAX 3
+#define GAMMA_300CD_MAX 9
+
+
+enum {
+ CI_RED = 0,
+ CI_GREEN = 1,
+ CI_BLUE = 2,
+ CI_MAX = 3,
+};
+
+
+enum {
+ IV_VT ,
+ IV_3 ,
+ IV_11 ,
+ IV_23 ,
+ IV_35 ,
+ IV_51,
+ IV_87 ,
+ IV_151,
+ IV_203,
+ IV_255,
+ IV_MAX,
+ IV_TABLE_MAX,
+};
+
+
+enum {
+ AD_IVT,
+ AD_IV3,
+ AD_IV11,
+ AD_IV23 ,
+ AD_IV35,
+ AD_IV51 ,
+ AD_IV87 ,
+ AD_IV151 ,
+ AD_IV203 ,
+ AD_IV255 ,
+ AD_IVMAX ,
+};
+
+
+enum {
+ G_21,
+ G_213,
+ G_215,
+ G_218,
+ G_22,
+ G_221,
+ G_222,
+ G_223,
+ G_224,
+ G_225,
+ G_MAX,
+};
+
+
+struct str_voltage_entry {
+ u32 v[CI_MAX];
+};
+
+
+struct str_table_info {
+ /* et : start gray value */
+ u8 st;
+ /* end gray value, st + count */
+ u8 et;
+ u8 count;
+ const u8 *offset_table;
+ /* rv : ratio value */
+ u32 rv;
+};
+
+
+struct str_flookup_table {
+ u16 entry;
+ u16 count;
+};
+
+
+struct str_smart_dim {
+ u8 panelid[PANEL_ID_MAX];
+ s16 mtp[CI_MAX][IV_MAX];
+ struct str_voltage_entry ve[256];
+ const u8 *default_gamma;
+ struct str_table_info t_info[IV_TABLE_MAX];
+ const struct str_flookup_table *flooktbl;
+ const u32 *g22_tbl;
+ const u32 *gamma_table[G_MAX];
+ const u32 *g300_gra_tbl;
+ u32 adjust_volt[CI_MAX][AD_IVMAX];
+};
+
+struct rgb_offset_info {
+ unsigned int candela_idx;
+ unsigned int gray;
+ unsigned int rgb;
+ int offset;
+};
+
+
+int init_table_info_ea8061(struct str_smart_dim *smart);
+u8 calc_voltage_table_ea8061(struct str_smart_dim *smart, const u8 *mtp);
+u32 calc_gamma_table_ea8061(struct str_smart_dim *smart, u32 gv, u8 result[], u8 gamma_curve, const u8 *mtp);
+u32 calc_gamma_table_190_ea8061(struct str_smart_dim *smart, u32 gv, u8 result[], u8 gamma_curve, const u8 *mtp);
+u32 calc_gamma_table_20_100_ea8061(struct str_smart_dim *smart, u32 gv, u8 result[], u8 gamma_curve, const u8 *mtp);
+
+#endif