mdnie_lite_tuning.c 72 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395
  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.h"
  42. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_FULL_HD_PT_PANEL) // H
  43. #include "mdnie_lite_tuning_data_hlte.h"
  44. #elif defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT_PANEL) // KS01
  45. #include "mdnie_lite_tuning_data.h"
  46. #elif defined(CONFIG_FB_MSM_MIPI_SAMSUNG_YOUM_CMD_FULL_HD_PT_PANEL) // F
  47. #include "mdnie_lite_tuning_data_flte.h"
  48. #elif defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) // K
  49. #if defined(CONFIG_NEW_UX_MDNIE)
  50. #include "mdnie_lite_tuning_data_klte_fhd_s6e3fa2_newux.h"
  51. #else
  52. #include "mdnie_lite_tuning_data_klte_fhd_s6e3fa2.h"
  53. #endif
  54. #elif defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL)
  55. #include "mdnie_lite_tuning_data_slte_hd_ea8064g.h"
  56. #elif defined(CONFIG_FB_MSM_MIPI_JDI_TFT_VIDEO_FULL_HD_PT_PANEL) // JACTIVE
  57. #include "mdnie_lite_tuning_data_jactiveltexx.h"
  58. /*
  59. #elif defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_WVGA_S6E88A0_PT_PANEL) // ?
  60. #include "mdnie_lite_tuning_data_wvga_s6e88a0.h"
  61. #elif defined(CONFIG_MACH_JS01LTEDCM) || defined(CONFIG_MACH_JS01LTESBM) // JS01
  62. #include "mdnie_lite_tuning_data_js01.h"
  63. */
  64. #elif defined(CONFIG_FB_MSM_MDSS_SAMSUNG_OCTA_VIDEO_720P_PT_PANEL)
  65. #include "mdnie_lite_tuning_data_fresco.h"
  66. #elif defined(CONFIG_FB_MSM_MDSS_MAGNA_OCTA_VIDEO_720P_PANEL)
  67. #include "mdnie_lite_tuning_data_kmini.h"
  68. #elif defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL) // PATEK
  69. #include "mdnie_lite_tuning_data_patek.h"
  70. #elif defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL) // KANAS
  71. #include "mdnie_lite_tuning_data_wvga_nt35502.h"
  72. #elif defined (CONFIG_FB_MSM_MDSS_SHARP_HD_PANEL)
  73. #include "mdss_ms01_panel.h"
  74. #include "mdnie_lite_tuning_data_ms01.h"
  75. #elif defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQXGA_S6E3HA1_PT_PANEL)
  76. #include "mdnie_lite_tuning_data_klimt.h"
  77. #else
  78. #include "mdnie_lite_tuning_data.h"
  79. #endif
  80. #if defined(CONFIG_TDMB)
  81. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) // K
  82. #include "mdnie_lite_tuning_data_dmb_fhd_s6e3fa2.h"
  83. #else
  84. #include "mdnie_lite_tuning_data_dmb.h"
  85. #endif
  86. #endif
  87. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  88. static struct mdss_dsi_driver_data *mdnie_msd;
  89. #if defined(CONFIG_FB_MSM_MDSS_DSI_DBG)
  90. int dsi_ctrl_on;
  91. #endif
  92. #else
  93. static struct mipi_samsung_driver_data *mdnie_msd;
  94. #endif
  95. #define MDNIE_LITE_TUN_DEBUG
  96. #ifdef MDNIE_LITE_TUN_DEBUG
  97. #define DPRINT(x...) printk(KERN_ERR "[mdnie lite] " x)
  98. #else
  99. #define DPRINT(x...)
  100. #endif
  101. #define MAX_LUT_SIZE 256
  102. /*#define MDNIE_LITE_TUN_DATA_DEBUG*/
  103. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  104. #define PAYLOAD1 mdni_tune_cmd[1]
  105. #define PAYLOAD2 mdni_tune_cmd[2]
  106. #define PAYLOAD3 mdni_tune_cmd[3]
  107. #define PAYLOAD4 mdni_tune_cmd[4]
  108. #define PAYLOAD5 mdni_tune_cmd[5]
  109. #define INPUT_PAYLOAD1(x) PAYLOAD1.payload = x
  110. #define INPUT_PAYLOAD2(x) PAYLOAD2.payload = x
  111. #define INPUT_PAYLOAD3(x) PAYLOAD3.payload = x
  112. #define INPUT_PAYLOAD4(x) PAYLOAD4.payload = x
  113. #define INPUT_PAYLOAD5(x) PAYLOAD5.payload = x
  114. #else
  115. #define PAYLOAD1 mdni_tune_cmd[3]
  116. #define PAYLOAD2 mdni_tune_cmd[2]
  117. #define INPUT_PAYLOAD1(x) PAYLOAD1.payload = x
  118. #define INPUT_PAYLOAD2(x) PAYLOAD2.payload = x
  119. #endif
  120. int play_speed_1_5;
  121. struct dsi_buf dsi_mdnie_tx_buf;
  122. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) || defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL)
  123. #if defined(CONFIG_LCD_CLASS_DEVICE) && defined(DDI_VIDEO_ENHANCE_TUNING)
  124. extern int mdnie_adb_test;
  125. #endif
  126. int get_lcd_panel_res(void);
  127. #endif
  128. struct mdnie_lite_tun_type mdnie_tun_state = {
  129. .mdnie_enable = false,
  130. .scenario = mDNIe_UI_MODE,
  131. #ifdef MDNIE_LITE_MODE
  132. .background = 0,
  133. #else
  134. .background = AUTO_MODE,
  135. #endif /* MDNIE_LITE_MODE */
  136. .outdoor = OUTDOOR_OFF_MODE,
  137. .accessibility = ACCESSIBILITY_OFF,
  138. #if defined(CONFIG_TDMB)
  139. .dmb = DMB_MODE_OFF,
  140. #endif
  141. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  142. .scr_white_red = 0xff,
  143. .scr_white_green = 0xff,
  144. .scr_white_blue = 0xff,
  145. #endif
  146. };
  147. #if !defined(CONFIG_TDMB)
  148. const
  149. #endif
  150. char scenario_name[MAX_mDNIe_MODE][16] = {
  151. "UI_MODE",
  152. "VIDEO_MODE",
  153. "VIDEO_WARM_MODE",
  154. "VIDEO_COLD_MODE",
  155. "CAMERA_MODE",
  156. "NAVI",
  157. "GALLERY_MODE",
  158. "VT_MODE",
  159. "BROWSER",
  160. "eBOOK",
  161. "EMAIL",
  162. #if defined(CONFIG_LCD_HMT)
  163. "HMT_8",
  164. "HMT_16",
  165. #endif
  166. };
  167. const char background_name[MAX_BACKGROUND_MODE][10] = {
  168. "DYNAMIC",
  169. #ifndef MDNIE_LITE_MODE
  170. "STANDARD",
  171. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  172. "NATURAL",
  173. #endif
  174. "MOVIE",
  175. "AUTO",
  176. #endif /* MDNIE_LITE_MODE */
  177. };
  178. const char outdoor_name[MAX_OUTDOOR_MODE][20] = {
  179. "OUTDOOR_OFF_MODE",
  180. #ifndef MDNIE_LITE_MODE
  181. "OUTDOOR_ON_MODE",
  182. #endif /* MDNIE_LITE_MODE */
  183. };
  184. const char accessibility_name[ACCESSIBILITY_MAX][20] = {
  185. "ACCESSIBILITY_OFF",
  186. "NEGATIVE_MODE",
  187. #ifndef NEGATIVE_COLOR_USE_ACCESSIBILLITY
  188. "COLOR_BLIND_MODE",
  189. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) || \
  190. defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_FULL_HD_PT_PANEL) || defined (CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL)||\
  191. defined(CONFIG_FB_MSM_MDSS_MAGNA_OCTA_VIDEO_720P_PANEL) || defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL) ||\
  192. defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQXGA_S6E3HA1_PT_PANEL) || defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT_PANEL)
  193. "SCREEN_CURTAIN_MODE",
  194. #endif
  195. "GRAYSCALE_MODE",
  196. "GRAY_NEGATIVE_MODE",
  197. #endif /* NEGATIVE_COLOR_USE_ACCESSIBILLITY */
  198. };
  199. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  200. static char cmd_enable[6] = { 0xF0, 0x55, 0xAA, 0x52, 0x08, 0x00 };
  201. #else
  202. static char level1_key[] = {
  203. 0xF0,
  204. 0x5A, 0x5A,
  205. };
  206. #if defined(CONFIG_FB_MSM_MDSS_SAMSUNG_OCTA_VIDEO_720P_PT_PANEL) ||defined(CONFIG_FB_MSM_MDSS_MAGNA_OCTA_VIDEO_720P_PANEL) \
  207. || defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL)
  208. static char level2_key[] = {
  209. 0xF1,
  210. 0x5A, 0x5A,
  211. };
  212. #else
  213. static char level2_key[] = {
  214. 0xF0,
  215. 0x5A, 0x5A,
  216. };
  217. #endif
  218. #endif
  219. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) || defined (CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL)
  220. static char level1_key_disable[] = {
  221. 0xF0,
  222. 0xA5, 0xA5,
  223. };
  224. #elif defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  225. static char cmd_disable[6] = { 0xF0, 0x55, 0xAA, 0x52, 0x00, 0x00 };
  226. #endif
  227. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  228. static char tune_data1[MDNIE_TUNE_FIRST_SIZE] = {0,};
  229. static char tune_data2[MDNIE_TUNE_SECOND_SIZE] = {0,};
  230. static char tune_data3[MDNIE_TUNE_THIRD_SIZE] = { 0,};
  231. static char tune_data4[MDNIE_TUNE_FOURTH_SIZE] = { 0,};
  232. static char tune_data5[MDNIE_TUNE_FIFTH_SIZE] = { 0,};
  233. #else
  234. static char tune_data1[MDNIE_TUNE_FIRST_SIZE] = {0,};
  235. static char tune_data2[MDNIE_TUNE_SECOND_SIZE] = {0,};
  236. #endif
  237. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  238. static char white_rgb_buf[MDNIE_TUNE_FIRST_SIZE] = {0,};
  239. #endif
  240. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) || defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL) \
  241. || defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL)
  242. static char tune_data1_adb[MDNIE_TUNE_FIRST_SIZE] = {0,};
  243. static char tune_data2_adb[MDNIE_TUNE_SECOND_SIZE] = {0,};
  244. void copy_tuning_data_from_adb(char *data1, char *data2)
  245. {
  246. memcpy(tune_data1_adb, data1, MDNIE_TUNE_FIRST_SIZE);
  247. memcpy(tune_data2_adb, data2, MDNIE_TUNE_SECOND_SIZE);
  248. }
  249. #endif
  250. static struct dsi_cmd_desc mdni_tune_cmd[] = {
  251. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  252. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(cmd_enable)}, cmd_enable},
  253. {{DTYPE_DCS_LWRITE, 0, 0, 0, 0, sizeof(tune_data1)}, tune_data1},
  254. {{DTYPE_DCS_LWRITE, 0, 0, 0, 0, sizeof(tune_data2)}, tune_data2},
  255. {{DTYPE_DCS_LWRITE, 0, 0, 0, 0, sizeof(tune_data3)}, tune_data3},
  256. {{DTYPE_DCS_LWRITE, 0, 0, 0, 0, sizeof(tune_data4)}, tune_data4},
  257. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(tune_data5)}, tune_data5},
  258. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(cmd_disable)}, cmd_disable},
  259. #else
  260. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
  261. sizeof(level1_key)}, level1_key},
  262. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
  263. sizeof(level2_key)}, level2_key},
  264. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
  265. sizeof(tune_data1)}, tune_data1},
  266. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
  267. sizeof(tune_data2)}, tune_data2},
  268. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) || defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL)
  269. {{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
  270. sizeof(level1_key_disable)}, level1_key_disable},
  271. #endif
  272. #endif
  273. };
  274. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  275. #define MAX_TUNE_SIZE 5
  276. static int tune_size_tbl[MAX_TUNE_SIZE] = {
  277. MDNIE_TUNE_FIRST_SIZE,
  278. MDNIE_TUNE_SECOND_SIZE,
  279. MDNIE_TUNE_THIRD_SIZE,
  280. MDNIE_TUNE_FOURTH_SIZE,
  281. MDNIE_TUNE_FIFTH_SIZE
  282. };
  283. #endif
  284. void print_tun_data(void)
  285. {
  286. int i;
  287. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  288. int j = 0;
  289. DPRINT("\n");
  290. for(j = 0 ; j < MAX_TUNE_SIZE ; j++) {
  291. DPRINT("---- size%d : %d", j+1, mdni_tune_cmd[j+1].dchdr.dlen);
  292. for (i = 0; i < tune_size_tbl[j] ; i++)
  293. DPRINT("0x%02X ", mdni_tune_cmd[j+1].payload[i]);
  294. DPRINT("\n");
  295. }
  296. #else
  297. DPRINT("\n");
  298. DPRINT("---- size1 : %d", PAYLOAD1.dchdr.dlen);
  299. for (i = 0; i < MDNIE_TUNE_SECOND_SIZE ; i++)
  300. DPRINT("0x%x ", PAYLOAD1.payload[i]);
  301. DPRINT("\n");
  302. DPRINT("---- size2 : %d", PAYLOAD2.dchdr.dlen);
  303. for (i = 0; i < MDNIE_TUNE_FIRST_SIZE ; i++)
  304. DPRINT("0x%x ", PAYLOAD2.payload[i]);
  305. DPRINT("\n");
  306. #endif
  307. }
  308. void free_tun_cmd(void)
  309. {
  310. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  311. memset(tune_data1, 0, MDNIE_TUNE_FIRST_SIZE);
  312. memset(tune_data2, 0, MDNIE_TUNE_SECOND_SIZE);
  313. memset(tune_data3, 0, MDNIE_TUNE_THIRD_SIZE);
  314. memset(tune_data4, 0, MDNIE_TUNE_FOURTH_SIZE);
  315. memset(tune_data5, 0, MDNIE_TUNE_FIFTH_SIZE);
  316. #else
  317. memset(tune_data1, 0, MDNIE_TUNE_FIRST_SIZE);
  318. memset(tune_data2, 0, MDNIE_TUNE_SECOND_SIZE);
  319. #endif
  320. }
  321. void sending_tuning_cmd(void)
  322. {
  323. struct msm_fb_data_type *mfd;
  324. struct mdss_dsi_ctrl_pdata *ctrl_pdata;
  325. mfd = mdnie_msd->mfd;
  326. ctrl_pdata = mdnie_msd->ctrl_pdata;
  327. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  328. if (!mfd) {
  329. DPRINT("[ERROR] mfd is null!\n");
  330. return;
  331. }
  332. if (mfd->blank_mode) {
  333. DPRINT("[ERROR] blank_mode (%d). do not send mipi cmd.\n",
  334. mfd->blank_mode);
  335. return;
  336. }
  337. #endif
  338. if (mfd->resume_state == MIPI_SUSPEND_STATE) {
  339. DPRINT("[ERROR] not ST_DSI_RESUME. do not send mipi cmd.\n");
  340. return;
  341. }
  342. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  343. if (!mdnie_tun_state.mdnie_enable) {
  344. DPRINT("[ERROR] mDNIE engine is OFF.\n");
  345. return;
  346. }
  347. #if defined(CONFIG_FB_MSM_MDSS_DSI_DBG)
  348. if(!dsi_ctrl_on) {
  349. DPRINT("[ERROR] dsi_on (%d). do not send mipi cmd.\n", dsi_ctrl_on);
  350. return;
  351. }
  352. #endif
  353. #endif
  354. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)|| defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL)
  355. #if defined(CONFIG_LCD_CLASS_DEVICE) && defined(DDI_VIDEO_ENHANCE_TUNING)
  356. if (mdnie_adb_test) {
  357. DPRINT("[ERROR] mdnie_adb_test is doning .. copy from adb data .. \n");
  358. INPUT_PAYLOAD1(tune_data2_adb);
  359. INPUT_PAYLOAD2(tune_data1_adb);
  360. }
  361. #endif
  362. #endif
  363. mutex_lock(&mdnie_msd->lock);
  364. #ifdef MDNIE_LITE_TUN_DATA_DEBUG
  365. print_tun_data();
  366. #endif
  367. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  368. mdss_dsi_cmds_send(ctrl_pdata, mdni_tune_cmd, ARRAY_SIZE(mdni_tune_cmd));
  369. #else
  370. #if defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL)
  371. mdss_dsi_cmds_send(ctrl_pdata, mdni_tune_cmd, ARRAY_SIZE(mdni_tune_cmd), CMD_REQ_SINGLE_TX);
  372. #else
  373. mdss_dsi_cmds_send(ctrl_pdata, mdni_tune_cmd, ARRAY_SIZE(mdni_tune_cmd), 0);
  374. #endif
  375. #endif
  376. mutex_unlock(&mdnie_msd->lock);
  377. }
  378. /*
  379. * mDnie priority
  380. * Accessibility > HBM > Screen Mode
  381. */
  382. void mDNIe_Set_Mode(void)
  383. {
  384. struct msm_fb_data_type *mfd;
  385. mfd = mdnie_msd->mfd;
  386. /* DPRINT("mDNIe_Set_Mode start\n");*/
  387. if (!mfd) {
  388. DPRINT("[ERROR] mfd is null!\n");
  389. return;
  390. }
  391. #if defined(CONFIG_LCD_FORCE_VIDEO_MODE)
  392. DPRINT("mDNIe_Set_Mode start : return cause of video mode\n");
  393. return;
  394. #endif
  395. if (mfd->blank_mode) {
  396. DPRINT("[ERROR] blank_mode (%d). do not send mipi cmd.\n",
  397. mfd->blank_mode);
  398. return;
  399. }
  400. if (mfd->resume_state == MIPI_SUSPEND_STATE) {
  401. DPRINT("[ERROR] not ST_DSI_RESUME. do not send mipi cmd.\n");
  402. return;
  403. }
  404. if (!mdnie_tun_state.mdnie_enable) {
  405. DPRINT("[ERROR] mDNIE engine is OFF.\n");
  406. return;
  407. }
  408. if (mdnie_tun_state.scenario < mDNIe_UI_MODE || mdnie_tun_state.scenario >= MAX_mDNIe_MODE) {
  409. DPRINT("[ERROR] wrong Scenario mode value : %d\n",
  410. mdnie_tun_state.scenario);
  411. return;
  412. }
  413. #if defined(CONFIG_FB_MSM_MDSS_DSI_DBG) && defined(CONFIG_FB_MSM_MDSS_MDP3)
  414. if(!dsi_ctrl_on) {
  415. DPRINT("[ERROR] dsi_on (%d). do not send mipi cmd.\n", dsi_ctrl_on);
  416. return;
  417. }
  418. #endif
  419. play_speed_1_5 = 0;
  420. #if defined(CONFIG_FB_MSM_MIPI_JDI_TFT_VIDEO_FULL_HD_PT_PANEL) // JACTIVE
  421. if(mdnie_tun_state.scenario == mDNIe_EMAIL_MODE && \
  422. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0] == NULL) {
  423. mdnie_tun_state.scenario = mDNIe_eBOOK_MODE;
  424. DPRINT("EMAIL mode data is null, set eBOOK mode. \n");
  425. }
  426. #endif
  427. if (mdnie_tun_state.accessibility) {
  428. DPRINT(" = ACCESSIBILITY MODE =\n");
  429. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  430. INPUT_PAYLOAD1(blind_tune_value[mdnie_tun_state.accessibility][0]);
  431. INPUT_PAYLOAD2(blind_tune_value[mdnie_tun_state.accessibility][1]);
  432. INPUT_PAYLOAD3(blind_tune_value[mdnie_tun_state.accessibility][2]);
  433. INPUT_PAYLOAD4(blind_tune_value[mdnie_tun_state.accessibility][3]);
  434. INPUT_PAYLOAD5(blind_tune_value[mdnie_tun_state.accessibility][4]);
  435. #else
  436. INPUT_PAYLOAD1(blind_tune_value[mdnie_tun_state.accessibility][0]);
  437. INPUT_PAYLOAD2(blind_tune_value[mdnie_tun_state.accessibility][1]);
  438. #endif
  439. }
  440. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) || defined (CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL) \
  441. || defined (CONFIG_FB_MSM_MDSS_MAGNA_OCTA_VIDEO_720P_PANEL)
  442. else if (mdnie_msd->dstat.auto_brightness >= 6 && mdnie_msd->dstat.bright_level == 255) {
  443. DPRINT("[LOCAL CE] HBM mode! only LOCAL CE tuning\n");
  444. #if defined(CONFIG_MDNIE_ENHENCED_LOCAL_CE)
  445. INPUT_PAYLOAD1(LOCAL_CE_1_ENHENCED);
  446. INPUT_PAYLOAD2(LOCAL_CE_2_ENHENCED);
  447. #else
  448. #if defined (CONFIG_FB_MSM_MDSS_MAGNA_OCTA_VIDEO_720P_PANEL)
  449. if((mdnie_tun_state.scenario == mDNIe_BROWSER_MODE)||(mdnie_tun_state.scenario == mDNIe_eBOOK_MODE))
  450. {
  451. INPUT_PAYLOAD1(LOCAL_CE_1_TEXT);
  452. INPUT_PAYLOAD2(LOCAL_CE_2_TEXT);
  453. }
  454. else
  455. #endif
  456. {
  457. INPUT_PAYLOAD1(LOCAL_CE_1);
  458. INPUT_PAYLOAD2(LOCAL_CE_2);
  459. }
  460. #endif
  461. }
  462. #endif
  463. #if defined(CONFIG_TDMB)
  464. else if (mdnie_tun_state.dmb > DMB_MODE_OFF){
  465. if (!dmb_tune_value[mdnie_tun_state.dmb][mdnie_tun_state.background][mdnie_tun_state.outdoor][0] ||
  466. !dmb_tune_value[mdnie_tun_state.dmb][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]) {
  467. pr_err("dmb tune data is NULL!\n");
  468. return;
  469. } else {
  470. INPUT_PAYLOAD1(
  471. dmb_tune_value[mdnie_tun_state.dmb][mdnie_tun_state.background][mdnie_tun_state.outdoor][0]);
  472. INPUT_PAYLOAD2(
  473. dmb_tune_value[mdnie_tun_state.dmb][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]);
  474. }
  475. }
  476. #endif
  477. else {
  478. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  479. if (!mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0] ||
  480. !mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]) {
  481. pr_err("mdnie tune data is NULL!\n");
  482. return;
  483. } else {
  484. INPUT_PAYLOAD1(
  485. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0]);
  486. INPUT_PAYLOAD2(
  487. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]);
  488. mdnie_tun_state.scr_white_red = mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1][ADDRESS_SCR_WHITE_RED];
  489. mdnie_tun_state.scr_white_green = mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1][ADDRESS_SCR_WHITE_GREEN];
  490. mdnie_tun_state.scr_white_blue= mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1][ADDRESS_SCR_WHITE_BLUE];
  491. }
  492. #else
  493. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  494. if (!mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0] ||
  495. !mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1] ||
  496. !mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][2] ||
  497. !mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][3] ||
  498. !mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][4]) {
  499. #else
  500. if (!mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0] ||
  501. !mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]) {
  502. #endif
  503. pr_err("mdnie tune data is NULL!\n");
  504. return;
  505. } else {
  506. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  507. INPUT_PAYLOAD1(
  508. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0]);
  509. INPUT_PAYLOAD2(
  510. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]);
  511. INPUT_PAYLOAD3(
  512. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][2]);
  513. INPUT_PAYLOAD4(
  514. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][3]);
  515. INPUT_PAYLOAD5(
  516. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][4]);
  517. #else
  518. INPUT_PAYLOAD1(
  519. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0]);
  520. INPUT_PAYLOAD2(
  521. mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1]);
  522. #endif
  523. }
  524. #endif
  525. }
  526. sending_tuning_cmd();
  527. free_tun_cmd();
  528. DPRINT("mDNIe_Set_Mode end , %s(%d), %s(%d), %s(%d), %s(%d)\n",
  529. scenario_name[mdnie_tun_state.scenario], mdnie_tun_state.scenario,
  530. background_name[mdnie_tun_state.background], mdnie_tun_state.background,
  531. outdoor_name[mdnie_tun_state.outdoor], mdnie_tun_state.outdoor,
  532. accessibility_name[mdnie_tun_state.accessibility], mdnie_tun_state.accessibility);
  533. }
  534. void is_play_speed_1_5(int enable)
  535. {
  536. play_speed_1_5 = enable;
  537. }
  538. /* ##########################################################
  539. * #
  540. * # MDNIE BG Sysfs node
  541. * #
  542. * ##########################################################*/
  543. /* ##########################################################
  544. * #
  545. * # 0. Dynamic
  546. * # 1. Standard
  547. * # 2. Video
  548. * # 3. Natural
  549. * #
  550. * ##########################################################*/
  551. static ssize_t mode_show(struct device *dev,
  552. struct device_attribute *attr, char *buf)
  553. {
  554. DPRINT("Current Background Mode : %s\n",
  555. background_name[mdnie_tun_state.background]);
  556. return snprintf(buf, 256, "%d\n", mdnie_tun_state.background);
  557. }
  558. static ssize_t mode_store(struct device *dev,
  559. struct device_attribute *attr, const char *buf, size_t size)
  560. {
  561. int value;
  562. int backup;
  563. sscanf(buf, "%d", &value);
  564. if (value < DYNAMIC_MODE || value >= MAX_BACKGROUND_MODE) {
  565. DPRINT("[ERROR] wrong backgound mode value : %d\n",
  566. value);
  567. return size;
  568. }
  569. backup = mdnie_tun_state.background;
  570. if(mdnie_tun_state.background == value)
  571. return size;
  572. mdnie_tun_state.background = value;
  573. if (mdnie_tun_state.accessibility == NEGATIVE) {
  574. DPRINT("already negative mode(%d), do not set background(%d)\n",
  575. mdnie_tun_state.accessibility, mdnie_tun_state.background);
  576. } else {
  577. DPRINT(" %s : (%s) -> (%s)\n",
  578. __func__, background_name[backup], background_name[mdnie_tun_state.background]);
  579. mDNIe_Set_Mode();
  580. }
  581. return size;
  582. }
  583. static DEVICE_ATTR(mode, 0664, mode_show, mode_store);
  584. static ssize_t mode_max_show(struct device *dev,
  585. struct device_attribute *attr, char *buf)
  586. {
  587. return snprintf(buf, 256, "%d\n", MAX_BACKGROUND_MODE);
  588. }
  589. static DEVICE_ATTR(mode_max, 0444, mode_max_show, NULL);
  590. static ssize_t scenario_show(struct device *dev,
  591. struct device_attribute *attr,
  592. char *buf)
  593. {
  594. DPRINT("Current Scenario Mode : %s\n",
  595. scenario_name[mdnie_tun_state.scenario]);
  596. return snprintf(buf, 256, "%d\n", mdnie_tun_state.scenario);
  597. }
  598. static ssize_t scenario_store(struct device *dev,
  599. struct device_attribute *attr,
  600. const char *buf, size_t size)
  601. {
  602. int value;
  603. int backup;
  604. sscanf(buf, "%d", &value);
  605. if (value < mDNIe_UI_MODE || value >= MAX_mDNIe_MODE) {
  606. DPRINT("[ERROR] wrong Scenario mode value : %d\n",
  607. value);
  608. return size;
  609. }
  610. backup = mdnie_tun_state.scenario;
  611. if(mdnie_tun_state.scenario == value)
  612. return size;
  613. mdnie_tun_state.scenario = value;
  614. #if defined(CONFIG_TDMB)
  615. /* mDNIe_DMB_MODE = 20 */
  616. if (value >= mDNIe_DMB_MODE && value <= mDNIe_DMB_COLD_MODE) {
  617. DPRINT("DMB scenario.. (%d)\n", mdnie_tun_state.scenario);
  618. mdnie_tun_state.dmb = value - mDNIe_DMB_MODE;
  619. } else
  620. mdnie_tun_state.dmb = DMB_MODE_OFF;
  621. #endif
  622. if (mdnie_tun_state.accessibility == NEGATIVE) {
  623. DPRINT("already negative mode(%d), do not set mode(%d)\n",
  624. mdnie_tun_state.accessibility, mdnie_tun_state.scenario);
  625. } else {
  626. DPRINT(" %s : (%s) -> (%s)\n",
  627. __func__, scenario_name[backup], scenario_name[mdnie_tun_state.scenario]);
  628. mDNIe_Set_Mode();
  629. }
  630. return size;
  631. }
  632. static DEVICE_ATTR(scenario, 0664, scenario_show,
  633. scenario_store);
  634. static ssize_t scenario_max_show(struct device *dev,
  635. struct device_attribute *attr, char *buf)
  636. {
  637. return snprintf(buf, 256, "%d\n", MAX_mDNIe_MODE);
  638. }
  639. static DEVICE_ATTR(scenario_max, 0444, scenario_max_show, NULL);
  640. static ssize_t mdnieset_user_select_file_cmd_show(struct device *dev,
  641. struct device_attribute *attr,
  642. char *buf)
  643. {
  644. int mdnie_ui = 0;
  645. DPRINT("called %s\n", __func__);
  646. return snprintf(buf, 256, "%u\n", mdnie_ui);
  647. }
  648. static ssize_t mdnieset_user_select_file_cmd_store(struct device *dev,
  649. struct device_attribute
  650. *attr, const char *buf,
  651. size_t size)
  652. {
  653. int value;
  654. sscanf(buf, "%d", &value);
  655. DPRINT
  656. ("inmdnieset_user_select_file_cmd_store, input value = %d\n",
  657. value);
  658. return size;
  659. }
  660. static DEVICE_ATTR(mdnieset_user_select_file_cmd, 0664,
  661. mdnieset_user_select_file_cmd_show,
  662. mdnieset_user_select_file_cmd_store);
  663. static ssize_t mdnieset_init_file_cmd_show(struct device *dev,
  664. struct device_attribute *attr,
  665. char *buf)
  666. {
  667. char temp[] = "mdnieset_init_file_cmd_show\n\0";
  668. DPRINT("called %s\n", __func__);
  669. strcat(buf, temp);
  670. return strlen(buf);
  671. }
  672. static ssize_t mdnieset_init_file_cmd_store(struct device *dev,
  673. struct device_attribute *attr,
  674. const char *buf, size_t size)
  675. {
  676. int value;
  677. sscanf(buf, "%d", &value);
  678. DPRINT("mdnieset_init_file_cmd_store : value(%d)\n", value);
  679. switch (value) {
  680. case 0:
  681. mdnie_tun_state.scenario = mDNIe_UI_MODE;
  682. break;
  683. default:
  684. printk(KERN_ERR
  685. "mdnieset_init_file_cmd_store value is wrong : value(%d)\n",
  686. value);
  687. break;
  688. }
  689. mDNIe_Set_Mode();
  690. return size;
  691. }
  692. static DEVICE_ATTR(mdnieset_init_file_cmd, 0664, mdnieset_init_file_cmd_show,
  693. mdnieset_init_file_cmd_store);
  694. static ssize_t outdoor_show(struct device *dev,
  695. struct device_attribute *attr,
  696. char *buf)
  697. {
  698. DPRINT("Current outdoor Mode : %s\n",
  699. outdoor_name[mdnie_tun_state.outdoor]);
  700. return snprintf(buf, 256, "%d\n", mdnie_tun_state.outdoor);
  701. }
  702. static ssize_t outdoor_store(struct device *dev,
  703. struct device_attribute *attr,
  704. const char *buf, size_t size)
  705. {
  706. int value;
  707. int backup;
  708. sscanf(buf, "%d", &value);
  709. DPRINT("outdoor value = %d, scenario = %d\n",
  710. value, mdnie_tun_state.scenario);
  711. if (value < OUTDOOR_OFF_MODE || value >= MAX_OUTDOOR_MODE) {
  712. DPRINT("[ERROR] : wrong outdoor mode value : %d\n",
  713. value);
  714. #ifdef MDNIE_LITE_MODE
  715. return size;
  716. #endif
  717. }
  718. backup = mdnie_tun_state.outdoor;
  719. if(mdnie_tun_state.outdoor == value)
  720. return size;
  721. mdnie_tun_state.outdoor = value;
  722. if (mdnie_tun_state.accessibility == NEGATIVE) {
  723. DPRINT("already negative mode(%d), do not outdoor mode(%d)\n",
  724. mdnie_tun_state.accessibility, mdnie_tun_state.outdoor);
  725. } else {
  726. DPRINT(" %s : (%s) -> (%s)\n",
  727. __func__, outdoor_name[backup], outdoor_name[mdnie_tun_state.outdoor]);
  728. mDNIe_Set_Mode();
  729. }
  730. return size;
  731. }
  732. static DEVICE_ATTR(outdoor, 0664, outdoor_show, outdoor_store);
  733. static ssize_t outdoor_max_show(struct device *dev,
  734. struct device_attribute *attr, char *buf)
  735. {
  736. return snprintf(buf, 256, "%d\n", MAX_OUTDOOR_MODE);
  737. }
  738. static DEVICE_ATTR(outdoor_max, 0444, outdoor_max_show, NULL);
  739. #if defined(AUTO_BRIGHTNESS_CABC_FUNCTION)
  740. unsigned int mdss_dsi_show_cabc(void )
  741. {
  742. return msd.dstat.cabc_on;
  743. }
  744. void mdss_dsi_store_cabc(unsigned int cabc)
  745. {
  746. struct msm_fb_data_type *mfd;
  747. mfd = mdnie_msd->mfd;
  748. if(mfd->resume_state == MIPI_SUSPEND_STATE){
  749. pr_err("%s: panel power off no bl ctrl\n", __func__);
  750. return;
  751. }
  752. msd.dstat.cabc_on = cabc;
  753. pr_info("%s : CABC : %d\n", __func__,msd.dstat.cabc_on);
  754. if(mfd->resume_state == MIPI_RESUME_STATE)
  755. mipi_samsung_cabc_onoff(cabc);
  756. }
  757. static ssize_t cabc_show(struct device *dev,
  758. struct device_attribute *attr, char *buf)
  759. {
  760. unsigned int cabc;
  761. cabc = mdss_dsi_show_cabc();
  762. pr_info("%s : CABC : %d\n", __func__, cabc);
  763. return cabc;
  764. }
  765. static ssize_t cabc_store(struct device *dev,
  766. struct device_attribute *attr, const char *buf, size_t size)
  767. {
  768. unsigned char cabc;
  769. cabc = mdss_dsi_show_cabc();
  770. if (sysfs_streq(buf, "1") && !cabc)
  771. cabc = true;
  772. else if (sysfs_streq(buf, "0") && cabc)
  773. cabc = false;
  774. else
  775. pr_info("%s: Invalid argument!!", __func__);
  776. mdss_dsi_store_cabc(cabc);
  777. return size;
  778. }
  779. static DEVICE_ATTR(cabc, 0664, cabc_show, cabc_store);
  780. #endif
  781. #if 0 // accessibility
  782. static ssize_t negative_show(struct device *dev,
  783. struct device_attribute *attr,
  784. char *buf)
  785. {
  786. return snprintf(buf, 256, "Current negative Value : %s\n",
  787. (mdnie_tun_state.accessibility == 1) ? "Enabled" : "Disabled");
  788. }
  789. static ssize_t negative_store(struct device *dev,
  790. struct device_attribute *attr,
  791. const char *buf, size_t size)
  792. {
  793. int value;
  794. sscanf(buf, "%d", &value);
  795. DPRINT
  796. ("negative_store, input value = %d\n",
  797. value);
  798. if(mdnie_tun_state.accessibility == value)
  799. return size;
  800. mdnie_tun_state.accessibility = value;
  801. mDNIe_Set_Mode();
  802. return size;
  803. }
  804. static DEVICE_ATTR(negative, 0664,
  805. negative_show,
  806. negative_store);
  807. #endif
  808. void is_negative_on(void)
  809. {
  810. DPRINT("is negative Mode On = %d\n", mdnie_tun_state.accessibility);
  811. mDNIe_Set_Mode();
  812. }
  813. static ssize_t playspeed_show(struct device *dev,
  814. struct device_attribute *attr,
  815. char *buf)
  816. {
  817. DPRINT("called %s\n", __func__);
  818. return snprintf(buf, 256, "%d\n", play_speed_1_5);
  819. }
  820. static ssize_t playspeed_store(struct device *dev,
  821. struct device_attribute *attr,
  822. const char *buf, size_t size)
  823. {
  824. int value;
  825. sscanf(buf, "%d", &value);
  826. DPRINT("[Play Speed Set]play speed value = %d\n", value);
  827. is_play_speed_1_5(value);
  828. return size;
  829. }
  830. static DEVICE_ATTR(playspeed, 0664,
  831. playspeed_show,
  832. playspeed_store);
  833. static ssize_t accessibility_show(struct device *dev,
  834. struct device_attribute *attr,
  835. char *buf)
  836. {
  837. DPRINT("Current accessibility Mode : %s\n",
  838. accessibility_name[mdnie_tun_state.accessibility]);
  839. return snprintf(buf, 256, "%d\n", mdnie_tun_state.accessibility);
  840. }
  841. static ssize_t accessibility_store(struct device *dev,
  842. struct device_attribute *attr,
  843. const char *buf, size_t size)
  844. {
  845. int cmd_value;
  846. char buffer[MDNIE_COLOR_BLINDE_CMD] = {0,};
  847. int buffer2[MDNIE_COLOR_BLINDE_CMD/2] = {0,};
  848. int loop;
  849. char temp;
  850. int backup;
  851. sscanf(buf, "%d %x %x %x %x %x %x %x %x %x", &cmd_value,
  852. &buffer2[0], &buffer2[1], &buffer2[2], &buffer2[3], &buffer2[4],
  853. &buffer2[5], &buffer2[6], &buffer2[7], &buffer2[8]);
  854. for(loop = 0; loop < MDNIE_COLOR_BLINDE_CMD/2; loop++) {
  855. buffer2[loop] = buffer2[loop] & 0xFFFF;
  856. buffer[loop * 2] = (buffer2[loop] & 0xFF00) >> 8;
  857. buffer[loop * 2 + 1] = buffer2[loop] & 0xFF;
  858. }
  859. for(loop = 0; loop < MDNIE_COLOR_BLINDE_CMD; loop+=2) {
  860. temp = buffer[loop];
  861. buffer[loop] = buffer[loop + 1];
  862. buffer[loop + 1] = temp;
  863. }
  864. backup = mdnie_tun_state.accessibility;
  865. if (cmd_value == NEGATIVE) {
  866. if(mdnie_tun_state.accessibility == NEGATIVE)
  867. return size;
  868. mdnie_tun_state.accessibility = NEGATIVE;
  869. }
  870. #ifndef NEGATIVE_COLOR_USE_ACCESSIBILLITY
  871. else if (cmd_value == COLOR_BLIND) {
  872. mdnie_tun_state.accessibility = COLOR_BLIND;
  873. #if defined (CONFIG_FB_MSM_MDSS_SHARP_HD_PANEL)
  874. memcpy(&COLOR_BLIND_2[MDNIE_COLOR_BLINDE_CMD],
  875. buffer, MDNIE_COLOR_BLINDE_CMD);
  876. #else
  877. memcpy(&COLOR_BLIND_2[MDNIE_COLOR_BLINDE_OFFSET],
  878. buffer, MDNIE_COLOR_BLINDE_CMD);
  879. }
  880. #endif
  881. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) || \
  882. defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_FULL_HD_PT_PANEL) || defined (CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL) ||\
  883. defined(CONFIG_FB_MSM_MDSS_MAGNA_OCTA_VIDEO_720P_PANEL) || defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL) ||\
  884. defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQXGA_S6E3HA1_PT_PANEL) || defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT_PANEL)
  885. else if (cmd_value == SCREEN_CURTAIN) {
  886. if(mdnie_tun_state.accessibility == SCREEN_CURTAIN)
  887. return size;
  888. mdnie_tun_state.accessibility = SCREEN_CURTAIN;
  889. }
  890. #endif
  891. else if (cmd_value == GRAYSCALE) {
  892. if(mdnie_tun_state.accessibility == GRAYSCALE)
  893. return size;
  894. mdnie_tun_state.accessibility = GRAYSCALE;
  895. }
  896. else if (cmd_value == GRAYSCALE_NEGATIVE) {
  897. if(mdnie_tun_state.accessibility == GRAYSCALE_NEGATIVE)
  898. return size;
  899. mdnie_tun_state.accessibility = GRAYSCALE_NEGATIVE;
  900. }
  901. #endif /* NEGATIVE_COLOR_USE_ACCESSIBILLITY */
  902. else if (cmd_value == ACCESSIBILITY_OFF) {
  903. if(mdnie_tun_state.accessibility == ACCESSIBILITY_OFF)
  904. return size;
  905. mdnie_tun_state.accessibility = ACCESSIBILITY_OFF;
  906. } else
  907. pr_info("%s ACCESSIBILITY_MAX", __func__);
  908. DPRINT(" %s : (%s) -> (%s)\n",
  909. __func__, accessibility_name[backup], accessibility_name[mdnie_tun_state.accessibility]);
  910. mDNIe_Set_Mode();
  911. pr_info("%s cmd_value : %d size : %d", __func__, cmd_value, size);
  912. return size;
  913. }
  914. static DEVICE_ATTR(accessibility, 0664,
  915. accessibility_show,
  916. accessibility_store);
  917. static ssize_t accessibility_max_show(struct device *dev,
  918. struct device_attribute *attr, char *buf)
  919. {
  920. return snprintf(buf, 256, "%d\n", ACCESSIBILITY_MAX);
  921. }
  922. static DEVICE_ATTR(accessibility_max, 0444, accessibility_max_show, NULL);
  923. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  924. static ssize_t sensorRGB_show(struct device *dev,
  925. struct device_attribute *attr, char *buf)
  926. {
  927. 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);
  928. }
  929. static ssize_t sensorRGB_store(struct device *dev,
  930. struct device_attribute *attr, const char *buf, size_t size)
  931. {
  932. int red, green, blue;
  933. char white_red, white_green, white_blue;
  934. sscanf(buf, "%d %d %d", &red, &green, &blue);
  935. if ((mdnie_tun_state.accessibility == ACCESSIBILITY_OFF) && (mdnie_tun_state.background == AUTO_MODE) && \
  936. ((mdnie_tun_state.scenario == mDNIe_BROWSER_MODE) || (mdnie_tun_state.scenario == mDNIe_eBOOK_MODE)))
  937. {
  938. white_red = (char)(red);
  939. white_green = (char)(green);
  940. white_blue= (char)(blue);
  941. mdnie_tun_state.scr_white_red = red;
  942. mdnie_tun_state.scr_white_green = green;
  943. mdnie_tun_state.scr_white_blue= blue;
  944. DPRINT("%s: white_red = %d, white_green = %d, white_blue = %d\n", __func__, white_red, white_green, white_blue);
  945. INPUT_PAYLOAD1(mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][0]);
  946. memcpy( white_rgb_buf, mdnie_tune_value[mdnie_tun_state.scenario][mdnie_tun_state.background][mdnie_tun_state.outdoor][1], MDNIE_TUNE_FIRST_SIZE);
  947. white_rgb_buf[ADDRESS_SCR_WHITE_RED] = white_red;
  948. white_rgb_buf[ADDRESS_SCR_WHITE_GREEN] = white_green;
  949. white_rgb_buf[ADDRESS_SCR_WHITE_BLUE] = white_blue;
  950. INPUT_PAYLOAD2(white_rgb_buf);
  951. sending_tuning_cmd();
  952. free_tun_cmd();
  953. }
  954. return size;
  955. }
  956. static DEVICE_ATTR(sensorRGB, 0664, sensorRGB_show, sensorRGB_store);
  957. #endif
  958. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  959. #if defined(DDI_VIDEO_ENHANCE_TUNING)
  960. #define MAX_FILE_NAME 128
  961. #define TUNING_FILE_PATH "/sdcard/"
  962. static char tuning_file[MAX_FILE_NAME];
  963. #if 0
  964. /*
  965. * Do not use below code but only for Image Quality Debug in Developing Precess.
  966. * Do not comment in this code Because there are contained vulnerability.
  967. */
  968. static char char_to_dec(char data1, char data2)
  969. {
  970. char dec;
  971. dec = 0;
  972. if (data1 >= 'a') {
  973. data1 -= 'a';
  974. data1 += 10;
  975. } else if (data1 >= 'A') {
  976. data1 -= 'A';
  977. data1 += 10;
  978. } else
  979. data1 -= '0';
  980. dec = data1 << 4;
  981. if (data2 >= 'a') {
  982. data2 -= 'a';
  983. data2 += 10;
  984. } else if (data2 >= 'A') {
  985. data2 -= 'A';
  986. data2 += 10;
  987. } else
  988. data2 -= '0';
  989. dec |= data2;
  990. return dec;
  991. }
  992. static void sending_tune_cmd(char *src, int len)
  993. {
  994. int data_pos = 0;
  995. int cmd_step = 0;
  996. int cmd_pos = 0;
  997. int tbl_cnt = 0;
  998. for (data_pos = 0; data_pos < len;) {
  999. if (*(src + data_pos) == '0') {
  1000. if (*(src + data_pos + 1) == 'x') {
  1001. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  1002. if (cmd_step == 0) {
  1003. tune_data1[cmd_pos] = char_to_dec(*(src + data_pos + 2), *(src + data_pos + 3));
  1004. } else if (cmd_step == 1) {
  1005. tune_data2[cmd_pos] = char_to_dec(*(src + data_pos + 2), *(src + data_pos + 3));
  1006. } else if (cmd_step == 2) {
  1007. tune_data3[cmd_pos] = char_to_dec(*(src + data_pos + 2), *(src + data_pos + 3));
  1008. } else if (cmd_step == 3) {
  1009. tune_data4[cmd_pos] = char_to_dec(*(src + data_pos + 2), *(src + data_pos + 3));
  1010. } else if (cmd_step == 4) {
  1011. tune_data5[cmd_pos] = char_to_dec(*(src + data_pos + 2), *(src + data_pos + 3));
  1012. }
  1013. #endif
  1014. data_pos += 3;
  1015. cmd_pos++;
  1016. if (cmd_pos == tune_size_tbl[tbl_cnt] && cmd_step == tbl_cnt) {
  1017. cmd_pos = 0;
  1018. cmd_step++;
  1019. tbl_cnt++;
  1020. }
  1021. } else
  1022. data_pos++;
  1023. } else {
  1024. data_pos++;
  1025. }
  1026. }
  1027. #if defined(CONFIG_FB_MSM_MIPI_VIDEO_WVGA_NT35502_PT_PANEL)
  1028. INPUT_PAYLOAD1(tune_data1);
  1029. INPUT_PAYLOAD2(tune_data2);
  1030. INPUT_PAYLOAD3(tune_data3);
  1031. INPUT_PAYLOAD4(tune_data4);
  1032. INPUT_PAYLOAD5(tune_data5);
  1033. #endif
  1034. print_tun_data();
  1035. sending_tuning_cmd();
  1036. free_tun_cmd();
  1037. }
  1038. static void load_tuning_file(char *filename)
  1039. {
  1040. struct file *filp;
  1041. char *dp;
  1042. long l;
  1043. loff_t pos;
  1044. int ret;
  1045. mm_segment_t fs;
  1046. pr_info("%s called loading file name : [%s]\n", __func__,
  1047. filename);
  1048. fs = get_fs();
  1049. set_fs(get_ds());
  1050. filp = filp_open(filename, O_RDONLY, 0);
  1051. if (IS_ERR(filp)) {
  1052. printk(KERN_ERR "%s File open failed\n", __func__);
  1053. goto err;
  1054. }
  1055. l = filp->f_path.dentry->d_inode->i_size;
  1056. pr_info("%s Loading File Size : %ld(bytes)", __func__, l);
  1057. dp = kmalloc(l + 10, GFP_KERNEL);
  1058. if (dp == NULL) {
  1059. pr_info("Can't not alloc memory for tuning file load\n");
  1060. filp_close(filp, current->files);
  1061. goto err;
  1062. }
  1063. pos = 0;
  1064. memset(dp, 0, l);
  1065. pr_info("%s before vfs_read()\n", __func__);
  1066. ret = vfs_read(filp, (char __user *)dp, l, &pos);
  1067. pr_info("%s after vfs_read()\n", __func__);
  1068. if (ret != l) {
  1069. pr_info("vfs_read() filed ret : %d\n", ret);
  1070. kfree(dp);
  1071. filp_close(filp, current->files);
  1072. goto err;
  1073. }
  1074. filp_close(filp, current->files);
  1075. set_fs(fs);
  1076. sending_tune_cmd(dp, l);
  1077. kfree(dp);
  1078. return;
  1079. err:
  1080. set_fs(fs);
  1081. }
  1082. #endif
  1083. static ssize_t tuning_show(struct device *dev,
  1084. struct device_attribute *attr, char *buf)
  1085. {
  1086. int ret = 0;
  1087. ret = snprintf(buf, MAX_FILE_NAME, "tuned file name : %s\n", tuning_file);
  1088. return ret;
  1089. }
  1090. static ssize_t tuning_store(struct device *dev,
  1091. struct device_attribute *attr, const char *buf, size_t size)
  1092. {
  1093. /*
  1094. * Do not use below code but only for Image Quality Debug in Developing Precess.
  1095. * Do not comment in this code Because there are contained vulnerability.
  1096. */
  1097. /*
  1098. char *pt;
  1099. if (buf == NULL || strchr(buf, '.') || strchr(buf, '/'))
  1100. return size;
  1101. memset(tuning_file, 0, sizeof(tuning_file));
  1102. snprintf(tuning_file, MAX_FILE_NAME, "%s%s", TUNING_FILE_PATH, buf);
  1103. pt = tuning_file;
  1104. while (*pt) {
  1105. if (*pt == '\r' || *pt == '\n') {
  1106. *pt = 0;
  1107. break;
  1108. }
  1109. pt++;
  1110. }
  1111. DPRINT("%s\n", tuning_file);
  1112. load_tuning_file(tuning_file);
  1113. */
  1114. return size;
  1115. }
  1116. static DEVICE_ATTR(tuning, S_IRUGO | S_IWUSR | S_IWGRP,
  1117. tuning_show,
  1118. tuning_store);
  1119. #endif /* DDI_VIDEO_ENHANCE_TUNING */
  1120. #endif /* CONFIG_FB_MSM_MDSS_MDP3 */
  1121. static struct class *mdnie_class;
  1122. struct device *tune_mdnie_dev;
  1123. void init_mdnie_class(void)
  1124. {
  1125. if (mdnie_tun_state.mdnie_enable) {
  1126. pr_err("%s : mdnie already enable.. \n",__func__);
  1127. return;
  1128. }
  1129. DPRINT("start!\n");
  1130. mdnie_class = class_create(THIS_MODULE, "mdnie");
  1131. if (IS_ERR(mdnie_class))
  1132. pr_err("Failed to create class(mdnie)!\n");
  1133. tune_mdnie_dev =
  1134. device_create(mdnie_class, NULL, 0, NULL,
  1135. "mdnie");
  1136. if (IS_ERR(tune_mdnie_dev))
  1137. pr_err("Failed to create device(mdnie)!\n");
  1138. if (device_create_file
  1139. (tune_mdnie_dev, &dev_attr_scenario) < 0)
  1140. pr_err("Failed to create device file(%s)!\n",
  1141. dev_attr_scenario.attr.name);
  1142. if (device_create_file
  1143. (tune_mdnie_dev, &dev_attr_scenario_max) < 0)
  1144. pr_err("Failed to create device file(%s)!\n",
  1145. dev_attr_scenario_max.attr.name);
  1146. if (device_create_file
  1147. (tune_mdnie_dev,
  1148. &dev_attr_mdnieset_user_select_file_cmd) < 0)
  1149. pr_err("Failed to create device file(%s)!\n",
  1150. dev_attr_mdnieset_user_select_file_cmd.attr.name);
  1151. if (device_create_file
  1152. (tune_mdnie_dev, &dev_attr_mdnieset_init_file_cmd) < 0)
  1153. pr_err("Failed to create device file(%s)!\n",
  1154. dev_attr_mdnieset_init_file_cmd.attr.name);
  1155. if (device_create_file
  1156. (tune_mdnie_dev, &dev_attr_mode) < 0)
  1157. pr_err("Failed to create device file(%s)!\n",
  1158. dev_attr_mode.attr.name);
  1159. if (device_create_file
  1160. (tune_mdnie_dev, &dev_attr_mode_max) < 0)
  1161. pr_err("Failed to create device file(%s)!\n",
  1162. dev_attr_mode_max.attr.name);
  1163. if (device_create_file
  1164. (tune_mdnie_dev, &dev_attr_outdoor) < 0)
  1165. pr_err("Failed to create device file(%s)!\n",
  1166. dev_attr_outdoor.attr.name);
  1167. if (device_create_file
  1168. (tune_mdnie_dev, &dev_attr_outdoor_max) < 0)
  1169. pr_err("Failed to create device file(%s)!\n",
  1170. dev_attr_outdoor_max.attr.name);
  1171. #if defined(AUTO_BRIGHTNESS_CABC_FUNCTION)
  1172. if (device_create_file
  1173. (tune_mdnie_dev, &dev_attr_cabc) < 0)
  1174. pr_err("Failed to create device file(%s)!\n",
  1175. dev_attr_cabc.attr.name);
  1176. #endif
  1177. #if 0 // accessibility
  1178. if (device_create_file
  1179. (tune_mdnie_dev, &dev_attr_negative) < 0)
  1180. pr_err("Failed to create device file(%s)!\n",
  1181. dev_attr_negative.attr.name);
  1182. #endif
  1183. if (device_create_file
  1184. (tune_mdnie_dev, &dev_attr_playspeed) < 0)
  1185. pr_err("Failed to create device file(%s)!=n",
  1186. dev_attr_playspeed.attr.name);
  1187. if (device_create_file
  1188. (tune_mdnie_dev, &dev_attr_accessibility) < 0)
  1189. pr_err("Failed to create device file(%s)!=n",
  1190. dev_attr_accessibility.attr.name);
  1191. if (device_create_file
  1192. (tune_mdnie_dev, &dev_attr_accessibility_max) < 0)
  1193. pr_err("Failed to create device file(%s)!=n",
  1194. dev_attr_accessibility_max.attr.name);
  1195. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  1196. if (device_create_file
  1197. (tune_mdnie_dev, &dev_attr_sensorRGB) < 0)
  1198. pr_err("Failed to create device file(%s)!=n",
  1199. dev_attr_sensorRGB.attr.name);
  1200. #endif
  1201. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  1202. #if defined(DDI_VIDEO_ENHANCE_TUNING)
  1203. if (device_create_file
  1204. (tune_mdnie_dev, &dev_attr_tuning) < 0)
  1205. pr_err("Failed to create device file(%s)!=n",
  1206. dev_attr_tuning.attr.name);
  1207. #endif
  1208. #endif
  1209. mdnie_tun_state.mdnie_enable = true;
  1210. #if defined(CONFIG_TDMB)
  1211. strcpy((char*) scenario_name[mDNIe_DMB_MODE], "DMB_MODE");
  1212. strcpy((char*) scenario_name[mDNIe_DMB_WARM_MODE], "DMB_WARM_MODE");
  1213. strcpy((char*) scenario_name[mDNIe_DMB_COLD_MODE], "DMB_COLD_MODE");
  1214. #endif
  1215. DPRINT("end!\n");
  1216. }
  1217. #if defined(CONFIG_FB_MSM_MDSS_MDP3)
  1218. void mdnie_lite_tuning_init(struct mdss_dsi_driver_data *msd)
  1219. #else
  1220. void mdnie_lite_tuning_init(struct mipi_samsung_driver_data *msd)
  1221. #endif
  1222. {
  1223. mdnie_msd = msd;
  1224. }
  1225. #ifndef COORDINATE_DATA_NONE
  1226. #define coordinate_data_size 6
  1227. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT_PANEL) || defined(CONFIG_FB_MSM_MDSS_SHARP_HD_PANEL)
  1228. #define scr_wr_addr 36
  1229. #endif
  1230. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_FULL_HD_PT_PANEL) \
  1231. || defined(CONFIG_FB_MSM_MIPI_SAMSUNG_YOUM_CMD_FULL_HD_PT_PANEL)
  1232. #define scr_wr_addr 36
  1233. #define F1(x,y) ((y)-((99*(x))/91)-6)
  1234. #define F2(x,y) ((y)-((164*(x))/157)-8)
  1235. #define F3(x,y) ((y)+((218*(x))/39)-20166)
  1236. #define F4(x,y) ((y)+((23*(x))/8)-11610)
  1237. static char coordinate_data[][coordinate_data_size] = {
  1238. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* dummy */
  1239. {0xff, 0x00, 0xf7, 0x00, 0xf8, 0x00}, /* Tune_1 */
  1240. {0xff, 0x00, 0xfa, 0x00, 0xfe, 0x00}, /* Tune_2 */
  1241. {0xfb, 0x00, 0xf9, 0x00, 0xff, 0x00}, /* Tune_3 */
  1242. {0xff, 0x00, 0xfd, 0x00, 0xfa, 0x00}, /* Tune_4 */
  1243. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_5 */
  1244. {0xf9, 0x00, 0xfb, 0x00, 0xff, 0x00}, /* Tune_6 */
  1245. {0xfc, 0x00, 0xff, 0x00, 0xf8, 0x00}, /* Tune_7 */
  1246. {0xfb, 0x00, 0xff, 0x00, 0xfb, 0x00}, /* Tune_8 */
  1247. {0xf9, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_9 */
  1248. };
  1249. #elif defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL) || defined (CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL) || \
  1250. defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQXGA_S6E3HA1_PT_PANEL)
  1251. #define scr_wr_addr 122
  1252. #define F1(x,y) ((y)-((164*(x))/151)+8)
  1253. #define F2(x,y) ((y)-((70*(x))/67)-7)
  1254. #define F3(x,y) ((y)+((181*(x))/35)-18852)
  1255. #define F4(x,y) ((y)+((157*(x))/52)-12055)
  1256. static char coordinate_data[][coordinate_data_size] = {
  1257. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* dummy */
  1258. {0xff, 0x00, 0xfa, 0x00, 0xfa, 0x00}, /* Tune_1 */
  1259. {0xff, 0x00, 0xfb, 0x00, 0xfe, 0x00}, /* Tune_2 */
  1260. {0xfc, 0x00, 0xfb, 0x00, 0xff, 0x00}, /* Tune_3 */
  1261. {0xff, 0x00, 0xfe, 0x00, 0xfb, 0x00}, /* Tune_4 */
  1262. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_5 */
  1263. {0xfb, 0x00, 0xfc, 0x00, 0xff, 0x00}, /* Tune_6 */
  1264. {0xfc, 0x00, 0xff, 0x00, 0xfa, 0x00}, /* Tune_7 */
  1265. {0xfb, 0x00, 0xff, 0x00, 0xfb, 0x00}, /* Tune_8 */
  1266. {0xfb, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_9 */
  1267. };
  1268. #elif defined (CONFIG_FB_MSM_MDSS_MAGNA_OCTA_VIDEO_720P_PANEL)
  1269. #define scr_wr_addr 36
  1270. #define F1(x,y) ((y)-((164*(x))/151)+8)
  1271. #define F2(x,y) ((y)-((70*(x))/67)-7)
  1272. #define F3(x,y) ((y)+((181*(x))/35)-18852)
  1273. #define F4(x,y) ((y)+((157*(x))/52)-12055)
  1274. static char coordinate_data[][coordinate_data_size] = {
  1275. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* dummy */
  1276. {0xff, 0x00, 0xfa, 0x00, 0xfa, 0x00}, /* Tune_1 */
  1277. {0xff, 0x00, 0xfb, 0x00, 0xfe, 0x00}, /* Tune_2 */
  1278. {0xfc, 0x00, 0xfb, 0x00, 0xff, 0x00}, /* Tune_3 */
  1279. {0xff, 0x00, 0xfe, 0x00, 0xfb, 0x00}, /* Tune_4 */
  1280. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_5 */
  1281. {0xfb, 0x00, 0xfc, 0x00, 0xff, 0x00}, /* Tune_6 */
  1282. {0xfc, 0x00, 0xff, 0x00, 0xfa, 0x00}, /* Tune_7 */
  1283. {0xfb, 0x00, 0xff, 0x00, 0xfb, 0x00}, /* Tune_8 */
  1284. {0xfb, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_9 */
  1285. };
  1286. #elif defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL)
  1287. extern int flip;
  1288. #define scr_wr_addr 36
  1289. #define F1(x,y) ((y)-((164*(x))/151)+8)
  1290. #define F2(x,y) ((y)-((70*(x))/67)-7)
  1291. #define F3(x,y) ((y)+((181*(x))/35)-18852)
  1292. #define F4(x,y) ((y)+((157*(x))/52)-12055)
  1293. static char coordinate_data_main[][coordinate_data_size] = {
  1294. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* dummy */
  1295. {0xff, 0x00, 0xfa, 0x00, 0xfa, 0x00}, /* Tune_1 */
  1296. {0xff, 0x00, 0xfb, 0x00, 0xfe, 0x00}, /* Tune_2 */
  1297. {0xfc, 0x00, 0xfb, 0x00, 0xff, 0x00}, /* Tune_3 */
  1298. {0xff, 0x00, 0xfe, 0x00, 0xfb, 0x00}, /* Tune_4 */
  1299. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_5 */
  1300. {0xfb, 0x00, 0xfc, 0x00, 0xff, 0x00}, /* Tune_6 */
  1301. {0xfc, 0x00, 0xff, 0x00, 0xfa, 0x00}, /* Tune_7 */
  1302. {0xfb, 0x00, 0xff, 0x00, 0xfb, 0x00}, /* Tune_8 */
  1303. {0xfa, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_9 */
  1304. };
  1305. static char coordinate_data_sub[][coordinate_data_size] = {
  1306. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* dummy */
  1307. {0xff, 0x00, 0xfa, 0x00, 0xfa, 0x00}, /* Tune_1 */
  1308. {0xff, 0x00, 0xfb, 0x00, 0xfe, 0x00}, /* Tune_2 */
  1309. {0xfc, 0x00, 0xfb, 0x00, 0xff, 0x00}, /* Tune_3 */
  1310. {0xff, 0x00, 0xfe, 0x00, 0xfb, 0x00}, /* Tune_4 */
  1311. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_5 */
  1312. {0xfb, 0x00, 0xfc, 0x00, 0xff, 0x00}, /* Tune_6 */
  1313. {0xfc, 0x00, 0xff, 0x00, 0xfa, 0x00}, /* Tune_7 */
  1314. {0xfb, 0x00, 0xff, 0x00, 0xfb, 0x00}, /* Tune_8 */
  1315. {0xfa, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_9 */
  1316. };
  1317. static char coordinate_data[][coordinate_data_size] = {
  1318. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* dummy */
  1319. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_1 */
  1320. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_2 */
  1321. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_3 */
  1322. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_4 */
  1323. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_5 */
  1324. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_6 */
  1325. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_7 */
  1326. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_8 */
  1327. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* Tune_9 */
  1328. };
  1329. #else
  1330. #if defined(CONFIG_FB_MSM_MDSS_SAMSUNG_OCTA_VIDEO_720P_PT_PANEL) \
  1331. || defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL)
  1332. #define scr_wr_addr 36
  1333. #endif
  1334. #define F1(x,y) ((y)-((107*(x))/100)-60)
  1335. #define F2(x,y) ((y)-((44*(x))/43)-72)
  1336. #define F3(x,y) ((y)+((57*(x))/8)-25161)
  1337. #define F4(x,y) ((y)+((19*(x))/6)-12613)
  1338. static char coordinate_data[][coordinate_data_size] = {
  1339. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* dummy */
  1340. {0xff, 0x00, 0xf7, 0x00, 0xf8, 0x00}, /* Tune_1 */
  1341. {0xff, 0x00, 0xf9, 0x00, 0xfe, 0x00}, /* Tune_2 */
  1342. {0xfa, 0x00, 0xf8, 0x00, 0xff, 0x00}, /* Tune_3 */
  1343. {0xff, 0x00, 0xfc, 0x00, 0xf9, 0x00}, /* Tune_4 */
  1344. {0xff, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_5 */
  1345. {0xf8, 0x00, 0xfa, 0x00, 0xff, 0x00}, /* Tune_6 */
  1346. {0xfc, 0x00, 0xff, 0x00, 0xf8, 0x00}, /* Tune_7 */
  1347. {0xfb, 0x00, 0xff, 0x00, 0xfb, 0x00}, /* Tune_8 */
  1348. {0xf9, 0x00, 0xff, 0x00, 0xff, 0x00}, /* Tune_9 */
  1349. };
  1350. #endif
  1351. void coordinate_tunning(int x, int y)
  1352. {
  1353. int tune_number;
  1354. #if defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL) || defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQXGA_S6E3HA1_PT_PANEL) || \
  1355. defined(CONFIG_NEW_UX_MDNIE)
  1356. int i, j;
  1357. #endif
  1358. tune_number = 0;
  1359. #if defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL)
  1360. pr_info("%s : coordinate for %s panel\n", __func__, flip?"main":"sub");
  1361. if (flip)
  1362. memcpy(coordinate_data, coordinate_data_main, 60);
  1363. else
  1364. memcpy(coordinate_data, coordinate_data_sub, 60);
  1365. #endif
  1366. if (F1(x,y) > 0) {
  1367. if (F3(x,y) > 0) {
  1368. tune_number = 3;
  1369. } else {
  1370. if (F4(x,y) < 0)
  1371. tune_number = 1;
  1372. else
  1373. tune_number = 2;
  1374. }
  1375. } else {
  1376. if (F2(x,y) < 0) {
  1377. if (F3(x,y) > 0) {
  1378. tune_number = 9;
  1379. } else {
  1380. if (F4(x,y) < 0)
  1381. tune_number = 7;
  1382. else
  1383. tune_number = 8;
  1384. }
  1385. } else {
  1386. if (F3(x,y) > 0)
  1387. tune_number = 6;
  1388. else {
  1389. if (F4(x,y) < 0)
  1390. tune_number = 4;
  1391. else
  1392. tune_number = 5;
  1393. }
  1394. }
  1395. }
  1396. pr_info("%s x : %d, y : %d, tune_number : %d", __func__, x, y, tune_number);
  1397. #if defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_CMD_HD_PT_PANEL) || defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQXGA_S6E3HA1_PT_PANEL) || \
  1398. defined(CONFIG_NEW_UX_MDNIE)
  1399. for(i = 0; i < mDNIe_eBOOK_MODE; i++)
  1400. {
  1401. for(j = 0; j < AUTO_MODE; j++)
  1402. {
  1403. if(mdnie_tune_value[i][j][0][1] != NULL)
  1404. {
  1405. if((mdnie_tune_value[i][j][0][1][scr_wr_addr] == 0xff) && (mdnie_tune_value[i][j][0][1][scr_wr_addr+2] == 0xff) && (mdnie_tune_value[i][j][0][1][scr_wr_addr+4] == 0xff))
  1406. {
  1407. memcpy(&mdnie_tune_value[i][j][0][1][scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1408. }
  1409. }
  1410. }
  1411. }
  1412. #else
  1413. memcpy(&DYNAMIC_BROWSER_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1414. memcpy(&DYNAMIC_GALLERY_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1415. memcpy(&DYNAMIC_UI_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1416. memcpy(&DYNAMIC_VIDEO_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1417. memcpy(&DYNAMIC_VT_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1418. memcpy(&DYNAMIC_EBOOK_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1419. #if !defined(CONFIG_FB_MSM_MIPI_MAGNA_OCTA_VIDEO_WXGA_PT_DUAL_PANEL)
  1420. memcpy(&STANDARD_BROWSER_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1421. memcpy(&STANDARD_GALLERY_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1422. memcpy(&STANDARD_UI_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1423. memcpy(&STANDARD_VIDEO_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1424. memcpy(&STANDARD_VT_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1425. memcpy(&STANDARD_EBOOK_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1426. #endif
  1427. memcpy(&AUTO_BROWSER_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1428. memcpy(&AUTO_CAMERA_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1429. memcpy(&AUTO_GALLERY_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1430. memcpy(&AUTO_UI_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1431. memcpy(&AUTO_VIDEO_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1432. memcpy(&AUTO_VT_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1433. memcpy(&CAMERA_2[scr_wr_addr], &coordinate_data[tune_number][0], coordinate_data_size);
  1434. #endif
  1435. }
  1436. #endif /* COORDINATE_DATA_NONE */
  1437. #if 0
  1438. void mDNIe_Set_Mode(enum Lcd_mDNIe_UI mode)
  1439. {
  1440. struct msm_fb_data_type *mfd;
  1441. mfd = mdnie_msd->mfd;
  1442. DPRINT("mDNIe_Set_Mode start , mode(%d), background(%d)\n",
  1443. mode, mdnie_tun_state.background);
  1444. if (!mfd) {
  1445. DPRINT("[ERROR] mfd is null!\n");
  1446. return;
  1447. }
  1448. if (mfd->resume_state == MIPI_SUSPEND_STATE) {
  1449. DPRINT("[ERROR] not ST_DSI_RESUME. do not send mipi cmd.\n");
  1450. return;
  1451. }
  1452. if (!mdnie_tun_state.mdnie_enable) {
  1453. DPRINT("[ERROR] mDNIE engine is OFF.\n");
  1454. return;
  1455. }
  1456. if (mode < mDNIe_UI_MODE || mode >= MAX_mDNIe_MODE) {
  1457. DPRINT("[ERROR] wrong Scenario mode value : %d\n",
  1458. mode);
  1459. return;
  1460. }
  1461. if (mdnie_tun_state.negative) {
  1462. DPRINT("already negative mode(%d), do not set background(%d)\n",
  1463. mdnie_tun_state.negative, mdnie_tun_state.background);
  1464. return;
  1465. }
  1466. play_speed_1_5 = 0;
  1467. /*
  1468. * Blind mode & Screen mode has separated menu.
  1469. * To make a sync below code added.
  1470. * Bline mode has priority than Screen mode
  1471. */
  1472. if (mdnie_tun_state.accessibility == COLOR_BLIND)
  1473. mode = mDNIE_BLINE_MODE;
  1474. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  1475. if (get_lcd_panel_res() == 0) { // 0 : wqhd
  1476. #endif
  1477. switch (mode) {
  1478. case mDNIe_UI_MODE:
  1479. DPRINT(" = UI MODE =\n");
  1480. if (mdnie_tun_state.background == STANDARD_MODE) {
  1481. DPRINT(" = STANDARD MODE =\n");
  1482. INPUT_PAYLOAD1(STANDARD_UI_1);
  1483. INPUT_PAYLOAD2(STANDARD_UI_2);
  1484. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1485. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1486. DPRINT(" = NATURAL MODE =\n");
  1487. INPUT_PAYLOAD1(NATURAL_UI_1);
  1488. INPUT_PAYLOAD2(NATURAL_UI_2);
  1489. #endif
  1490. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1491. DPRINT(" = DYNAMIC MODE =\n");
  1492. INPUT_PAYLOAD1(DYNAMIC_UI_1);
  1493. INPUT_PAYLOAD2(DYNAMIC_UI_2);
  1494. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1495. DPRINT(" = MOVIE MODE =\n");
  1496. INPUT_PAYLOAD1(MOVIE_UI_1);
  1497. INPUT_PAYLOAD2(MOVIE_UI_2);
  1498. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1499. DPRINT(" = AUTO MODE =\n");
  1500. INPUT_PAYLOAD1(AUTO_UI_1);
  1501. INPUT_PAYLOAD2(AUTO_UI_2);
  1502. }
  1503. break;
  1504. case mDNIe_VIDEO_MODE:
  1505. DPRINT(" = VIDEO MODE =\n");
  1506. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1507. DPRINT(" = OUTDOOR ON MODE =\n");
  1508. INPUT_PAYLOAD1(OUTDOOR_VIDEO_1);
  1509. INPUT_PAYLOAD2(OUTDOOR_VIDEO_2);
  1510. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1511. DPRINT(" = OUTDOOR OFF MODE =\n");
  1512. if (mdnie_tun_state.background == STANDARD_MODE) {
  1513. DPRINT(" = STANDARD MODE =\n");
  1514. INPUT_PAYLOAD1(STANDARD_VIDEO_1);
  1515. INPUT_PAYLOAD2(STANDARD_VIDEO_2);
  1516. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1517. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1518. DPRINT(" = NATURAL MODE =\n");
  1519. INPUT_PAYLOAD1(NATURAL_VIDEO_1);
  1520. INPUT_PAYLOAD2(NATURAL_VIDEO_2);
  1521. #endif
  1522. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1523. DPRINT(" = DYNAMIC MODE =\n");
  1524. INPUT_PAYLOAD1(DYNAMIC_VIDEO_1);
  1525. INPUT_PAYLOAD2(DYNAMIC_VIDEO_2);
  1526. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1527. DPRINT(" = MOVIE MODE =\n");
  1528. INPUT_PAYLOAD1(MOVIE_VIDEO_1);
  1529. INPUT_PAYLOAD2(MOVIE_VIDEO_2);
  1530. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1531. DPRINT(" = AUTO MODE =\n");
  1532. INPUT_PAYLOAD1(AUTO_VIDEO_1);
  1533. INPUT_PAYLOAD2(AUTO_VIDEO_2);
  1534. }
  1535. }
  1536. break;
  1537. case mDNIe_VIDEO_WARM_MODE:
  1538. DPRINT(" = VIDEO WARM MODE =\n");
  1539. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1540. DPRINT(" = OUTDOOR ON MODE =\n");
  1541. INPUT_PAYLOAD1(WARM_OUTDOOR_1);
  1542. INPUT_PAYLOAD2(WARM_OUTDOOR_2);
  1543. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1544. DPRINT(" = OUTDOOR OFF MODE =\n");
  1545. INPUT_PAYLOAD1(WARM_1);
  1546. INPUT_PAYLOAD2(WARM_2);
  1547. }
  1548. break;
  1549. case mDNIe_VIDEO_COLD_MODE:
  1550. DPRINT(" = VIDEO COLD MODE =\n");
  1551. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1552. DPRINT(" = OUTDOOR ON MODE =\n");
  1553. INPUT_PAYLOAD1(COLD_OUTDOOR_1);
  1554. INPUT_PAYLOAD2(COLD_OUTDOOR_2);
  1555. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1556. DPRINT(" = OUTDOOR OFF MODE =\n");
  1557. INPUT_PAYLOAD1(COLD_1);
  1558. INPUT_PAYLOAD2(COLD_2);
  1559. }
  1560. break;
  1561. case mDNIe_CAMERA_MODE:
  1562. DPRINT(" = CAMERA MODE =\n");
  1563. if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1564. if (mdnie_tun_state.background == AUTO_MODE) {
  1565. DPRINT(" = AUTO MODE =\n");
  1566. INPUT_PAYLOAD1(AUTO_CAMERA_1);
  1567. INPUT_PAYLOAD2(AUTO_CAMERA_2);
  1568. } else {
  1569. DPRINT(" = STANDARD MODE =\n");
  1570. INPUT_PAYLOAD1(CAMERA_1);
  1571. INPUT_PAYLOAD2(CAMERA_2);
  1572. }
  1573. } else if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1574. DPRINT(" = NATURAL MODE =\n");
  1575. INPUT_PAYLOAD1(CAMERA_OUTDOOR_1);
  1576. INPUT_PAYLOAD2(CAMERA_OUTDOOR_2);
  1577. }
  1578. break;
  1579. case mDNIe_NAVI:
  1580. DPRINT(" = NAVI MODE =\n");
  1581. DPRINT("no data for NAVI MODE..\n");
  1582. break;
  1583. case mDNIe_GALLERY:
  1584. DPRINT(" = GALLERY MODE =\n");
  1585. if (mdnie_tun_state.background == STANDARD_MODE) {
  1586. DPRINT(" = STANDARD MODE =\n");
  1587. INPUT_PAYLOAD1(STANDARD_GALLERY_1);
  1588. INPUT_PAYLOAD2(STANDARD_GALLERY_2);
  1589. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1590. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1591. DPRINT(" = NATURAL MODE =\n");
  1592. INPUT_PAYLOAD1(NATURAL_GALLERY_1);
  1593. INPUT_PAYLOAD2(NATURAL_GALLERY_2);
  1594. #endif
  1595. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1596. DPRINT(" = DYNAMIC MODE =\n");
  1597. INPUT_PAYLOAD1(DYNAMIC_GALLERY_1);
  1598. INPUT_PAYLOAD2(DYNAMIC_GALLERY_2);
  1599. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1600. DPRINT(" = MOVIE MODE =\n");
  1601. INPUT_PAYLOAD1(MOVIE_GALLERY_1);
  1602. INPUT_PAYLOAD2(MOVIE_GALLERY_2);
  1603. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1604. DPRINT(" = AUTO MODE =\n");
  1605. INPUT_PAYLOAD1(AUTO_GALLERY_1);
  1606. INPUT_PAYLOAD2(AUTO_GALLERY_2);
  1607. }
  1608. break;
  1609. case mDNIe_VT_MODE:
  1610. DPRINT(" = VT MODE =\n");
  1611. if (mdnie_tun_state.background == STANDARD_MODE) {
  1612. DPRINT(" = STANDARD MODE =\n");
  1613. INPUT_PAYLOAD1(STANDARD_VT_1);
  1614. INPUT_PAYLOAD2(STANDARD_VT_2);
  1615. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1616. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1617. DPRINT(" = NATURAL MODE =\n");
  1618. INPUT_PAYLOAD1(NATURAL_VT_1);
  1619. INPUT_PAYLOAD2(NATURAL_VT_2);
  1620. #endif
  1621. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1622. DPRINT(" = DYNAMIC MODE =\n");
  1623. INPUT_PAYLOAD1(DYNAMIC_VT_1);
  1624. INPUT_PAYLOAD2(DYNAMIC_VT_2);
  1625. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1626. DPRINT(" = MOVIE MODE =\n");
  1627. INPUT_PAYLOAD1(MOVIE_VT_1);
  1628. INPUT_PAYLOAD2(MOVIE_VT_2);
  1629. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1630. DPRINT(" = AUTO MODE =\n");
  1631. INPUT_PAYLOAD1(AUTO_VT_1);
  1632. INPUT_PAYLOAD2(AUTO_VT_2);
  1633. }
  1634. break;
  1635. #if defined(CONFIG_TDMB)
  1636. case mDNIe_DMB_MODE:
  1637. DPRINT(" = DMB MODE =\n");
  1638. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1639. DPRINT(" = OUTDOOR ON MODE =\n");
  1640. INPUT_PAYLOAD1(OUTDOOR_DMB_1);
  1641. INPUT_PAYLOAD2(OUTDOOR_DMB_2);
  1642. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1643. DPRINT(" = OUTDOOR OFF MODE =\n");
  1644. if (mdnie_tun_state.background == STANDARD_MODE) {
  1645. DPRINT(" = STANDARD MODE =\n");
  1646. INPUT_PAYLOAD1(STANDARD_DMB_1);
  1647. INPUT_PAYLOAD2(STANDARD_DMB_2);
  1648. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1649. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1650. DPRINT(" = NATURAL MODE =\n");
  1651. INPUT_PAYLOAD1(NATURAL_DMB_1);
  1652. INPUT_PAYLOAD2(NATURAL_DMB_2);
  1653. #endif
  1654. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1655. DPRINT(" = DYNAMIC MODE =\n");
  1656. INPUT_PAYLOAD1(DYNAMIC_DMB_1);
  1657. INPUT_PAYLOAD2(DYNAMIC_DMB_2);
  1658. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1659. DPRINT(" = MOVIE MODE =\n");
  1660. INPUT_PAYLOAD1(MOVIE_DMB_1);
  1661. INPUT_PAYLOAD2(MOVIE_DMB_2);
  1662. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1663. DPRINT(" = AUTO MODE =\n");
  1664. INPUT_PAYLOAD1(AUTO_DMB_1);
  1665. INPUT_PAYLOAD2(AUTO_DMB_2);
  1666. }
  1667. }
  1668. break;
  1669. case mDNIe_DMB_WARM_MODE:
  1670. DPRINT(" = DMB WARM MODE =\n");
  1671. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1672. DPRINT(" = OUTDOOR ON MODE =\n");
  1673. INPUT_PAYLOAD1(WARM_OUTDOOR_DMB_1);
  1674. INPUT_PAYLOAD2(WARM_OUTDOOR_DMB_2);
  1675. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1676. DPRINT(" = OUTDOOR OFF MODE =\n");
  1677. INPUT_PAYLOAD1(WARM_DMB_1);
  1678. INPUT_PAYLOAD2(WARM_DMB_2);
  1679. }
  1680. break;
  1681. case mDNIe_DMB_COLD_MODE:
  1682. DPRINT(" = DMB COLD MODE =\n");
  1683. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1684. DPRINT(" = OUTDOOR ON MODE =\n");
  1685. INPUT_PAYLOAD1(COLD_OUTDOOR_DMB_1);
  1686. INPUT_PAYLOAD2(COLD_OUTDOOR_DMB_2);
  1687. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1688. DPRINT(" = OUTDOOR OFF MODE =\n");
  1689. INPUT_PAYLOAD1(COLD_DMB_1);
  1690. INPUT_PAYLOAD2(COLD_DMB_2);
  1691. }
  1692. break;
  1693. #endif
  1694. case mDNIe_BROWSER_MODE:
  1695. DPRINT(" = BROWSER MODE =\n");
  1696. if (mdnie_tun_state.background == STANDARD_MODE) {
  1697. DPRINT(" = STANDARD MODE =\n");
  1698. INPUT_PAYLOAD1(STANDARD_BROWSER_1);
  1699. INPUT_PAYLOAD2(STANDARD_BROWSER_2);
  1700. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1701. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1702. DPRINT(" = NATURAL MODE =\n");
  1703. INPUT_PAYLOAD1(NATURAL_BROWSER_1);
  1704. INPUT_PAYLOAD2(NATURAL_BROWSER_2);
  1705. #endif
  1706. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1707. DPRINT(" = DYNAMIC MODE =\n");
  1708. INPUT_PAYLOAD1(DYNAMIC_BROWSER_1);
  1709. INPUT_PAYLOAD2(DYNAMIC_BROWSER_2);
  1710. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1711. DPRINT(" = MOVIE MODE =\n");
  1712. INPUT_PAYLOAD1(MOVIE_BROWSER_1);
  1713. INPUT_PAYLOAD2(MOVIE_BROWSER_2);
  1714. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1715. DPRINT(" = AUTO MODE =\n");
  1716. INPUT_PAYLOAD1(AUTO_BROWSER_1);
  1717. INPUT_PAYLOAD2(AUTO_BROWSER_2);
  1718. }
  1719. break;
  1720. case mDNIe_eBOOK_MODE:
  1721. DPRINT(" = eBOOK MODE =\n");
  1722. if (mdnie_tun_state.background == STANDARD_MODE) {
  1723. DPRINT(" = STANDARD MODE =\n");
  1724. INPUT_PAYLOAD1(STANDARD_EBOOK_1);
  1725. INPUT_PAYLOAD2(STANDARD_EBOOK_2);
  1726. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1727. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1728. DPRINT(" = NATURAL MODE =\n");
  1729. INPUT_PAYLOAD1(NATURAL_EBOOK_1);
  1730. INPUT_PAYLOAD2(NATURAL_EBOOK_2);
  1731. #endif
  1732. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1733. DPRINT(" = DYNAMIC MODE =\n");
  1734. INPUT_PAYLOAD1(DYNAMIC_EBOOK_1);
  1735. INPUT_PAYLOAD2(DYNAMIC_EBOOK_2);
  1736. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1737. DPRINT(" = MOVIE MODE =\n");
  1738. INPUT_PAYLOAD1(MOVIE_EBOOK_1);
  1739. INPUT_PAYLOAD2(MOVIE_EBOOK_2);
  1740. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1741. DPRINT(" = AUTO MODE =\n");
  1742. INPUT_PAYLOAD1(AUTO_EBOOK_1);
  1743. INPUT_PAYLOAD2(AUTO_EBOOK_2);
  1744. }
  1745. break;
  1746. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1747. case mDNIe_EMAIL_MODE:
  1748. DPRINT(" = EMAIL MODE =\n");
  1749. if (mdnie_tun_state.background == STANDARD_MODE) {
  1750. DPRINT(" = STANDARD MODE =\n");
  1751. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1752. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1753. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1754. DPRINT(" = NATURAL MODE =\n");
  1755. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1756. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1757. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1758. DPRINT(" = DYNAMIC MODE =\n");
  1759. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1760. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1761. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1762. DPRINT(" = MOVIE MODE =\n");
  1763. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1764. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1765. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1766. DPRINT(" = AUTO MODE =\n");
  1767. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  1768. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  1769. }
  1770. break;
  1771. #endif
  1772. case mDNIE_BLINE_MODE:
  1773. DPRINT(" = BLIND MODE =\n");
  1774. INPUT_PAYLOAD1(COLOR_BLIND_1);
  1775. INPUT_PAYLOAD2(COLOR_BLIND_2);
  1776. break;
  1777. default:
  1778. DPRINT("[%s] no option (%d)\n", __func__, mode);
  1779. return;
  1780. }
  1781. #if defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_CMD_WQHD_PT_PANEL)
  1782. }else { // 1: fhd
  1783. switch (mode) {
  1784. case mDNIe_UI_MODE:
  1785. DPRINT(" = UI MODE =\n");
  1786. if (mdnie_tun_state.background == STANDARD_MODE) {
  1787. DPRINT(" = STANDARD MODE =\n");
  1788. INPUT_PAYLOAD1(STANDARD_UI_1_FHD);
  1789. INPUT_PAYLOAD2(STANDARD_UI_2_FHD);
  1790. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1791. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1792. DPRINT(" = NATURAL MODE =\n");
  1793. INPUT_PAYLOAD1(NATURAL_UI_1_FHD);
  1794. INPUT_PAYLOAD2(NATURAL_UI_2_FHD);
  1795. #endif
  1796. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1797. DPRINT(" = DYNAMIC MODE =\n");
  1798. INPUT_PAYLOAD1(DYNAMIC_UI_1_FHD);
  1799. INPUT_PAYLOAD2(DYNAMIC_UI_2_FHD);
  1800. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1801. DPRINT(" = MOVIE MODE =\n");
  1802. INPUT_PAYLOAD1(MOVIE_UI_1_FHD);
  1803. INPUT_PAYLOAD2(MOVIE_UI_2_FHD);
  1804. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1805. DPRINT(" = AUTO MODE =\n");
  1806. INPUT_PAYLOAD1(AUTO_UI_1_FHD);
  1807. INPUT_PAYLOAD2(AUTO_UI_2_FHD);
  1808. }
  1809. break;
  1810. case mDNIe_VIDEO_MODE:
  1811. DPRINT(" = VIDEO MODE =\n");
  1812. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1813. DPRINT(" = OUTDOOR ON MODE =\n");
  1814. INPUT_PAYLOAD1(OUTDOOR_VIDEO_1_FHD);
  1815. INPUT_PAYLOAD2(OUTDOOR_VIDEO_2_FHD);
  1816. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1817. DPRINT(" = OUTDOOR OFF MODE =\n");
  1818. if (mdnie_tun_state.background == STANDARD_MODE) {
  1819. DPRINT(" = STANDARD MODE =\n");
  1820. INPUT_PAYLOAD1(STANDARD_VIDEO_1_FHD);
  1821. INPUT_PAYLOAD2(STANDARD_VIDEO_2_FHD);
  1822. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1823. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1824. DPRINT(" = NATURAL MODE =\n");
  1825. INPUT_PAYLOAD1(NATURAL_VIDEO_1_FHD);
  1826. INPUT_PAYLOAD2(NATURAL_VIDEO_2_FHD);
  1827. #endif
  1828. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1829. DPRINT(" = DYNAMIC MODE =\n");
  1830. INPUT_PAYLOAD1(DYNAMIC_VIDEO_1_FHD);
  1831. INPUT_PAYLOAD2(DYNAMIC_VIDEO_2_FHD);
  1832. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1833. DPRINT(" = MOVIE MODE =\n");
  1834. INPUT_PAYLOAD1(MOVIE_VIDEO_1_FHD);
  1835. INPUT_PAYLOAD2(MOVIE_VIDEO_2_FHD);
  1836. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1837. DPRINT(" = AUTO MODE =\n");
  1838. INPUT_PAYLOAD1(AUTO_VIDEO_1_FHD);
  1839. INPUT_PAYLOAD2(AUTO_VIDEO_2_FHD);
  1840. }
  1841. }
  1842. break;
  1843. case mDNIe_VIDEO_WARM_MODE:
  1844. DPRINT(" = VIDEO WARM MODE =\n");
  1845. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1846. DPRINT(" = OUTDOOR ON MODE =\n");
  1847. INPUT_PAYLOAD1(WARM_OUTDOOR_1_FHD);
  1848. INPUT_PAYLOAD2(WARM_OUTDOOR_2_FHD);
  1849. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1850. DPRINT(" = OUTDOOR OFF MODE =\n");
  1851. INPUT_PAYLOAD1(WARM_1_FHD);
  1852. INPUT_PAYLOAD2(WARM_2_FHD);
  1853. }
  1854. break;
  1855. case mDNIe_VIDEO_COLD_MODE:
  1856. DPRINT(" = VIDEO COLD MODE =\n");
  1857. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1858. DPRINT(" = OUTDOOR ON MODE =\n");
  1859. INPUT_PAYLOAD1(COLD_OUTDOOR_1_FHD);
  1860. INPUT_PAYLOAD2(COLD_OUTDOOR_2_FHD);
  1861. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1862. DPRINT(" = OUTDOOR OFF MODE =\n");
  1863. INPUT_PAYLOAD1(COLD_1_FHD);
  1864. INPUT_PAYLOAD2(COLD_2_FHD);
  1865. }
  1866. break;
  1867. case mDNIe_CAMERA_MODE:
  1868. DPRINT(" = CAMERA MODE =\n");
  1869. if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1870. if (mdnie_tun_state.background == AUTO_MODE) {
  1871. DPRINT(" = AUTO MODE =\n");
  1872. INPUT_PAYLOAD1(AUTO_CAMERA_1_FHD);
  1873. INPUT_PAYLOAD2(AUTO_CAMERA_2_FHD);
  1874. } else {
  1875. DPRINT(" = STANDARD MODE =\n");
  1876. INPUT_PAYLOAD1(CAMERA_1_FHD);
  1877. INPUT_PAYLOAD2(CAMERA_2_FHD);
  1878. }
  1879. } else if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1880. DPRINT(" = NATURAL MODE =\n");
  1881. INPUT_PAYLOAD1(CAMERA_OUTDOOR_1_FHD);
  1882. INPUT_PAYLOAD2(CAMERA_OUTDOOR_2_FHD);
  1883. }
  1884. break;
  1885. case mDNIe_NAVI:
  1886. DPRINT(" = NAVI MODE =\n");
  1887. DPRINT("no data for NAVI MODE..\n");
  1888. break;
  1889. case mDNIe_GALLERY:
  1890. DPRINT(" = GALLERY MODE =\n");
  1891. if (mdnie_tun_state.background == STANDARD_MODE) {
  1892. DPRINT(" = STANDARD MODE =\n");
  1893. INPUT_PAYLOAD1(STANDARD_GALLERY_1_FHD);
  1894. INPUT_PAYLOAD2(STANDARD_GALLERY_2_FHD);
  1895. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1896. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1897. DPRINT(" = NATURAL MODE =\n");
  1898. INPUT_PAYLOAD1(NATURAL_GALLERY_1_FHD);
  1899. INPUT_PAYLOAD2(NATURAL_GALLERY_2_FHD);
  1900. #endif
  1901. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1902. DPRINT(" = DYNAMIC MODE =\n");
  1903. INPUT_PAYLOAD1(DYNAMIC_GALLERY_1_FHD);
  1904. INPUT_PAYLOAD2(DYNAMIC_GALLERY_2_FHD);
  1905. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1906. DPRINT(" = MOVIE MODE =\n");
  1907. INPUT_PAYLOAD1(MOVIE_GALLERY_1_FHD);
  1908. INPUT_PAYLOAD2(MOVIE_GALLERY_2_FHD);
  1909. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1910. DPRINT(" = AUTO MODE =\n");
  1911. INPUT_PAYLOAD1(AUTO_GALLERY_1_FHD);
  1912. INPUT_PAYLOAD2(AUTO_GALLERY_2_FHD);
  1913. }
  1914. break;
  1915. case mDNIe_VT_MODE:
  1916. DPRINT(" = VT MODE =\n");
  1917. if (mdnie_tun_state.background == STANDARD_MODE) {
  1918. DPRINT(" = STANDARD MODE =\n");
  1919. INPUT_PAYLOAD1(STANDARD_VT_1_FHD);
  1920. INPUT_PAYLOAD2(STANDARD_VT_2_FHD);
  1921. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1922. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1923. DPRINT(" = NATURAL MODE =\n");
  1924. INPUT_PAYLOAD1(NATURAL_VT_1_FHD);
  1925. INPUT_PAYLOAD2(NATURAL_VT_2_FHD);
  1926. #endif
  1927. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1928. DPRINT(" = DYNAMIC MODE =\n");
  1929. INPUT_PAYLOAD1(DYNAMIC_VT_1_FHD);
  1930. INPUT_PAYLOAD2(DYNAMIC_VT_2_FHD);
  1931. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1932. DPRINT(" = MOVIE MODE =\n");
  1933. INPUT_PAYLOAD1(MOVIE_VT_1_FHD);
  1934. INPUT_PAYLOAD2(MOVIE_VT_2_FHD);
  1935. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1936. DPRINT(" = AUTO MODE =\n");
  1937. INPUT_PAYLOAD1(AUTO_VT_1_FHD);
  1938. INPUT_PAYLOAD2(AUTO_VT_2_FHD);
  1939. }
  1940. break;
  1941. #if defined(CONFIG_TDMB)
  1942. case mDNIe_DMB_MODE:
  1943. DPRINT(" = DMB MODE =\n");
  1944. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1945. DPRINT(" = OUTDOOR ON MODE =\n");
  1946. INPUT_PAYLOAD1(OUTDOOR_DMB_1);
  1947. INPUT_PAYLOAD2(OUTDOOR_DMB_2);
  1948. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1949. DPRINT(" = OUTDOOR OFF MODE =\n");
  1950. if (mdnie_tun_state.background == STANDARD_MODE) {
  1951. DPRINT(" = STANDARD MODE =\n");
  1952. INPUT_PAYLOAD1(STANDARD_DMB_1);
  1953. INPUT_PAYLOAD2(STANDARD_DMB_2);
  1954. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  1955. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  1956. DPRINT(" = NATURAL MODE =\n");
  1957. INPUT_PAYLOAD1(NATURAL_DMB_1);
  1958. INPUT_PAYLOAD2(NATURAL_DMB_2);
  1959. #endif
  1960. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  1961. DPRINT(" = DYNAMIC MODE =\n");
  1962. INPUT_PAYLOAD1(DYNAMIC_DMB_1);
  1963. INPUT_PAYLOAD2(DYNAMIC_DMB_2);
  1964. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  1965. DPRINT(" = MOVIE MODE =\n");
  1966. INPUT_PAYLOAD1(MOVIE_DMB_1);
  1967. INPUT_PAYLOAD2(MOVIE_DMB_2);
  1968. } else if (mdnie_tun_state.background == AUTO_MODE) {
  1969. DPRINT(" = AUTO MODE =\n");
  1970. INPUT_PAYLOAD1(AUTO_DMB_1);
  1971. INPUT_PAYLOAD2(AUTO_DMB_2);
  1972. }
  1973. }
  1974. break;
  1975. case mDNIe_DMB_WARM_MODE:
  1976. DPRINT(" = DMB WARM MODE =\n");
  1977. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1978. DPRINT(" = OUTDOOR ON MODE =\n");
  1979. INPUT_PAYLOAD1(WARM_OUTDOOR_DMB_1);
  1980. INPUT_PAYLOAD2(WARM_OUTDOOR_DMB_2);
  1981. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1982. DPRINT(" = OUTDOOR OFF MODE =\n");
  1983. INPUT_PAYLOAD1(WARM_DMB_1);
  1984. INPUT_PAYLOAD2(WARM_DMB_2);
  1985. }
  1986. break;
  1987. case mDNIe_DMB_COLD_MODE:
  1988. DPRINT(" = DMB COLD MODE =\n");
  1989. if (mdnie_tun_state.outdoor == OUTDOOR_ON_MODE) {
  1990. DPRINT(" = OUTDOOR ON MODE =\n");
  1991. INPUT_PAYLOAD1(COLD_OUTDOOR_DMB_1);
  1992. INPUT_PAYLOAD2(COLD_OUTDOOR_DMB_2);
  1993. } else if (mdnie_tun_state.outdoor == OUTDOOR_OFF_MODE) {
  1994. DPRINT(" = OUTDOOR OFF MODE =\n");
  1995. INPUT_PAYLOAD1(COLD_DMB_1);
  1996. INPUT_PAYLOAD2(COLD_DMB_2);
  1997. }
  1998. break;
  1999. #endif
  2000. case mDNIe_BROWSER_MODE:
  2001. DPRINT(" = BROWSER MODE =\n");
  2002. if (mdnie_tun_state.background == STANDARD_MODE) {
  2003. DPRINT(" = STANDARD MODE =\n");
  2004. INPUT_PAYLOAD1(STANDARD_BROWSER_1);
  2005. INPUT_PAYLOAD2(STANDARD_BROWSER_2);
  2006. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  2007. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  2008. DPRINT(" = NATURAL MODE =\n");
  2009. INPUT_PAYLOAD1(NATURAL_BROWSER_1);
  2010. INPUT_PAYLOAD2(NATURAL_BROWSER_2);
  2011. #endif
  2012. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  2013. DPRINT(" = DYNAMIC MODE =\n");
  2014. INPUT_PAYLOAD1(DYNAMIC_BROWSER_1);
  2015. INPUT_PAYLOAD2(DYNAMIC_BROWSER_2);
  2016. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  2017. DPRINT(" = MOVIE MODE =\n");
  2018. INPUT_PAYLOAD1(MOVIE_BROWSER_1);
  2019. INPUT_PAYLOAD2(MOVIE_BROWSER_2);
  2020. } else if (mdnie_tun_state.background == AUTO_MODE) {
  2021. DPRINT(" = AUTO MODE =\n");
  2022. INPUT_PAYLOAD1(AUTO_BROWSER_1);
  2023. INPUT_PAYLOAD2(AUTO_BROWSER_2);
  2024. }
  2025. break;
  2026. case mDNIe_eBOOK_MODE:
  2027. DPRINT(" = eBOOK MODE =\n");
  2028. if (mdnie_tun_state.background == STANDARD_MODE) {
  2029. DPRINT(" = STANDARD MODE =\n");
  2030. INPUT_PAYLOAD1(STANDARD_EBOOK_1);
  2031. INPUT_PAYLOAD2(STANDARD_EBOOK_2);
  2032. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  2033. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  2034. DPRINT(" = NATURAL MODE =\n");
  2035. INPUT_PAYLOAD1(NATURAL_EBOOK_1);
  2036. INPUT_PAYLOAD2(NATURAL_EBOOK_2);
  2037. #endif
  2038. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  2039. DPRINT(" = DYNAMIC MODE =\n");
  2040. INPUT_PAYLOAD1(DYNAMIC_EBOOK_1);
  2041. INPUT_PAYLOAD2(DYNAMIC_EBOOK_2);
  2042. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  2043. DPRINT(" = MOVIE MODE =\n");
  2044. INPUT_PAYLOAD1(MOVIE_EBOOK_1);
  2045. INPUT_PAYLOAD2(MOVIE_EBOOK_2);
  2046. } else if (mdnie_tun_state.background == AUTO_MODE) {
  2047. DPRINT(" = AUTO MODE =\n");
  2048. INPUT_PAYLOAD1(AUTO_EBOOK_1);
  2049. INPUT_PAYLOAD2(AUTO_EBOOK_2);
  2050. }
  2051. break;
  2052. #if !defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
  2053. case mDNIe_EMAIL_MODE:
  2054. DPRINT(" = EMAIL MODE =\n");
  2055. if (mdnie_tun_state.background == STANDARD_MODE) {
  2056. DPRINT(" = STANDARD MODE =\n");
  2057. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  2058. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  2059. } else if (mdnie_tun_state.background == NATURAL_MODE) {
  2060. DPRINT(" = NATURAL MODE =\n");
  2061. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  2062. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  2063. } else if (mdnie_tun_state.background == DYNAMIC_MODE) {
  2064. DPRINT(" = DYNAMIC MODE =\n");
  2065. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  2066. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  2067. } else if (mdnie_tun_state.background == MOVIE_MODE) {
  2068. DPRINT(" = MOVIE MODE =\n");
  2069. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  2070. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  2071. } else if (mdnie_tun_state.background == AUTO_MODE) {
  2072. DPRINT(" = AUTO MODE =\n");
  2073. INPUT_PAYLOAD1(AUTO_EMAIL_1);
  2074. INPUT_PAYLOAD2(AUTO_EMAIL_2);
  2075. }
  2076. break;
  2077. #endif
  2078. case mDNIE_BLINE_MODE:
  2079. DPRINT(" = BLIND MODE =\n");
  2080. INPUT_PAYLOAD1(COLOR_BLIND_1);
  2081. INPUT_PAYLOAD2(COLOR_BLIND_2);
  2082. break;
  2083. default:
  2084. DPRINT("[%s] no option (%d)\n", __func__, mode);
  2085. return;
  2086. }
  2087. }
  2088. #endif
  2089. sending_tuning_cmd();
  2090. free_tun_cmd();
  2091. DPRINT("mDNIe_Set_Mode end , mode(%d), background(%d)\n",
  2092. mode, mdnie_tun_state.background);
  2093. }
  2094. #endif