Qualcomm QPNP PWM/LPG controller

qpnp-pwm driver supports Pulse Width Module (PWM) functionality. PWM feature is
used in range of applications such as varying Display brightness, LED dimming,
etc. The Qualcomm PMICs have a physical device called Light Pulse Generator
(LPG). In addition to support PWM functionality, the LPG module provides
a rich set of user defined PWM pattern configurations, such as sawtooth, linear
up, linear down, triangular patterns etc. The PWM patterns are used in
applications such as charger driver where the driver uses these patterns
to indicate various states of charging.

Required device bindings:
- compatible:		should be "qcom,qpnp-pwm"
- reg:			Offset and length of the controller's LPG channel register,
			and LPG look-up table (LUT). The LPG look-up table is a
			contiguous address space that is populated with PWM values.
			The size of PWM value is 9 bit and the size of each
			entry of the table is 8 bit. Thus, two entries are used
			to fill each PWM value. The lower entry is used for PWM
			LSB byte and higher entry is used for PWM MSB bit.
- reg-names:		Names for the above registers.
			"qpnp-lpg-channel-base" = physical base address of the
			controller's LPG channel register.
			"qpnp-lpg-lut-base" = physical base address of LPG LUT.
- qcom,channel-id:	channel Id for the PWM.

Optional device bindings:
- qcom,channel-owner:	A string value to supply owner information.
- qcom,mode-select:	0 = PWM mode
			1 = LPG mode
If this binding is specified along with the required bindings of PWM/LPG then
in addition to configure PWM/LPG the qpnp-pwm driver also enables the feature
at the probe time. In the case where the binding is not specified the qpnp-pwm
driver does not enable the feature. Also, it is considered an error to specify
a particular mode using this binding but not the respective feature subnode.

All PWM devices support both PWM and LPG features within the same device.
To support each feature, there are some required and optional bindings passed
through device tree.

The PWM device can enable one feature (either PWM or LPG) at any given time.
Therefore, the qpnp-pwm driver applies the last PWM or LPG feature configuration
and enables that feature.

Required bindings to support PWM feature:
- qcom,period:	PWM period time in microseconds.
- qcom,duty:	PWM duty time in microseconds.
- label:	"pwm"

Required bindings to support LPG feature:
The following bindings are needed to configure LPG mode, where a list of
duty cycle percentages is populated. The size of the list cannot exceed
the size of the LPG look-up table.

- qcom,period:			PWM period time in microseconds.
- qcom,duty-percents:		List of entries for look-up table
- cell-index:			Index of look-up table that should be used to start
				filling up the duty-pct list. start-idx + size of list
				cannot exceed the size of look-up table.
- label:			"lpg"


Optional bindings to support LPG feature:
- qcom,ramp-step-duration:	Time (in ms) to wait before loading next entry of LUT
- qcom,lpg-lut-pause-hi:	Time (in ms) to wait once pattern reaches to hi
				index.
- qcom,lpg-lut-pause-lo:	Time (in ms) to wait once pattern reaches to lo
				index.
- qcom,lpg-lut-ramp-direction:	1 = Start the pattern from lo index to hi index.
				0 = Start the pattern from hi index to lo index.
- qcom,lpg-lut-pattern-repeat:	1 = Repeat the pattern after the pause once it
				reaches to last duty cycle.
				0 = Do not repeat the pattern.
- qcom,lpg-lut-ramp-toggle:	1 = Toggle the direction of the pattern.
				0 = Do not toggle the direction.
- qcom,lpg-lut-enable-pause-hi:	1 = Enable pause time at hi index.
				0 = Disable pause time at hi index.
- qcom,lpg-lut-enable-pause-lo:	1 = Enable pause time at lo index.
				0 = Disable pause time at lo index.


Example:
        qcom,spmi@fc4c0000 {
                #address-cells = <1>;
                #size-cells = <0>;

                qcom,pm8941@1 {
                        spmi-slave-container;
                        reg = <0x1>;
                        #address-cells = <1>;
                        #size-cells = <1>;

                        pwm@b100 {
                                #address-cells = <1>;
                                #size-cells = <1>;
                                compatible = "qcom,qpnp-pwm";
                                reg = <0xb100 0x100>,
                                      <0xb040 0x80>;
				reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
                                qcom,channel-id = <0>;
				status = "okay";
                        };

                        pwm@b200 {
                                #address-cells = <1>;
                                #size-cells = <1>;
                                compatible = "qcom,qpnp-pwm";
                                reg = <0xb200 0x100>,
                                      <0xb040 0x80>;
				reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
                                qcom,channel-id = <1>;
                                qcom,period = <6000000>;
				status = "okay";
				qcom,pwm {
					qcom,duty = <4000000>;
					label = "pwm";
				};
                        };

                        pwm@b500 {
                                #address-cells = <1>;
                                #size-cells = <1>;
                                compatible = "qcom,qpnp-pwm";
                                reg = <0xb500 0x100>,
                                      <0xb040 0x80>;
				reg-names = "qpnp-lpg-channel-base", "qpnp-lpg-lut-base";
                                qcom,channel-id = <4>;
                                qcom,period = <6000000>;
				qcom,mode-select = <0>;
				qcom,channel-owner = "RGB-led";
				status = "okay";

				qcom,pwm {
					qcom,duty = <4000000>;
					label = "pwm";
				};

				qcom,lpg {
					qcom,duty-percents = <1 14 28 42 56 84 100
							100 84 56 42 28 14 1>;
					cell-index = <0>;
					qcom,ramp-step-duration = <20>;
					label = "lpg";
				};
                        };
                };
        };

There are couple of ways to configure PWM device channels as shown in above
example,
1. The PWM device channel #0 is configured with only required device bindings.
In this case, the qpnp-pwm driver does not configure any mode by default.

2. The qpnp-pwm driver configures PWM device channel #1 with PWM feature
configuration, but does not enable the channel since "qcom,mode-select" binding
is not specified in the devicetree.

3. Both the PWM and LPG configurations are provided for PWM device channel #4.
The qpnp-pwm driver configures both the modes, but enables PWM mode at the probe
time. It also sets the channel owner information for the channel.
