Google binned low power mode panel

This is an extension of QTI's mdss-dsi-panel to handle additional command
sequences for low power modes.

Required properties:
- compatible:           "google,dsi_binned_lp"


==============================================================

Google low power display modes

Required properties:
- compatible:		"google,lp-modes"
- label:			Name of the entry
- dsi-lp-brightness-threshold:
			Max brightness supported by the mode
- dsi-lp-command:	Command sequence to enter this mode
- dsi-lp-command-state:	Command state used in this mode

Example:

/ {
	...
	google,lp-modes {
		lp-mode@0 {
			label = "off";
			google,dsi-lp-brightness-threshold = <0>;
			google,dsi-lp-command = [
				05 01 00 00 00 00 01 22
			];
			google,dsi-lp-command-state = "dsi_lp_mode";
		};

		lp-mode@1 {
			label = "high";
			google,dsi-lp-brightness-threshold = <255>;
			google,dsi-lp-command = [
				39 01 00 00 00 00 03 51 01 FF
				05 01 00 00 00 00 01 12
			];
			google,dsi-lp-command-state = "dsi_lp_mode";
		};
};

==============================================================

Google high brightness display mode

This is an extension of QTI's mdss-dsi-panel to handle special display modes
that allow for exceptionally high brightness.

High brightness mode (HBM) is specified through 1 or more user brightness
ranges. Conceptually, Each HBM range contains,
1) User brightness threshold
2) Panel brightness range
3) DSI command (optional)

HBM ranges must be sorted by brightness threshold and not overlap.
An HBM range covers user brightness levels starting from the threshold, up to
but not including the next HBM mode's threshold.
The last HBM range covers user brightness levels starting from its threshold,
up to and including qcom,mdss-brightness-max-level.

When user brightness is updated, the appropriate HBM range is selected and the
corresponding DSI command, if present, is sent to the panel. Then the user's
brightness is linearly mapped to the panel's brightness range and the panel is
updated if needed.

Note that there is currently no support for backlight LUTs during HBM mode.

HBM support also includes optional brightness dimming support. Brightness
dimming refers to some panels' ability to gradually change brightness over
time, smoothing the transition between current brightness and the latest
brightness level requested by the host. The driver uses this feature, if
supported by the panel, to smooth brightness changes as HBM is enabled, changes
ranges, or disabled.
To implement this support,
1) HBM range entry sequences (dsi-hbm-range-entry-command) or exit sequences
(dsi-hbm-exit-command) will include commands necessary to enable brightness
dimming
2) The corresponding HBM node will specify the number of frames dimming is
expected to last on the panel side
3) The same node will specify a command to send to the panel at the end of the
brightness dimming duration, to disable brightness dimming.

HBM uses the following properties. Each property is required, unless specified
as optional:
- google,hbm-ranges:	Parent list of HBM ranges.
- hbm-range@n:		An HBM range, starting at n=0.
- dsi-hbm-exit-command: Optional command sequence to exit HBM.
- dsi-hbm-commands-state: Optional command state used for HBM commands.
- dsi-hbm-exit-num-dimming-frames: Optional number of frames indicating
    brightness dimming duration. Mandatory if dsi-hbm-exit-dimming-stop-command
    is specified.
- dsi-hbm-exit-dimming-stop-command: Optional command to send at the end of the
	brightness dimming duration, to disable dimming. Mandatory if
	dsi-hbm-exit-num-dimming-frames is specified.

Each hbm-range@n contains the following properties. Each property is required,
unless specified as optional:
- dsi-hbm-range-brightness-threshold: Starting user brightness for this HBM
    range.
- dsi-hbm-range-entry-command: Optional command sequence to enter this range.
- dsi-hbm-range-commands-state: Optional command state used in this range.
- dsi-hbm-range-bl-min-level: Start of panel brightness range
    (inclusive).
- dsi-hbm-range-bl-max-level: End of panel brightness range (inclusive).
- dsi-hbm-range-num-dimming-frames: Optional. Analogous to
    dsi-hbm-exit-num-dimming-frames, but for a given HBM range.
- dsi-hbm-range-dimming-stop-command: Optional. Analogous to
    dsi-hbm-exit-dimming-stop-command, but for a given HBM range.

Example:

/ {
	...
	google,hbm-ranges {
		google,dsi-hbm-exit-command = [
			15 01 00 00 00 00 02 53 20
		];
		google,dsi-hbm-commands-state = "dsi_lp_mode";

		hbm-range@0 {
			google,dsi-hbm-range-brightness-threshold = <1>;

			google,dsi-hbm-range-bl-min-level = <0x5>;
			google,dsi-hbm-range-bl-max-level = <0x3ff>;
			google,dsi-hbm-range-entry-command = [
				15 01 00 00 00 00 02 53 20
			];
			google,dsi-hbm-range-commands-state = "dsi_lp_mode";
		};

		hbm-range@1 {
			google,dsi-hbm-range-brightness-threshold = <170>;

			google,dsi-hbm-range-bl-min-level = <0x3ff>;
			google,dsi-hbm-range-bl-max-level = <0x3ff>;
			google,dsi-hbm-range-entry-command = [
				15 01 00 00 00 00 02 53 E0
			];
			google,dsi-hbm-range-commands-state = "dsi_lp_mode";
		};
	};
