msm: mdss: Display gamma control

TODO: confirm rgb channels, identify other tunables, cleanup,
apply values without switching screen (off and) on.

sysfs: /sys/devices/qcom,mdss_dsi_jdi_command_ors.69/*
Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Apply commands values without switching screen (off and) on

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Remove tunable for command 32

Even slight changes look ugly or distort the screen.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: distinguish between Gamma RGB polarity Positive/Negative

Signed-off-by: Paul Reioux <reioux@gmail.com>
Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Remove sysfs for unused commands

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Identify white point in sysfs

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Add safety check for user input

Leave more checks either to the control app or the user's intelligence.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Finalize gamma interface and cleanup

- Remove all sysfs files of unused commands
- Remove auto sync for negative polarities, these must be written separately
- Protect offset bit of white point command as well
- Apply white point bit 2 as duplicate of bit 1

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Send panel commands via separate function

Sending panel comnmands is very expensive, add a separate function to
accomplish this. Once all commands have been stored write anything to
the kgamma_send file.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Add hardware revision check

Our gamma interface works with both current hardware revisions,
11 and 11j, although all testing was carried out on 11. As we
don't know about possible future revisions, let's bail out until
correct offsets for panel commands have been added.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
msm: mdss: Use workqueue to send panel commands

Sending panel commands is known to be expensive, honor this by
scheduling this task. Also check for panel state and send commands
only when we're actually awake.

These fixes adress bug reports regarding behaviour during boot.

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: Find a stable sysfs node for the gamma interface

Move sysfs files to /sys/module/dsi_panel/*

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: Fix issues in gamma interface

Protect access to panel command struct by mutex,
this should help with ULPS stability during panel
on as well.  Also, remove the broken debug FS.

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
arm/dts: hammerhead: Optimize panel init/uninit sequence

Reduce panel on delay from 200ms and panel off from 120ms
to 20ms respectively.

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
LCD_KCAL: Color Control driver for Nexus 5

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
LCD_KCAL: remove the control bit, I hate it. Also clean up the code a little bit.

Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
LCD KCAL: Fix Gamma max value issue

Major thanks to Yorici Vz for his tireless pursuit of perfection on Nexus 5
Color / Gamma :D

Signed-off-by: Paul Reioux <reioux@gmail.com>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>