mdnie_lite_tuning_chagall.c 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795
  1. /* Copyright (c) 2009-2011, Code Aurora Forum. All rights reserved.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License version 2 and
  5. * only version 2 as published by the Free Software Foundation.
  6. *
  7. * This program is distributed in the hope that it will be useful,
  8. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. * GNU General Public License for more details.
  11. *
  12. * You should have received a copy of the GNU General Public License
  13. * along with this program; if not, write to the Free Software
  14. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  15. * 02110-1301, USA.
  16. *
  17. */
  18. #include <linux/module.h>
  19. #include <linux/kernel.h>
  20. #include <linux/errno.h>
  21. #include <linux/clk.h>
  22. #include <linux/mutex.h>
  23. #include <linux/poll.h>
  24. #include <linux/wait.h>
  25. #include <linux/fs.h>
  26. #include <linux/irq.h>
  27. #include <linux/mm.h>
  28. #include <linux/fb.h>
  29. #include <linux/ctype.h>
  30. #include <linux/miscdevice.h>
  31. #include <linux/dma-mapping.h>
  32. #include <linux/delay.h>
  33. #include <linux/device.h>
  34. #include <linux/fb.h>
  35. #include <linux/msm_mdp.h>
  36. #include <linux/ioctl.h>
  37. #include <linux/lcd.h>
  38. #include "mdss_fb.h"
  39. #include "mdss_panel.h"
  40. #include "mdss_dsi.h"
  41. #include "mdnie_lite_tuning_chagall.h"
  42. #include "mdnie_lite_tuning_data_chagall.h"
  43. #if defined(CONFIG_TDMB)
  44. #include "mdnie_lite_tuning_data_dmb.h"
  45. #endif
  46. int play_speed_1_5;
  47. static struct mipi_samsung_driver_data *mdnie_msd;
  48. //#define MDNIE_LITE_TUN_DATA_DEBUG
  49. #define DPRINT(x...) printk(KERN_ERR "[mdnie lite] " x)
  50. #define PAYLOAD1 mdni_tune_cmd[1]
  51. #define PAYLOAD2 mdni_tune_cmd[3]
  52. #define INPUT_PAYLOAD1(x) PAYLOAD1.payload = x
  53. #define INPUT_PAYLOAD2(x) PAYLOAD2.payload = x
  54. static char mdnie_enable_1[] = {0xB0, 0x45};
  55. static char mdnie_enable_2[] = {0xB6, 0x03};
  56. static char mdnie_global_1[] = {MDNIE_GLOBAL_COMMAND, MDNIE_GLOBAL_FIRST};
  57. static char mdnie_data_1[MDNIE_TUNE_FIRST_SIZE] = {0,};
  58. static char mdnie_global_2[] = {MDNIE_GLOBAL_COMMAND, MDNIE_GLOBAL_SECOND};
  59. static char mdnie_data_2[MDNIE_TUNE_SECOND_SIZE] = {0,};
  60. static char white_rgb_buf[MDNIE_TUNE_FIRST_SIZE] = {0,};
  61. #if 0
  62. static char tune_data1_adb[MDNIE_TUNE_FIRST_SIZE] = {0,};
  63. static char tune_data2_adb[MDNIE_TUNE_SECOND_SIZE] = {0,};
  64. void copy_tuning_data_from_adb(char *data1, char *data2)
  65. {
  66. memcpy(tune_data1_adb, data1, MDNIE_TUNE_FIRST_SIZE);
  67. memcpy(tune_data2_adb, data2, MDNIE_TUNE_SECOND_SIZE);
  68. }
  69. #endif
  70. static struct dsi_cmd_desc mdni_enable_cmd[] = {
  71. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(mdnie_enable_1)}, mdnie_enable_1},
  72. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(mdnie_enable_2)}, mdnie_enable_2},
  73. };
  74. static struct dsi_cmd_desc mdni_tune_cmd[] = {
  75. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(mdnie_global_1)}, mdnie_global_1},
  76. {{DTYPE_DCS_LWRITE, 1, 0, 0, 17, sizeof(mdnie_data_1)}, mdnie_data_1},
  77. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(mdnie_global_2)}, mdnie_global_2},
  78. {{DTYPE_DCS_LWRITE, 1, 0, 0, 17, sizeof(mdnie_data_2)}, mdnie_data_2},
  79. };
  80. #if 0
  81. extern int mdnie_adb_test;
  82. #endif
  83. struct mdnie_lite_tun_type mdnie_tun_state = {
  84. .mdnie_enable = false,
  85. .scenario = mDNIe_UI_MODE,
  86. .background = STANDARD_MODE,
  87. .outdoor = OUTDOOR_OFF_MODE,
  88. .accessibility = ACCESSIBILITY_OFF,
  89. #if defined(CONFIG_TDMB)
  90. .dmb = DMB_MODE_OFF,
  91. #endif
  92. .scr_white_red = 0xff,
  93. .scr_white_green = 0xff,
  94. .scr_white_blue = 0xff,
  95. };
  96. #if !defined(CONFIG_TDMB)
  97. const
  98. #endif
  99. char scenario_name[MAX_mDNIe_MODE][16] = {
  100. "UI_MODE",
  101. "VIDEO_MODE",
  102. "VIDEO_WARM_MODE",
  103. "VIDEO_COLD_MODE",
  104. "CAMERA_MODE",
  105. "NAVI",
  106. "GALLERY_MODE",
  107. "VT_MODE",
  108. "BROWSER",
  109. "eBOOK",
  110. "EMAIL",
  111. };
  112. const char background_name[MAX_BACKGROUND_MODE][10] = {
  113. "DYNAMIC",
  114. "STANDARD",
  115. "NATURAL",
  116. "MOVIE",
  117. "AUTO",
  118. };
  119. const char outdoor_name[MAX_OUTDOOR_MODE][20] = {
  120. "OUTDOOR_OFF_MODE",
  121. "OUTDOOR_ON_MODE",
  122. };
  123. const char accessibility_name[ACCESSIBILITY_MAX][20] = {
  124. "ACCESSIBILITY_OFF",
  125. "NEGATIVE_MODE",
  126. "COLOR_BLIND_MODE",
  127. "SCREEN_CURTAIN_MODE",
  128. };
  129. void print_tun_data(void)
  130. {
  131. int i;
  132. DPRINT("\n");
  133. DPRINT("---- size1 : %d", PAYLOAD1.dchdr.dlen);
  134. for (i = 0; i < MDNIE_TUNE_FIRST_SIZE ; i++)
  135. DPRINT("0x%x ", PAYLOAD1.payload[i]);
  136. DPRINT("\n");
  137. DPRINT("---- size2 : %d", PAYLOAD2.dchdr.dlen);
  138. for (i = 0; i < MDNIE_TUNE_SECOND_SIZE ; i++)
  139. DPRINT("0x%x ", PAYLOAD2.payload[i]);
  140. DPRINT("\n");
  141. }
  142. void free_tun_cmd(void)
  143. {
  144. memset(mdnie_data_1, 0, MDNIE_TUNE_FIRST_SIZE);
  145. memset(mdnie_data_2, 0, MDNIE_TUNE_SECOND_SIZE);
  146. }
  147. static unsigned char get_ascr(unsigned char* tune_value, int address)
  148. {
  149. unsigned short* temp = (unsigned short *)&tune_value[address];
  150. if (tune_value)
  151. return (unsigned char)(be16_to_cpu(*temp) >> BITSHIFT_SCR);
  152. else
  153. return ENODEV;
  154. }
  155. static void set_ascr(unsigned char* tune_value, int address, char value)
  156. {
  157. unsigned short* temp = (unsigned short *)&tune_value[address];
  158. *temp &= ~(cpu_to_be16(0xFF << BITSHIFT_SCR));
  159. *temp |= cpu_to_be16(((u16)value) << BITSHIFT_SCR);
  160. }
  161. void sending_tuning_cmd(void)
  162. {
  163. struct msm_fb_data_type *mfd;
  164. struct mdss_dsi_ctrl_pdata *ctrl_pdata;
  165. mfd = mdnie_msd->mfd;
  166. ctrl_pdata = mdnie_msd->ctrl_pdata;
  167. if (mfd->resume_state == MIPI_SUSPEND_STATE) {
  168. DPRINT("[ERROR] not ST_DSI_RESUME. do not send mipi cmd.\n");
  169. return;
  170. }
  171. #if 0
  172. if (mdnie_adb_test) {
  173. DPRINT("[ERROR] mdnie_adb_test is doning .. copy from adb data .. \n");
  174. INPUT_PAYLOAD1(tune_data2_adb);
  175. INPUT_PAYLOAD2(tune_data1_adb);
  176. }
  177. #endif
  178. mutex_lock(&mdnie_msd->lock);
  179. #ifdef MDNIE_LITE_TUN_DATA_DEBUG
  180. print_tun_data();
  181. #endif
  182. mdss_dsi_cmds_send(ctrl_pdata, mdni_enable_cmd, ARRAY_SIZE(mdni_enable_cmd),0);
  183. mdss_dsi_cmds_send(ctrl_pdata, mdni_tune_cmd, ARRAY_SIZE(mdni_tune_cmd),0);
  184. mutex_unlock(&mdnie_msd->lock);
  185. }
  186. /*
  187. * mDnie priority
  188. * Accessibility > HBM > Screen Mode
  189. */
  190. void mDNIe_Set_Mode(void)
  191. {
  192. struct msm_fb_data_type *mfd;
  193. unsigned char* ascr;
  194. mfd = mdnie_msd->mfd;
  195. /* DPRINT("mDNIe_Set_Mode start\n");*/
  196. if (!mfd) {
  197. DPRINT("[ERROR] mfd is null!\n");
  198. return;
  199. }
  200. #if defined(CONFIG_LCD_FORCE_VIDEO_MODE)
  201. DPRINT("mDNIe_Set_Mode start : return cause of video mode\n");
  202. return;
  203. #endif
  204. if (mfd->blank_mode) {
  205. DPRINT("[ERROR] blank_mode (%d). do not send mipi cmd.\n",
  206. mfd->blank_mode);
  207. return;
  208. }
  209. if (mfd->resume_state == MIPI_SUSPEND_STATE) {
  210. DPRINT("[ERROR] not ST_DSI_RESUME. do not send mipi cmd.\n");
  211. return;
  212. }
  213. if (!mdnie_tun_state.mdnie_enable) {
  214. DPRINT("[ERROR] mDNIE engine is OFF.\n");
  215. return;
  216. }
  217. if (mdnie_tun_state.scenario < mDNIe_UI_MODE || mdnie_tun_state.scenario >= MAX_mDNIe_MODE) {
  218. DPRINT("[ERROR] wrong Scenario mode value : %d\n",
  219. mdnie_tun_state.scenario);
  220. return;
  221. }
  222. play_speed_1_5 = 0;
  223. if (mdnie_tun_state.accessibility) {
  224. DPRINT(" = ACCESSIBILITY MODE =\n");
  225. INPUT_PAYLOAD1(blind_tune_value[mdnie_tun_state.accessibility][0]);
  226. INPUT_PAYLOAD2(blind_tune_value[mdnie_tun_state.accessibility][1]);
  227. }
  228. else if (mdnie_msd->dstat.auto_brightness >= 6 && mdnie_msd->dstat.bright_level == 255) {
  229. DPRINT("[LOCAL CE] HBM mode! only LOCAL CE tuning\n");
  230. if((mdnie_tun_state.scenario == mDNIe_BROWSER_MODE)||(mdnie_tun_state.scenario == mDNIe_eBOOK_MODE)) {
  231. INPUT_PAYLOAD1(LOCAL_CE_TEXT_1);
  232. INPUT_PAYLOAD2(LOCAL_CE_TEXT_2);
  233. }
  234. else {
  235. INPUT_PAYLOAD1(LOCAL_CE_1);
  236. INPUT_PAYLOAD2(LOCAL_CE_2);
  237. }
  238. }
  239. #if defined(CONFIG_TDMB)
  240. else if (mdnie_tun_state.dmb > DMB_MODE_OFF){
  241. if (!dmb_tune_value[mdnie_tun_state.dmb][mdnie_tun_state.background][mdnie_tun_state.outdoor][0] ||
  242. !dmb_tune_value[mdnie_tun_state.dmb][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]) {
  243. pr_err("dmb tune data is NULL!\n");
  244. return;
  245. } else {
  246. INPUT_PAYLOAD1(
  247. dmb_tune_value[mdnie_tun_state.dmb][mdnie_tun_state.background][mdnie_tun_state.outdoor][0]);
  248. INPUT_PAYLOAD2(
  249. dmb_tune_value[mdnie_tun_state.dmb][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]);
  250. }
  251. }
  252. #endif
  253. else {
  254. if (!mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0] ||
  255. !mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]) {
  256. pr_err("mdnie tune data is NULL!\n");
  257. return;
  258. } else {
  259. INPUT_PAYLOAD1(
  260. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0]);
  261. INPUT_PAYLOAD2(
  262. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]);
  263. ascr = mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1];
  264. mdnie_tun_state.scr_white_red = get_ascr(ascr, ADDRESS_SCR_WHITE_RED);
  265. mdnie_tun_state.scr_white_green = get_ascr(ascr, ADDRESS_SCR_WHITE_GREEN);
  266. mdnie_tun_state.scr_white_blue = get_ascr(ascr, ADDRESS_SCR_WHITE_BLUE);
  267. ascr = NULL;
  268. }
  269. }
  270. sending_tuning_cmd();
  271. free_tun_cmd();
  272. DPRINT("mDNIe_Set_Mode end , %s(%d), %s(%d), %s(%d), %s(%d)\n",
  273. scenario_name[mdnie_tun_state.scenario], mdnie_tun_state.scenario,
  274. background_name[mdnie_tun_state.background], mdnie_tun_state.background,
  275. outdoor_name[mdnie_tun_state.outdoor], mdnie_tun_state.outdoor,
  276. accessibility_name[mdnie_tun_state.accessibility], mdnie_tun_state.accessibility);
  277. }
  278. void is_play_speed_1_5(int enable)
  279. {
  280. play_speed_1_5 = enable;
  281. }
  282. /* ##########################################################
  283. * #
  284. * # MDNIE BG Sysfs node
  285. * #
  286. * ##########################################################*/
  287. /* ##########################################################
  288. * #
  289. * # 0. Dynamic
  290. * # 1. Standard
  291. * # 2. Video
  292. * # 3. Natural
  293. * #
  294. * ##########################################################*/
  295. static ssize_t mode_show(struct device *dev,
  296. struct device_attribute *attr, char *buf)
  297. {
  298. DPRINT("Current Background Mode : %s\n",
  299. background_name[mdnie_tun_state.background]);
  300. return snprintf(buf, 256, "Current Background Mode : %s\n",
  301. background_name[mdnie_tun_state.background]);
  302. }
  303. static ssize_t mode_store(struct device *dev,
  304. struct device_attribute *attr, const char *buf, size_t size)
  305. {
  306. int value;
  307. int backup;
  308. sscanf(buf, "%d", &value);
  309. if (value < DYNAMIC_MODE || value >= MAX_BACKGROUND_MODE) {
  310. DPRINT("[ERROR] wrong backgound mode value : %d\n",
  311. value);
  312. return size;
  313. }
  314. backup = mdnie_tun_state.background;
  315. mdnie_tun_state.background = value;
  316. if (mdnie_tun_state.accessibility == NEGATIVE) {
  317. DPRINT("already negative mode(%d), do not set background(%d)\n",
  318. mdnie_tun_state.accessibility, mdnie_tun_state.background);
  319. } else {
  320. DPRINT(" %s : (%s) -> (%s)\n",
  321. __func__, background_name[backup], background_name[mdnie_tun_state.background]);
  322. mDNIe_Set_Mode();
  323. }
  324. return size;
  325. }
  326. static DEVICE_ATTR(mode, 0664, mode_show, mode_store);
  327. static ssize_t scenario_show(struct device *dev,
  328. struct device_attribute *attr,
  329. char *buf)
  330. {
  331. DPRINT("Current Scenario Mode : %s\n",
  332. scenario_name[mdnie_tun_state.scenario]);
  333. return snprintf(buf, 256, "Current Scenario Mode : %s\n",
  334. scenario_name[mdnie_tun_state.scenario]);
  335. }
  336. static ssize_t scenario_store(struct device *dev,
  337. struct device_attribute *attr,
  338. const char *buf, size_t size)
  339. {
  340. int value;
  341. int backup;
  342. sscanf(buf, "%d", &value);
  343. if (value < mDNIe_UI_MODE || value >= MAX_mDNIe_MODE) {
  344. DPRINT("[ERROR] wrong Scenario mode value : %d\n",
  345. value);
  346. return size;
  347. }
  348. backup = mdnie_tun_state.scenario;
  349. mdnie_tun_state.scenario = value;
  350. #if defined(CONFIG_TDMB)
  351. /* mDNIe_DMB_MODE = 20 */
  352. if (value >= mDNIe_DMB_MODE && value <= mDNIe_DMB_COLD_MODE) {
  353. DPRINT("DMB scenario.. (%d)\n", mdnie_tun_state.scenario);
  354. mdnie_tun_state.dmb = value - mDNIe_DMB_MODE;
  355. } else
  356. mdnie_tun_state.dmb = DMB_MODE_OFF;
  357. #endif
  358. if (mdnie_tun_state.accessibility == NEGATIVE) {
  359. DPRINT("already negative mode(%d), do not set mode(%d)\n",
  360. mdnie_tun_state.accessibility, mdnie_tun_state.scenario);
  361. } else {
  362. DPRINT(" %s : (%s) -> (%s)\n",
  363. __func__, scenario_name[backup], scenario_name[mdnie_tun_state.scenario]);
  364. mDNIe_Set_Mode();
  365. }
  366. return size;
  367. }
  368. static DEVICE_ATTR(scenario, 0664, scenario_show,
  369. scenario_store);
  370. static ssize_t mdnieset_user_select_file_cmd_show(struct device *dev,
  371. struct device_attribute *attr,
  372. char *buf)
  373. {
  374. int mdnie_ui = 0;
  375. DPRINT("called %s\n", __func__);
  376. return snprintf(buf, 256, "%u\n", mdnie_ui);
  377. }
  378. static ssize_t mdnieset_user_select_file_cmd_store(struct device *dev,
  379. struct device_attribute
  380. *attr, const char *buf,
  381. size_t size)
  382. {
  383. int value;
  384. sscanf(buf, "%d", &value);
  385. DPRINT
  386. ("inmdnieset_user_select_file_cmd_store, input value = %d\n",
  387. value);
  388. return size;
  389. }
  390. static DEVICE_ATTR(mdnieset_user_select_file_cmd, 0664,
  391. mdnieset_user_select_file_cmd_show,
  392. mdnieset_user_select_file_cmd_store);
  393. static ssize_t mdnieset_init_file_cmd_show(struct device *dev,
  394. struct device_attribute *attr,
  395. char *buf)
  396. {
  397. char temp[] = "mdnieset_init_file_cmd_show\n\0";
  398. DPRINT("called %s\n", __func__);
  399. strcat(buf, temp);
  400. return strlen(buf);
  401. }
  402. static ssize_t mdnieset_init_file_cmd_store(struct device *dev,
  403. struct device_attribute *attr,
  404. const char *buf, size_t size)
  405. {
  406. int value;
  407. sscanf(buf, "%d", &value);
  408. DPRINT("mdnieset_init_file_cmd_store : value(%d)\n", value);
  409. switch (value) {
  410. case 0:
  411. mdnie_tun_state.scenario = mDNIe_UI_MODE;
  412. break;
  413. default:
  414. printk(KERN_ERR
  415. "mdnieset_init_file_cmd_store value is wrong : value(%d)\n",
  416. value);
  417. break;
  418. }
  419. mDNIe_Set_Mode();
  420. return size;
  421. }
  422. static DEVICE_ATTR(mdnieset_init_file_cmd, 0664, mdnieset_init_file_cmd_show,
  423. mdnieset_init_file_cmd_store);
  424. static ssize_t outdoor_show(struct device *dev,
  425. struct device_attribute *attr,
  426. char *buf)
  427. {
  428. DPRINT("Current outdoor Mode : %s\n",
  429. outdoor_name[mdnie_tun_state.outdoor]);
  430. return snprintf(buf, 256, "Current outdoor Mode : %s\n",
  431. outdoor_name[mdnie_tun_state.outdoor]);
  432. }
  433. static ssize_t outdoor_store(struct device *dev,
  434. struct device_attribute *attr,
  435. const char *buf, size_t size)
  436. {
  437. int value;
  438. int backup;
  439. sscanf(buf, "%d", &value);
  440. DPRINT("outdoor value = %d, scenario = %d\n",
  441. value, mdnie_tun_state.scenario);
  442. if (value < OUTDOOR_OFF_MODE || value >= MAX_OUTDOOR_MODE) {
  443. DPRINT("[ERROR] : wrong outdoor mode value : %d\n",
  444. value);
  445. }
  446. backup = mdnie_tun_state.outdoor;
  447. mdnie_tun_state.outdoor = value;
  448. if (mdnie_tun_state.accessibility == NEGATIVE) {
  449. DPRINT("already negative mode(%d), do not outdoor mode(%d)\n",
  450. mdnie_tun_state.accessibility, mdnie_tun_state.outdoor);
  451. } else {
  452. DPRINT(" %s : (%s) -> (%s)\n",
  453. __func__, outdoor_name[backup], outdoor_name[mdnie_tun_state.outdoor]);
  454. mDNIe_Set_Mode();
  455. }
  456. return size;
  457. }
  458. static DEVICE_ATTR(outdoor, 0664, outdoor_show, outdoor_store);
  459. #if 0 // accessibility
  460. static ssize_t negative_show(struct device *dev,
  461. struct device_attribute *attr,
  462. char *buf)
  463. {
  464. return snprintf(buf, 256, "Current negative Value : %s\n",
  465. (mdnie_tun_state.accessibility == 1) ? "Enabled" : "Disabled");
  466. }
  467. static ssize_t negative_store(struct device *dev,
  468. struct device_attribute *attr,
  469. const char *buf, size_t size)
  470. {
  471. int value;
  472. sscanf(buf, "%d", &value);
  473. DPRINT
  474. ("negative_store, input value = %d\n",
  475. value);
  476. mdnie_tun_state.accessibility = value;
  477. mDNIe_Set_Mode();
  478. return size;
  479. }
  480. static DEVICE_ATTR(negative, 0664,
  481. negative_show,
  482. negative_store);
  483. #endif
  484. void is_negative_on(void)
  485. {
  486. DPRINT("is negative Mode On = %d\n", mdnie_tun_state.accessibility);
  487. mDNIe_Set_Mode();
  488. }
  489. static ssize_t playspeed_show(struct device *dev,
  490. struct device_attribute *attr,
  491. char *buf)
  492. {
  493. DPRINT("called %s\n", __func__);
  494. return snprintf(buf, 256, "%d\n", play_speed_1_5);
  495. }
  496. static ssize_t playspeed_store(struct device *dev,
  497. struct device_attribute *attr,
  498. const char *buf, size_t size)
  499. {
  500. int value;
  501. sscanf(buf, "%d", &value);
  502. DPRINT("[Play Speed Set]play speed value = %d\n", value);
  503. is_play_speed_1_5(value);
  504. return size;
  505. }
  506. static DEVICE_ATTR(playspeed, 0664,
  507. playspeed_show,
  508. playspeed_store);
  509. static ssize_t accessibility_show(struct device *dev,
  510. struct device_attribute *attr,
  511. char *buf)
  512. {
  513. DPRINT("Current accessibility Mode : %s\n",
  514. accessibility_name[mdnie_tun_state.accessibility]);
  515. return snprintf(buf, 256, "Current accessibility Mode : %s\n",
  516. accessibility_name[mdnie_tun_state.accessibility]);
  517. }
  518. static ssize_t accessibility_store(struct device *dev,
  519. struct device_attribute *attr,
  520. const char *buf, size_t size)
  521. {
  522. int cmd_value;
  523. char buffer[MDNIE_COLOR_BLINDE_CMD] = {0,};
  524. int buffer2[MDNIE_COLOR_BLINDE_CMD/2] = {0,};
  525. int loop;
  526. char temp;
  527. int backup;
  528. sscanf(buf, "%d %x %x %x %x %x %x %x %x %x", &cmd_value,
  529. &buffer2[0], &buffer2[1], &buffer2[2], &buffer2[3], &buffer2[4],
  530. &buffer2[5], &buffer2[6], &buffer2[7], &buffer2[8]);
  531. backup = mdnie_tun_state.accessibility;
  532. if (cmd_value == NEGATIVE) {
  533. mdnie_tun_state.accessibility = NEGATIVE;
  534. } else if (cmd_value == COLOR_BLIND) {
  535. mdnie_tun_state.accessibility = COLOR_BLIND;
  536. memcpy(buffer,&COLOR_BLIND_2[MDNIE_COLOR_BLINDE_OFFSET],
  537. MDNIE_COLOR_BLINDE_CMD);
  538. for(loop = 0; loop < MDNIE_COLOR_BLINDE_CMD/2; loop++) {
  539. buffer2[loop] = buffer2[loop] & 0xFFFF;
  540. temp = buffer[loop * 2];
  541. temp &= 0xFC;
  542. temp |= ((buffer2[loop] & 0xFF) >> 6) & 0x03;
  543. buffer[loop * 2] = temp;
  544. temp = buffer[loop * 2 + 1];
  545. temp &= 0x03;
  546. temp |= ((buffer2[loop] & 0xFF) << 2) & 0xFC;
  547. temp &= 0xFC;
  548. temp |= (((buffer2[loop] & 0xFF00) >> 8) >> 6) & 0x03;
  549. buffer[loop * 2 + 1] = temp;
  550. temp = buffer[loop * 2 + 2];
  551. temp &= 0x03;
  552. temp |= (((buffer2[loop] & 0xFF00) >> 8) << 2) & 0xFC;
  553. buffer[loop * 2 + 2] = temp;
  554. }
  555. memcpy(&COLOR_BLIND_2[MDNIE_COLOR_BLINDE_OFFSET],
  556. buffer, MDNIE_COLOR_BLINDE_CMD);
  557. } else if (cmd_value == SCREEN_CURTAIN) {
  558. mdnie_tun_state.accessibility = SCREEN_CURTAIN;
  559. } else if (cmd_value == ACCESSIBILITY_OFF) {
  560. mdnie_tun_state.accessibility = ACCESSIBILITY_OFF;
  561. } else
  562. pr_info("%s ACCESSIBILITY_MAX", __func__);
  563. DPRINT(" %s : (%s) -> (%s)\n",
  564. __func__, accessibility_name[backup], accessibility_name[mdnie_tun_state.accessibility]);
  565. mDNIe_Set_Mode();
  566. pr_info("%s cmd_value : %d size : %d", __func__, cmd_value, size);
  567. return size;
  568. }
  569. static DEVICE_ATTR(accessibility, 0664,
  570. accessibility_show,
  571. accessibility_store);
  572. static ssize_t sensorRGB_show(struct device *dev,
  573. struct device_attribute *attr, char *buf)
  574. {
  575. return sprintf(buf, "%d %d %d\n", mdnie_tun_state.scr_white_red, mdnie_tun_state.scr_white_green, mdnie_tun_state.scr_white_blue);
  576. }
  577. static ssize_t sensorRGB_store(struct device *dev,
  578. struct device_attribute *attr, const char *buf, size_t size)
  579. {
  580. int red, green, blue;
  581. char white_red, white_green, white_blue;
  582. sscanf(buf, "%d %d %d", &red, &green, &blue);
  583. if ((mdnie_tun_state.accessibility == ACCESSIBILITY_OFF) && (mdnie_tun_state.background == AUTO_MODE) && \
  584. ((mdnie_tun_state.scenario == mDNIe_BROWSER_MODE) || (mdnie_tun_state.scenario == mDNIe_eBOOK_MODE)))
  585. {
  586. white_red = (char)(red);
  587. white_green = (char)(green);
  588. white_blue= (char)(blue);
  589. mdnie_tun_state.scr_white_red = red;
  590. mdnie_tun_state.scr_white_green = green;
  591. mdnie_tun_state.scr_white_blue= blue;
  592. DPRINT("%s: white_red = %d, white_green = %d, white_blue = %d\n", __func__, white_red, white_green, white_blue);
  593. INPUT_PAYLOAD1(mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0]);
  594. memcpy(white_rgb_buf, mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1], MDNIE_TUNE_FIRST_SIZE);
  595. white_rgb_buf[ADDRESS_SCR_WHITE_RED] = white_red;
  596. white_rgb_buf[ADDRESS_SCR_WHITE_GREEN] = white_green;
  597. white_rgb_buf[ADDRESS_SCR_WHITE_BLUE] = white_blue;
  598. INPUT_PAYLOAD2(white_rgb_buf);
  599. sending_tuning_cmd();
  600. free_tun_cmd();
  601. }
  602. return size;
  603. }
  604. static DEVICE_ATTR(sensorRGB, 0664, sensorRGB_show, sensorRGB_store);
  605. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  606. #if defined(DDI_VIDEO_ENHANCE_TUNING)
  607. #define MAX_FILE_NAME 128
  608. #define TUNING_FILE_PATH "/sdcard/"
  609. static char tuning_file[MAX_FILE_NAME];
  610. #if 0
  611. /*
  612. * Do not use below code but only for Image Quality Debug in Developing Precess.
  613. * Do not comment in this code Because there are contained vulnerability.
  614. */
  615. static char char_to_dec(char data1, char data2)
  616. {
  617. char dec;
  618. dec = 0;
  619. if (data1 >= 'a') {
  620. data1 -= 'a';
  621. data1 += 10;
  622. } else if (data1 >= 'A') {
  623. data1 -= 'A';
  624. data1 += 10;
  625. } else
  626. data1 -= '0';
  627. dec = data1 << 4;
  628. if (data2 >= 'a') {
  629. data2 -= 'a';
  630. data2 += 10;
  631. } else if (data2 >= 'A') {
  632. data2 -= 'A';
  633. data2 += 10;
  634. } else
  635. data2 -= '0';
  636. dec |= data2;
  637. return dec;
  638. }
  639. static void sending_tune_cmd(char *src, int len)
  640. {
  641. int data_pos = 0;
  642. int cmd_step = 0;
  643. int cmd_pos = 0;
  644. int tbl_cnt = 0;
  645. for (data_pos = 0; data_pos < len;) {
  646. if (*(src + data_pos) == '0') {
  647. if (*(src + data_pos + 1) == 'x') {
  648. data_pos += 3;
  649. cmd_pos++;
  650. if (cmd_pos == tune_size_tbl[tbl_cnt] && cmd_step == tbl_cnt) {
  651. cmd_pos = 0;
  652. cmd_step++;
  653. tbl_cnt++;
  654. }
  655. } else
  656. data_pos++;
  657. } else {
  658. data_pos++;
  659. }
  660. }
  661. print_tun_data();
  662. sending_tuning_cmd();
  663. free_tun_cmd();
  664. }
  665. static void load_tuning_file(char *filename)
  666. {
  667. struct file *filp;
  668. char *dp;
  669. long l;
  670. loff_t pos;
  671. int ret;
  672. mm_segment_t fs;
  673. pr_info("%s called loading file name : [%s]\n", __func__,
  674. filename);
  675. fs = get_fs();
  676. set_fs(get_ds());
  677. filp = filp_open(filename, O_RDONLY, 0);
  678. if (IS_ERR(filp)) {
  679. printk(KERN_ERR "%s File open failed\n", __func__);
  680. goto err;
  681. }
  682. l = filp->f_path.dentry->d_inode->i_size;
  683. pr_info("%s Loading File Size : %ld(bytes)", __func__, l);
  684. dp = kmalloc(l + 10, GFP_KERNEL);
  685. if (dp == NULL) {
  686. pr_info("Can't not alloc memory for tuning file load\n");
  687. filp_close(filp, current->files);
  688. goto err;
  689. }
  690. pos = 0;
  691. memset(dp, 0, l);
  692. pr_info("%s before vfs_read()\n", __func__);
  693. ret = vfs_read(filp, (char __user *)dp, l, &pos);
  694. pr_info("%s after vfs_read()\n", __func__);
  695. if (ret != l) {
  696. pr_info("vfs_read() filed ret : %d\n", ret);
  697. kfree(dp);
  698. filp_close(filp, current->files);
  699. goto err;
  700. }
  701. filp_close(filp, current->files);
  702. set_fs(fs);
  703. sending_tune_cmd(dp, l);
  704. kfree(dp);
  705. return;
  706. err:
  707. set_fs(fs);
  708. }
  709. #endif
  710. static ssize_t tuning_show(struct device *dev,
  711. struct device_attribute *attr, char *buf)
  712. {
  713. int ret = 0;
  714. ret = snprintf(buf, MAX_FILE_NAME, "tuned file name : %s\n", tuning_file);
  715. return ret;
  716. }
  717. static ssize_t tuning_store(struct device *dev,
  718. struct device_attribute *attr, const char *buf, size_t size)
  719. {
  720. /*
  721. * Do not use below code but only for Image Quality Debug in Developing Precess.
  722. * Do not comment in this code Because there are contained vulnerability.
  723. */
  724. /*
  725. char *pt;
  726. if (buf == NULL || strchr(buf, '.') || strchr(buf, '/'))
  727. return size;
  728. memset(tuning_file, 0, sizeof(tuning_file));
  729. snprintf(tuning_file, MAX_FILE_NAME, "%s%s", TUNING_FILE_PATH, buf);
  730. pt = tuning_file;
  731. while (*pt) {
  732. if (*pt == '\r' || *pt == '\n') {
  733. *pt = 0;
  734. break;
  735. }
  736. pt++;
  737. }
  738. DPRINT("%s\n", tuning_file);
  739. load_tuning_file(tuning_file);
  740. */
  741. return size;
  742. }
  743. static DEVICE_ATTR(tuning, S_IRUGO | S_IWUSR | S_IWGRP,
  744. tuning_show,
  745. tuning_store);
  746. #endif /* DDI_VIDEO_ENHANCE_TUNING */
  747. #endif /* CONFIG_FB_MSM_MDSS_MDP3 */
  748. static struct class *mdnie_class;
  749. struct device *tune_mdnie_dev;
  750. void init_mdnie_class(void)
  751. {
  752. if (mdnie_tun_state.mdnie_enable) {
  753. pr_err("%s : mdnie already enable.. \n",__func__);
  754. return;
  755. }
  756. DPRINT("start!\n");
  757. mdnie_class = class_create(THIS_MODULE, "mdnie");
  758. if (IS_ERR(mdnie_class))
  759. pr_err("Failed to create class(mdnie)!\n");
  760. tune_mdnie_dev =
  761. device_create(mdnie_class, NULL, 0, NULL,
  762. "mdnie");
  763. if (IS_ERR(tune_mdnie_dev))
  764. pr_err("Failed to create device(mdnie)!\n");
  765. if (device_create_file
  766. (tune_mdnie_dev, &dev_attr_scenario) < 0)
  767. pr_err("Failed to create device file(%s)!\n",
  768. dev_attr_scenario.attr.name);
  769. if (device_create_file
  770. (tune_mdnie_dev,
  771. &dev_attr_mdnieset_user_select_file_cmd) < 0)
  772. pr_err("Failed to create device file(%s)!\n",
  773. dev_attr_mdnieset_user_select_file_cmd.attr.name);
  774. if (device_create_file
  775. (tune_mdnie_dev, &dev_attr_mdnieset_init_file_cmd) < 0)
  776. pr_err("Failed to create device file(%s)!\n",
  777. dev_attr_mdnieset_init_file_cmd.attr.name);
  778. if (device_create_file
  779. (tune_mdnie_dev, &dev_attr_mode) < 0)
  780. pr_err("Failed to create device file(%s)!\n",
  781. dev_attr_mode.attr.name);
  782. if (device_create_file
  783. (tune_mdnie_dev, &dev_attr_outdoor) < 0)
  784. pr_err("Failed to create device file(%s)!\n",
  785. dev_attr_outdoor.attr.name);
  786. #if 0 // accessibility
  787. if (device_create_file
  788. (tune_mdnie_dev, &dev_attr_negative) < 0)
  789. pr_err("Failed to create device file(%s)!\n",
  790. dev_attr_negative.attr.name);
  791. #endif
  792. if (device_create_file
  793. (tune_mdnie_dev, &dev_attr_playspeed) < 0)
  794. pr_err("Failed to create device file(%s)!=n",
  795. dev_attr_playspeed.attr.name);
  796. if (device_create_file
  797. (tune_mdnie_dev, &dev_attr_accessibility) < 0)
  798. pr_err("Failed to create device file(%s)!=n",
  799. dev_attr_accessibility.attr.name);
  800. if (device_create_file
  801. (tune_mdnie_dev, &dev_attr_sensorRGB) < 0)
  802. pr_err("Failed to create device file(%s)!=n",
  803. dev_attr_sensorRGB.attr.name);
  804. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  805. #if defined(DDI_VIDEO_ENHANCE_TUNING)
  806. if (device_create_file
  807. (tune_mdnie_dev, &dev_attr_tuning) < 0)
  808. pr_err("Failed to create device file(%s)!=n",
  809. dev_attr_tuning.attr.name);
  810. #endif
  811. #endif
  812. mdnie_tun_state.mdnie_enable = true;
  813. #if defined(CONFIG_TDMB)
  814. strcpy((char*) scenario_name[mDNIe_DMB_MODE], "DMB_MODE");
  815. strcpy((char*) scenario_name[mDNIe_DMB_WARM_MODE], "DMB_WARM_MODE");
  816. strcpy((char*) scenario_name[mDNIe_DMB_COLD_MODE], "DMB_COLD_MODE");
  817. #endif
  818. DPRINT("end!\n");
  819. }
  820. void mdnie_lite_tuning_init(struct mipi_samsung_driver_data *msd)
  821. {
  822. mdnie_msd = msd;
  823. }
  824. void coordinate_tunning(int x, int y)
  825. {
  826. int tune_number;
  827. int loop_mode, loop_bg;
  828. unsigned char* tune_value;
  829. tune_number = 0;
  830. if (F1(x,y) > 0) {
  831. if (F3(x,y) > 0) {
  832. tune_number = 3;
  833. } else {
  834. if (F4(x,y) < 0)
  835. tune_number = 1;
  836. else
  837. tune_number = 2;
  838. }
  839. } else {
  840. if (F2(x,y) < 0) {
  841. if (F3(x,y) > 0) {
  842. tune_number = 9;
  843. } else {
  844. if (F4(x,y) < 0)
  845. tune_number = 7;
  846. else
  847. tune_number = 8;
  848. }
  849. } else {
  850. if (F3(x,y) > 0)
  851. tune_number = 6;
  852. else {
  853. if (F4(x,y) < 0)
  854. tune_number = 4;
  855. else
  856. tune_number = 5;
  857. }
  858. }
  859. }
  860. pr_info("%s x : %d, y : %d, tune_number : %d", __func__, x, y, tune_number);
  861. for(loop_mode=0; loop_mode < MAX_mDNIe_MODE ; loop_mode++) {
  862. for(loop_bg=0; loop_bg < MAX_BACKGROUND_MODE ; loop_bg++) {
  863. tune_value = mdnie_tune_value[loop_mode][loop_bg][OUTDOOR_OFF_MODE][1];
  864. if (IS_ERR_OR_NULL(tune_value))
  865. continue;
  866. if((get_ascr(tune_value, ADDRESS_SCR_WHITE_RED) == 0xff)
  867. && (get_ascr(tune_value, ADDRESS_SCR_WHITE_GREEN) == 0xff)
  868. && (get_ascr(tune_value, ADDRESS_SCR_WHITE_BLUE) == 0xff)) {
  869. set_ascr(tune_value, ADDRESS_SCR_WHITE_RED, coordinate_data[tune_number][0]);
  870. set_ascr(tune_value, ADDRESS_SCR_WHITE_GREEN, coordinate_data[tune_number][1]);
  871. set_ascr(tune_value, ADDRESS_SCR_WHITE_BLUE, coordinate_data[tune_number][2]);
  872. }
  873. }
  874. }
  875. #if 0
  876. if(get_ascr(DYNAMIC_BROWSER_2, ADDRESS_SCR_WHITE_RED) == 0xFF)
  877. set_ascr(DYNAMIC_BROWSER_2, ADDRESS_SCR_WHITE_RED, coordinate_data[tune_number][0]);
  878. memcpy(&DYNAMIC_BROWSER_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  879. memcpy(&DYNAMIC_GALLERY_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  880. memcpy(&DYNAMIC_UI_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  881. memcpy(&DYNAMIC_VIDEO_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  882. memcpy(&DYNAMIC_VT_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  883. memcpy(&DYNAMIC_EBOOK_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  884. memcpy(&STANDARD_BROWSER_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  885. memcpy(&STANDARD_GALLERY_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  886. memcpy(&STANDARD_UI_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  887. memcpy(&STANDARD_VIDEO_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  888. memcpy(&STANDARD_VT_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  889. memcpy(&STANDARD_EBOOK_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  890. memcpy(&AUTO_BROWSER_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  891. memcpy(&AUTO_CAMERA_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  892. memcpy(&AUTO_GALLERY_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  893. memcpy(&AUTO_UI_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  894. memcpy(&AUTO_VIDEO_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  895. memcpy(&AUTO_VT_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  896. memcpy(&CAMERA_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  897. #endif
  898. }
  899. #if 0
  900. void mDNIe_Set_Mode(enum Lcd_mDNIe_UI mode)
  901. {
  902. struct msm_fb_data_type *mfd;
  903. mfd = mdnie_msd->mfd;
  904. DPRINT("mDNIe_Set_Mode start , mode(%d), background(%d)\n",
  905. mode, mdnie_tun_state.background);
  906. if (!mfd) {
  907. DPRINT("[ERROR] mfd is null!\n");
  908. return;
  909. }
  910. if (mfd->resume_state == MIPI_SUSPEND_STATE) {
  911. DPRINT("[ERROR] not ST_DSI_RESUME. do not send mipi cmd.\n");
  912. return;
  913. }
  914. if (!mdnie_tun_state.mdnie_enable) {
  915. DPRINT("[ERROR] mDNIE engine is OFF.\n");
  916. return;
  917. }
  918. if (mode < mDNIe_UI_MODE || mode >= MAX_mDNIe_MODE) {
  919. DPRINT("[ERROR] wrong Scenario mode value : %d\n",
  920. mode);
  921. return;
  922. }
  923. if (mdnie_tun_state.negative) {
  924. DPRINT("already negative mode(%d), do not set background(%d)\n",
  925. mdnie_tun_state.negative, mdnie_tun_state.background);
  926. return;
  927. }
  928. play_speed_1_5 = 0;
  929. /*
  930. * Blind mode & Screen mode has separated menu.
  931. * To make a sync below code added.
  932. * Bline mode has priority than Screen mode
  933. */
  934. if (mdnie_tun_state.accessibility == COLOR_BLIND)
  935. mode = mDNIE_BLINE_MODE;
  936. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  937. if (get_lcd_panel_res() == 0) { // 0 : wqhd
  938. #endif
  939. switch (mode) {
  940. case mDNIe_UI_MODE:
  941. DPRINT(" = UI MODE =\n");
  942. if (mdnie_tun_state.background == STANDARD_MODE) {
  943. DPRINT(" = STANDARD MODE =\n");
  944. INPUT_PAYLOAD1(STANDARD_UI_1);
  945. INPUT_PAYLOAD2(STANDARD_UI_2);
  946. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  947. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  948. DPRINT(" = NATURAL MODE =\n");
  949. INPUT_PAYLOAD1(NATURAL_UI_1);
  950. INPUT_PAYLOAD2(NATURAL_UI_2);
  951. #endif
  952. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  953. DPRINT(" = DYNAMIC MODE =\n");
  954. INPUT_PAYLOAD1(DYNAMIC_UI_1);
  955. INPUT_PAYLOAD2(DYNAMIC_UI_2);
  956. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  957. DPRINT(" = MOVIE MODE =\n");
  958. INPUT_PAYLOAD1(MOVIE_UI_1);
  959. INPUT_PAYLOAD2(MOVIE_UI_2);
  960. } else if (mdnie_tun_state.background == AUTO_MODE) {
  961. DPRINT(" = AUTO MODE =\n");
  962. INPUT_PAYLOAD1(AUTO_UI_1);
  963. INPUT_PAYLOAD2(AUTO_UI_2);
  964. }
  965. break;
  966. case mDNIe_VIDEO_MODE:
  967. DPRINT(" = VIDEO MODE =\n");
  968. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  969. DPRINT(" = OUTDOOR ON MODE =\n");
  970. INPUT_PAYLOAD1(OUTDOOR_VIDEO_1);
  971. INPUT_PAYLOAD2(OUTDOOR_VIDEO_2);
  972. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  973. DPRINT(" = OUTDOOR OFF MODE =\n");
  974. if (mdnie_tun_state.background == STANDARD_MODE) {
  975. DPRINT(" = STANDARD MODE =\n");
  976. INPUT_PAYLOAD1(STANDARD_VIDEO_1);
  977. INPUT_PAYLOAD2(STANDARD_VIDEO_2);
  978. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  979. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  980. DPRINT(" = NATURAL MODE =\n");
  981. INPUT_PAYLOAD1(NATURAL_VIDEO_1);
  982. INPUT_PAYLOAD2(NATURAL_VIDEO_2);
  983. #endif
  984. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  985. DPRINT(" = DYNAMIC MODE =\n");
  986. INPUT_PAYLOAD1(DYNAMIC_VIDEO_1);
  987. INPUT_PAYLOAD2(DYNAMIC_VIDEO_2);
  988. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  989. DPRINT(" = MOVIE MODE =\n");
  990. INPUT_PAYLOAD1(MOVIE_VIDEO_1);
  991. INPUT_PAYLOAD2(MOVIE_VIDEO_2);
  992. } else if (mdnie_tun_state.background == AUTO_MODE) {
  993. DPRINT(" = AUTO MODE =\n");
  994. INPUT_PAYLOAD1(AUTO_VIDEO_1);
  995. INPUT_PAYLOAD2(AUTO_VIDEO_2);
  996. }
  997. }
  998. break;
  999. case mDNIe_VIDEO_WARM_MODE:
  1000. DPRINT(" = VIDEO WARM MODE =\n");
  1001. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1002. DPRINT(" = OUTDOOR ON MODE =\n");
  1003. INPUT_PAYLOAD1(WARM_OUTDOOR_1);
  1004. INPUT_PAYLOAD2(WARM_OUTDOOR_2);
  1005. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1006. DPRINT(" = OUTDOOR OFF MODE =\n");
  1007. INPUT_PAYLOAD1(WARM_1);
  1008. INPUT_PAYLOAD2(WARM_2);
  1009. }
  1010. break;
  1011. case mDNIe_VIDEO_COLD_MODE:
  1012. DPRINT(" = VIDEO COLD MODE =\n");
  1013. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1014. DPRINT(" = OUTDOOR ON MODE =\n");
  1015. INPUT_PAYLOAD1(COLD_OUTDOOR_1);
  1016. INPUT_PAYLOAD2(COLD_OUTDOOR_2);
  1017. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1018. DPRINT(" = OUTDOOR OFF MODE =\n");
  1019. INPUT_PAYLOAD1(COLD_1);
  1020. INPUT_PAYLOAD2(COLD_2);
  1021. }
  1022. break;
  1023. case mDNIe_CAMERA_MODE:
  1024. DPRINT(" = CAMERA MODE =\n");
  1025. if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1026. if (mdnie_tun_state.background == AUTO_MODE) {
  1027. DPRINT(" = AUTO MODE =\n");
  1028. INPUT_PAYLOAD1(AUTO_CAMERA_1);
  1029. INPUT_PAYLOAD2(AUTO_CAMERA_2);
  1030. } else {
  1031. DPRINT(" = STANDARD MODE =\n");
  1032. INPUT_PAYLOAD1(CAMERA_1);
  1033. INPUT_PAYLOAD2(CAMERA_2);
  1034. }
  1035. } else if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1036. DPRINT(" = NATURAL MODE =\n");
  1037. INPUT_PAYLOAD1(CAMERA_OUTDOOR_1);
  1038. INPUT_PAYLOAD2(CAMERA_OUTDOOR_2);
  1039. }
  1040. break;
  1041. case mDNIe_NAVI:
  1042. DPRINT(" = NAVI MODE =\n");
  1043. DPRINT("no data for NAVI MODE..\n");
  1044. break;
  1045. case mDNIe_GALLERY:
  1046. DPRINT(" = GALLERY MODE =\n");
  1047. if (mdnie_tun_state.background == STANDARD_MODE) {
  1048. DPRINT(" = STANDARD MODE =\n");
  1049. INPUT_PAYLOAD1(STANDARD_GALLERY_1);
  1050. INPUT_PAYLOAD2(STANDARD_GALLERY_2);
  1051. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1052. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1053. DPRINT(" = NATURAL MODE =\n");
  1054. INPUT_PAYLOAD1(NATURAL_GALLERY_1);
  1055. INPUT_PAYLOAD2(NATURAL_GALLERY_2);
  1056. #endif
  1057. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1058. DPRINT(" = DYNAMIC MODE =\n");
  1059. INPUT_PAYLOAD1(DYNAMIC_GALLERY_1);
  1060. INPUT_PAYLOAD2(DYNAMIC_GALLERY_2);
  1061. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1062. DPRINT(" = MOVIE MODE =\n");
  1063. INPUT_PAYLOAD1(MOVIE_GALLERY_1);
  1064. INPUT_PAYLOAD2(MOVIE_GALLERY_2);
  1065. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1066. DPRINT(" = AUTO MODE =\n");
  1067. INPUT_PAYLOAD1(AUTO_GALLERY_1);
  1068. INPUT_PAYLOAD2(AUTO_GALLERY_2);
  1069. }
  1070. break;
  1071. case mDNIe_VT_MODE:
  1072. DPRINT(" = VT MODE =\n");
  1073. if (mdnie_tun_state.background == STANDARD_MODE) {
  1074. DPRINT(" = STANDARD MODE =\n");
  1075. INPUT_PAYLOAD1(STANDARD_VT_1);
  1076. INPUT_PAYLOAD2(STANDARD_VT_2);
  1077. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1078. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1079. DPRINT(" = NATURAL MODE =\n");
  1080. INPUT_PAYLOAD1(NATURAL_VT_1);
  1081. INPUT_PAYLOAD2(NATURAL_VT_2);
  1082. #endif
  1083. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1084. DPRINT(" = DYNAMIC MODE =\n");
  1085. INPUT_PAYLOAD1(DYNAMIC_VT_1);
  1086. INPUT_PAYLOAD2(DYNAMIC_VT_2);
  1087. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1088. DPRINT(" = MOVIE MODE =\n");
  1089. INPUT_PAYLOAD1(MOVIE_VT_1);
  1090. INPUT_PAYLOAD2(MOVIE_VT_2);
  1091. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1092. DPRINT(" = AUTO MODE =\n");
  1093. INPUT_PAYLOAD1(AUTO_VT_1);
  1094. INPUT_PAYLOAD2(AUTO_VT_2);
  1095. }
  1096. break;
  1097. #if defined(CONFIG_TDMB)
  1098. case mDNIe_DMB_MODE:
  1099. DPRINT(" = DMB MODE =\n");
  1100. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1101. DPRINT(" = OUTDOOR ON MODE =\n");
  1102. INPUT_PAYLOAD1(OUTDOOR_DMB_1);
  1103. INPUT_PAYLOAD2(OUTDOOR_DMB_2);
  1104. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1105. DPRINT(" = OUTDOOR OFF MODE =\n");
  1106. if (mdnie_tun_state.background == STANDARD_MODE) {
  1107. DPRINT(" = STANDARD MODE =\n");
  1108. INPUT_PAYLOAD1(STANDARD_DMB_1);
  1109. INPUT_PAYLOAD2(STANDARD_DMB_2);
  1110. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1111. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1112. DPRINT(" = NATURAL MODE =\n");
  1113. INPUT_PAYLOAD1(NATURAL_DMB_1);
  1114. INPUT_PAYLOAD2(NATURAL_DMB_2);
  1115. #endif
  1116. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1117. DPRINT(" = DYNAMIC MODE =\n");
  1118. INPUT_PAYLOAD1(DYNAMIC_DMB_1);
  1119. INPUT_PAYLOAD2(DYNAMIC_DMB_2);
  1120. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1121. DPRINT(" = MOVIE MODE =\n");
  1122. INPUT_PAYLOAD1(MOVIE_DMB_1);
  1123. INPUT_PAYLOAD2(MOVIE_DMB_2);
  1124. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1125. DPRINT(" = AUTO MODE =\n");
  1126. INPUT_PAYLOAD1(AUTO_DMB_1);
  1127. INPUT_PAYLOAD2(AUTO_DMB_2);
  1128. }
  1129. }
  1130. break;
  1131. case mDNIe_DMB_WARM_MODE:
  1132. DPRINT(" = DMB WARM MODE =\n");
  1133. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1134. DPRINT(" = OUTDOOR ON MODE =\n");
  1135. INPUT_PAYLOAD1(WARM_OUTDOOR_DMB_1);
  1136. INPUT_PAYLOAD2(WARM_OUTDOOR_DMB_2);
  1137. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1138. DPRINT(" = OUTDOOR OFF MODE =\n");
  1139. INPUT_PAYLOAD1(WARM_DMB_1);
  1140. INPUT_PAYLOAD2(WARM_DMB_2);
  1141. }
  1142. break;
  1143. case mDNIe_DMB_COLD_MODE:
  1144. DPRINT(" = DMB COLD MODE =\n");
  1145. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1146. DPRINT(" = OUTDOOR ON MODE =\n");
  1147. INPUT_PAYLOAD1(COLD_OUTDOOR_DMB_1);
  1148. INPUT_PAYLOAD2(COLD_OUTDOOR_DMB_2);
  1149. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1150. DPRINT(" = OUTDOOR OFF MODE =\n");
  1151. INPUT_PAYLOAD1(COLD_DMB_1);
  1152. INPUT_PAYLOAD2(COLD_DMB_2);
  1153. }
  1154. break;
  1155. #endif
  1156. case mDNIe_BROWSER_MODE:
  1157. DPRINT(" = BROWSER MODE =\n");
  1158. if (mdnie_tun_state.background == STANDARD_MODE) {
  1159. DPRINT(" = STANDARD MODE =\n");
  1160. INPUT_PAYLOAD1(STANDARD_BROWSER_1);
  1161. INPUT_PAYLOAD2(STANDARD_BROWSER_2);
  1162. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1163. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1164. DPRINT(" = NATURAL MODE =\n");
  1165. INPUT_PAYLOAD1(NATURAL_BROWSER_1);
  1166. INPUT_PAYLOAD2(NATURAL_BROWSER_2);
  1167. #endif
  1168. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1169. DPRINT(" = DYNAMIC MODE =\n");
  1170. INPUT_PAYLOAD1(DYNAMIC_BROWSER_1);
  1171. INPUT_PAYLOAD2(DYNAMIC_BROWSER_2);
  1172. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1173. DPRINT(" = MOVIE MODE =\n");
  1174. INPUT_PAYLOAD1(MOVIE_BROWSER_1);
  1175. INPUT_PAYLOAD2(MOVIE_BROWSER_2);
  1176. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1177. DPRINT(" = AUTO MODE =\n");
  1178. INPUT_PAYLOAD1(AUTO_BROWSER_1);
  1179. INPUT_PAYLOAD2(AUTO_BROWSER_2);
  1180. }
  1181. break;
  1182. case mDNIe_eBOOK_MODE:
  1183. DPRINT(" = eBOOK MODE =\n");
  1184. if (mdnie_tun_state.background == STANDARD_MODE) {
  1185. DPRINT(" = STANDARD MODE =\n");
  1186. INPUT_PAYLOAD1(STANDARD_EBOOK_1);
  1187. INPUT_PAYLOAD2(STANDARD_EBOOK_2);
  1188. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1189. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1190. DPRINT(" = NATURAL MODE =\n");
  1191. INPUT_PAYLOAD1(NATURAL_EBOOK_1);
  1192. INPUT_PAYLOAD2(NATURAL_EBOOK_2);
  1193. #endif
  1194. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1195. DPRINT(" = DYNAMIC MODE =\n");
  1196. INPUT_PAYLOAD1(DYNAMIC_EBOOK_1);
  1197. INPUT_PAYLOAD2(DYNAMIC_EBOOK_2);
  1198. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1199. DPRINT(" = MOVIE MODE =\n");
  1200. INPUT_PAYLOAD1(MOVIE_EBOOK_1);
  1201. INPUT_PAYLOAD2(MOVIE_EBOOK_2);
  1202. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1203. DPRINT(" = AUTO MODE =\n");
  1204. INPUT_PAYLOAD1(AUTO_EBOOK_1);
  1205. INPUT_PAYLOAD2(AUTO_EBOOK_2);
  1206. }
  1207. break;
  1208. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1209. case mDNIe_EMAIL_MODE:
  1210. DPRINT(" = EMAIL MODE =\n");
  1211. if (mdnie_tun_state.background == STANDARD_MODE) {
  1212. DPRINT(" = STANDARD MODE =\n");
  1213. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1214. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1215. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1216. DPRINT(" = NATURAL MODE =\n");
  1217. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1218. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1219. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1220. DPRINT(" = DYNAMIC MODE =\n");
  1221. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1222. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1223. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1224. DPRINT(" = MOVIE MODE =\n");
  1225. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1226. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1227. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1228. DPRINT(" = AUTO MODE =\n");
  1229. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1230. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1231. }
  1232. break;
  1233. #endif
  1234. case mDNIE_BLINE_MODE:
  1235. DPRINT(" = BLIND MODE =\n");
  1236. INPUT_PAYLOAD1(COLOR_BLIND_1);
  1237. INPUT_PAYLOAD2(COLOR_BLIND_2);
  1238. break;
  1239. default:
  1240. DPRINT("[%s] no option (%d)\n", __func__, mode);
  1241. return;
  1242. }
  1243. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  1244. }else { // 1: fhd
  1245. switch (mode) {
  1246. case mDNIe_UI_MODE:
  1247. DPRINT(" = UI MODE =\n");
  1248. if (mdnie_tun_state.background == STANDARD_MODE) {
  1249. DPRINT(" = STANDARD MODE =\n");
  1250. INPUT_PAYLOAD1(STANDARD_UI_1_FHD);
  1251. INPUT_PAYLOAD2(STANDARD_UI_2_FHD);
  1252. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1253. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1254. DPRINT(" = NATURAL MODE =\n");
  1255. INPUT_PAYLOAD1(NATURAL_UI_1_FHD);
  1256. INPUT_PAYLOAD2(NATURAL_UI_2_FHD);
  1257. #endif
  1258. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1259. DPRINT(" = DYNAMIC MODE =\n");
  1260. INPUT_PAYLOAD1(DYNAMIC_UI_1_FHD);
  1261. INPUT_PAYLOAD2(DYNAMIC_UI_2_FHD);
  1262. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1263. DPRINT(" = MOVIE MODE =\n");
  1264. INPUT_PAYLOAD1(MOVIE_UI_1_FHD);
  1265. INPUT_PAYLOAD2(MOVIE_UI_2_FHD);
  1266. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1267. DPRINT(" = AUTO MODE =\n");
  1268. INPUT_PAYLOAD1(AUTO_UI_1_FHD);
  1269. INPUT_PAYLOAD2(AUTO_UI_2_FHD);
  1270. }
  1271. break;
  1272. case mDNIe_VIDEO_MODE:
  1273. DPRINT(" = VIDEO MODE =\n");
  1274. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1275. DPRINT(" = OUTDOOR ON MODE =\n");
  1276. INPUT_PAYLOAD1(OUTDOOR_VIDEO_1_FHD);
  1277. INPUT_PAYLOAD2(OUTDOOR_VIDEO_2_FHD);
  1278. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1279. DPRINT(" = OUTDOOR OFF MODE =\n");
  1280. if (mdnie_tun_state.background == STANDARD_MODE) {
  1281. DPRINT(" = STANDARD MODE =\n");
  1282. INPUT_PAYLOAD1(STANDARD_VIDEO_1_FHD);
  1283. INPUT_PAYLOAD2(STANDARD_VIDEO_2_FHD);
  1284. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1285. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1286. DPRINT(" = NATURAL MODE =\n");
  1287. INPUT_PAYLOAD1(NATURAL_VIDEO_1_FHD);
  1288. INPUT_PAYLOAD2(NATURAL_VIDEO_2_FHD);
  1289. #endif
  1290. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1291. DPRINT(" = DYNAMIC MODE =\n");
  1292. INPUT_PAYLOAD1(DYNAMIC_VIDEO_1_FHD);
  1293. INPUT_PAYLOAD2(DYNAMIC_VIDEO_2_FHD);
  1294. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1295. DPRINT(" = MOVIE MODE =\n");
  1296. INPUT_PAYLOAD1(MOVIE_VIDEO_1_FHD);
  1297. INPUT_PAYLOAD2(MOVIE_VIDEO_2_FHD);
  1298. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1299. DPRINT(" = AUTO MODE =\n");
  1300. INPUT_PAYLOAD1(AUTO_VIDEO_1_FHD);
  1301. INPUT_PAYLOAD2(AUTO_VIDEO_2_FHD);
  1302. }
  1303. }
  1304. break;
  1305. case mDNIe_VIDEO_WARM_MODE:
  1306. DPRINT(" = VIDEO WARM MODE =\n");
  1307. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1308. DPRINT(" = OUTDOOR ON MODE =\n");
  1309. INPUT_PAYLOAD1(WARM_OUTDOOR_1_FHD);
  1310. INPUT_PAYLOAD2(WARM_OUTDOOR_2_FHD);
  1311. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1312. DPRINT(" = OUTDOOR OFF MODE =\n");
  1313. INPUT_PAYLOAD1(WARM_1_FHD);
  1314. INPUT_PAYLOAD2(WARM_2_FHD);
  1315. }
  1316. break;
  1317. case mDNIe_VIDEO_COLD_MODE:
  1318. DPRINT(" = VIDEO COLD MODE =\n");
  1319. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1320. DPRINT(" = OUTDOOR ON MODE =\n");
  1321. INPUT_PAYLOAD1(COLD_OUTDOOR_1_FHD);
  1322. INPUT_PAYLOAD2(COLD_OUTDOOR_2_FHD);
  1323. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1324. DPRINT(" = OUTDOOR OFF MODE =\n");
  1325. INPUT_PAYLOAD1(COLD_1_FHD);
  1326. INPUT_PAYLOAD2(COLD_2_FHD);
  1327. }
  1328. break;
  1329. case mDNIe_CAMERA_MODE:
  1330. DPRINT(" = CAMERA MODE =\n");
  1331. if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1332. if (mdnie_tun_state.background == AUTO_MODE) {
  1333. DPRINT(" = AUTO MODE =\n");
  1334. INPUT_PAYLOAD1(AUTO_CAMERA_1_FHD);
  1335. INPUT_PAYLOAD2(AUTO_CAMERA_2_FHD);
  1336. } else {
  1337. DPRINT(" = STANDARD MODE =\n");
  1338. INPUT_PAYLOAD1(CAMERA_1_FHD);
  1339. INPUT_PAYLOAD2(CAMERA_2_FHD);
  1340. }
  1341. } else if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1342. DPRINT(" = NATURAL MODE =\n");
  1343. INPUT_PAYLOAD1(CAMERA_OUTDOOR_1_FHD);
  1344. INPUT_PAYLOAD2(CAMERA_OUTDOOR_2_FHD);
  1345. }
  1346. break;
  1347. case mDNIe_NAVI:
  1348. DPRINT(" = NAVI MODE =\n");
  1349. DPRINT("no data for NAVI MODE..\n");
  1350. break;
  1351. case mDNIe_GALLERY:
  1352. DPRINT(" = GALLERY MODE =\n");
  1353. if (mdnie_tun_state.background == STANDARD_MODE) {
  1354. DPRINT(" = STANDARD MODE =\n");
  1355. INPUT_PAYLOAD1(STANDARD_GALLERY_1_FHD);
  1356. INPUT_PAYLOAD2(STANDARD_GALLERY_2_FHD);
  1357. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1358. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1359. DPRINT(" = NATURAL MODE =\n");
  1360. INPUT_PAYLOAD1(NATURAL_GALLERY_1_FHD);
  1361. INPUT_PAYLOAD2(NATURAL_GALLERY_2_FHD);
  1362. #endif
  1363. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1364. DPRINT(" = DYNAMIC MODE =\n");
  1365. INPUT_PAYLOAD1(DYNAMIC_GALLERY_1_FHD);
  1366. INPUT_PAYLOAD2(DYNAMIC_GALLERY_2_FHD);
  1367. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1368. DPRINT(" = MOVIE MODE =\n");
  1369. INPUT_PAYLOAD1(MOVIE_GALLERY_1_FHD);
  1370. INPUT_PAYLOAD2(MOVIE_GALLERY_2_FHD);
  1371. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1372. DPRINT(" = AUTO MODE =\n");
  1373. INPUT_PAYLOAD1(AUTO_GALLERY_1_FHD);
  1374. INPUT_PAYLOAD2(AUTO_GALLERY_2_FHD);
  1375. }
  1376. break;
  1377. case mDNIe_VT_MODE:
  1378. DPRINT(" = VT MODE =\n");
  1379. if (mdnie_tun_state.background == STANDARD_MODE) {
  1380. DPRINT(" = STANDARD MODE =\n");
  1381. INPUT_PAYLOAD1(STANDARD_VT_1_FHD);
  1382. INPUT_PAYLOAD2(STANDARD_VT_2_FHD);
  1383. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1384. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1385. DPRINT(" = NATURAL MODE =\n");
  1386. INPUT_PAYLOAD1(NATURAL_VT_1_FHD);
  1387. INPUT_PAYLOAD2(NATURAL_VT_2_FHD);
  1388. #endif
  1389. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1390. DPRINT(" = DYNAMIC MODE =\n");
  1391. INPUT_PAYLOAD1(DYNAMIC_VT_1_FHD);
  1392. INPUT_PAYLOAD2(DYNAMIC_VT_2_FHD);
  1393. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1394. DPRINT(" = MOVIE MODE =\n");
  1395. INPUT_PAYLOAD1(MOVIE_VT_1_FHD);
  1396. INPUT_PAYLOAD2(MOVIE_VT_2_FHD);
  1397. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1398. DPRINT(" = AUTO MODE =\n");
  1399. INPUT_PAYLOAD1(AUTO_VT_1_FHD);
  1400. INPUT_PAYLOAD2(AUTO_VT_2_FHD);
  1401. }
  1402. break;
  1403. #if defined(CONFIG_TDMB)
  1404. case mDNIe_DMB_MODE:
  1405. DPRINT(" = DMB MODE =\n");
  1406. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1407. DPRINT(" = OUTDOOR ON MODE =\n");
  1408. INPUT_PAYLOAD1(OUTDOOR_DMB_1);
  1409. INPUT_PAYLOAD2(OUTDOOR_DMB_2);
  1410. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1411. DPRINT(" = OUTDOOR OFF MODE =\n");
  1412. if (mdnie_tun_state.background == STANDARD_MODE) {
  1413. DPRINT(" = STANDARD MODE =\n");
  1414. INPUT_PAYLOAD1(STANDARD_DMB_1);
  1415. INPUT_PAYLOAD2(STANDARD_DMB_2);
  1416. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1417. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1418. DPRINT(" = NATURAL MODE =\n");
  1419. INPUT_PAYLOAD1(NATURAL_DMB_1);
  1420. INPUT_PAYLOAD2(NATURAL_DMB_2);
  1421. #endif
  1422. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1423. DPRINT(" = DYNAMIC MODE =\n");
  1424. INPUT_PAYLOAD1(DYNAMIC_DMB_1);
  1425. INPUT_PAYLOAD2(DYNAMIC_DMB_2);
  1426. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1427. DPRINT(" = MOVIE MODE =\n");
  1428. INPUT_PAYLOAD1(MOVIE_DMB_1);
  1429. INPUT_PAYLOAD2(MOVIE_DMB_2);
  1430. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1431. DPRINT(" = AUTO MODE =\n");
  1432. INPUT_PAYLOAD1(AUTO_DMB_1);
  1433. INPUT_PAYLOAD2(AUTO_DMB_2);
  1434. }
  1435. }
  1436. break;
  1437. case mDNIe_DMB_WARM_MODE:
  1438. DPRINT(" = DMB WARM MODE =\n");
  1439. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1440. DPRINT(" = OUTDOOR ON MODE =\n");
  1441. INPUT_PAYLOAD1(WARM_OUTDOOR_DMB_1);
  1442. INPUT_PAYLOAD2(WARM_OUTDOOR_DMB_2);
  1443. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1444. DPRINT(" = OUTDOOR OFF MODE =\n");
  1445. INPUT_PAYLOAD1(WARM_DMB_1);
  1446. INPUT_PAYLOAD2(WARM_DMB_2);
  1447. }
  1448. break;
  1449. case mDNIe_DMB_COLD_MODE:
  1450. DPRINT(" = DMB COLD MODE =\n");
  1451. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1452. DPRINT(" = OUTDOOR ON MODE =\n");
  1453. INPUT_PAYLOAD1(COLD_OUTDOOR_DMB_1);
  1454. INPUT_PAYLOAD2(COLD_OUTDOOR_DMB_2);
  1455. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1456. DPRINT(" = OUTDOOR OFF MODE =\n");
  1457. INPUT_PAYLOAD1(COLD_DMB_1);
  1458. INPUT_PAYLOAD2(COLD_DMB_2);
  1459. }
  1460. break;
  1461. #endif
  1462. case mDNIe_BROWSER_MODE:
  1463. DPRINT(" = BROWSER MODE =\n");
  1464. if (mdnie_tun_state.background == STANDARD_MODE) {
  1465. DPRINT(" = STANDARD MODE =\n");
  1466. INPUT_PAYLOAD1(STANDARD_BROWSER_1);
  1467. INPUT_PAYLOAD2(STANDARD_BROWSER_2);
  1468. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1469. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1470. DPRINT(" = NATURAL MODE =\n");
  1471. INPUT_PAYLOAD1(NATURAL_BROWSER_1);
  1472. INPUT_PAYLOAD2(NATURAL_BROWSER_2);
  1473. #endif
  1474. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1475. DPRINT(" = DYNAMIC MODE =\n");
  1476. INPUT_PAYLOAD1(DYNAMIC_BROWSER_1);
  1477. INPUT_PAYLOAD2(DYNAMIC_BROWSER_2);
  1478. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1479. DPRINT(" = MOVIE MODE =\n");
  1480. INPUT_PAYLOAD1(MOVIE_BROWSER_1);
  1481. INPUT_PAYLOAD2(MOVIE_BROWSER_2);
  1482. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1483. DPRINT(" = AUTO MODE =\n");
  1484. INPUT_PAYLOAD1(AUTO_BROWSER_1);
  1485. INPUT_PAYLOAD2(AUTO_BROWSER_2);
  1486. }
  1487. break;
  1488. case mDNIe_eBOOK_MODE:
  1489. DPRINT(" = eBOOK MODE =\n");
  1490. if (mdnie_tun_state.background == STANDARD_MODE) {
  1491. DPRINT(" = STANDARD MODE =\n");
  1492. INPUT_PAYLOAD1(STANDARD_EBOOK_1);
  1493. INPUT_PAYLOAD2(STANDARD_EBOOK_2);
  1494. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1495. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1496. DPRINT(" = NATURAL MODE =\n");
  1497. INPUT_PAYLOAD1(NATURAL_EBOOK_1);
  1498. INPUT_PAYLOAD2(NATURAL_EBOOK_2);
  1499. #endif
  1500. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1501. DPRINT(" = DYNAMIC MODE =\n");
  1502. INPUT_PAYLOAD1(DYNAMIC_EBOOK_1);
  1503. INPUT_PAYLOAD2(DYNAMIC_EBOOK_2);
  1504. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1505. DPRINT(" = MOVIE MODE =\n");
  1506. INPUT_PAYLOAD1(MOVIE_EBOOK_1);
  1507. INPUT_PAYLOAD2(MOVIE_EBOOK_2);
  1508. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1509. DPRINT(" = AUTO MODE =\n");
  1510. INPUT_PAYLOAD1(AUTO_EBOOK_1);
  1511. INPUT_PAYLOAD2(AUTO_EBOOK_2);
  1512. }
  1513. break;
  1514. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1515. case mDNIe_EMAIL_MODE:
  1516. DPRINT(" = EMAIL MODE =\n");
  1517. if (mdnie_tun_state.background == STANDARD_MODE) {
  1518. DPRINT(" = STANDARD MODE =\n");
  1519. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1520. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1521. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1522. DPRINT(" = NATURAL MODE =\n");
  1523. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1524. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1525. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1526. DPRINT(" = DYNAMIC MODE =\n");
  1527. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1528. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1529. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1530. DPRINT(" = MOVIE MODE =\n");
  1531. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1532. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1533. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1534. DPRINT(" = AUTO MODE =\n");
  1535. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1536. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1537. }
  1538. break;
  1539. #endif
  1540. case mDNIE_BLINE_MODE:
  1541. DPRINT(" = BLIND MODE =\n");
  1542. INPUT_PAYLOAD1(COLOR_BLIND_1);
  1543. INPUT_PAYLOAD2(COLOR_BLIND_2);
  1544. break;
  1545. default:
  1546. DPRINT("[%s] no option (%d)\n", __func__, mode);
  1547. return;
  1548. }
  1549. }
  1550. #endif
  1551. sending_tuning_cmd();
  1552. free_tun_cmd();
  1553. DPRINT("mDNIe_Set_Mode end , mode(%d), background(%d)\n",
  1554. mode, mdnie_tun_state.background);
  1555. }
  1556. #endif