msm: cpufreq: Add frequency limiter driver

* This driver limits max frequency on suspend/resume.
* This driver can be used by other boards as well
  since it doesn't contain any function specific to
  msm board.
* We will convert pr_info to pr_debug once tested
  and reviewed.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

Conflicts:
	arch/arm/mach-msm/Kconfig
	arch/arm/mach-msm/Makefile

Signed-off-by: Stefanescu Cristian <howerkraft@gmail.com>

Conflicts:
	arch/arm/mach-msm/Kconfig
	arch/arm/mach-msm/Makefile
msm: limiter: Update path

* Attributes are created at /sys/kernel/msm_limiter/*

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Stefanescu Cristian <howerkraft@gmail.com>
msm: limiter: Improve logic and formatting

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Stefanescu Cristian <howerkraft@gmail.com>
msm: limiter: Cleanup debug prints

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Stefanescu Cristian <howerkraft@gmail.com>
msm: limiter: Increase constraints prior changing limits

* In very rare instance, resume function causes wdog to reset
  on MSM board and hence a reboot.
* So let resume function execute and restore limits only if
  required.
* Increase suspend defer time to 10 seconds.
  (which is same as that of MSM Hotplug)

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Stefanescu Cristian <howerkraft@gmail.com>
msm: limiter: Add enable switch and use workqueues

* In case user wish to use external app to set
  min-max frequencies, we should not override.
* Use high priority workqueues for limit work.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Stefanescu Cristian <howerkraft@gmail.com>
msm: limiter: Fix updation waiting for next cycle

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Stefanescu Cristian <howerkraft@gmail.com>