Merged Force Fast Charge Driver by @Faux123 and ME :)

Conflicts:
	arch/arm/mach-msm/Makefile
FAST CHARGE: new hack to allow detect any USB cable as ORIGINAL Cable.

This allow faster file transfer USB 2.0 and can help with faster charging.
FAST CHARGE: Ver 1.4 added new controls to bypass ROM thermal control.

If i want to use Intelli thermal i cant get more than 300ma! as no one
telling to kernel to allow high charge power.

by doing:
echo 1600 > /sys/module/smb349_charger/parameters/smb349_thermal_mitigation

so the smb349_thermal_mitigation stay 300ma

now kernel will use fake charge mA value to boost smb349_thermal_mitigation
when USB is connected.

and if battery will be over 55c it's will set 300mA max till cooldown.

here some examples switching max mA in STweaks in manual mode:

<3>smb349_set_thermal_chg_current_set: thermal-engine set chg current to 500
<3>LGE charging scenario : state 0 -> 0(0-0), temp=34, volt=4180, BTM=0, charger=1, cur_set=500/500, chg_cur = 199
<3>smb349_set_thermal_chg_current_set: thermal-engine set chg current to 1600
<3>LGE charging scenario : state 0 -> 0(0-0), temp=36, volt=4057, BTM=0, charger=1, cur_set=1600/1600, chg_cur = 117
<3>smb349_set_thermal_chg_current_set: thermal-engine set chg current to 1800
<3>LGE charging scenario : state 0 -> 0(0-0), temp=33, volt=4201, BTM=0, charger=1, cur_set=1800/1600, chg_cur = 244
Revert USB CABLE Hack, it's not working as needed.
FORCE FAST CHARGE: bump to v1.5 Cleanups + FIX, now it's WORKS
FORCE FAST CHARGE: V1.6 allow kernel control for smb349_thermal_mitigation

*ROM thermal driver controlling the smb349_thermal_mitigation that lock
max charge from charger/usb to what ROM thermal decide.
Well that is not always good for us :)

*If we connect USB from PC, we will get 500ma charge limit as USB
cant give us more any way. prevent force fast charge to set higher.

*If battery is overheatted or at >= 98% limit charge to 300ma to prevent
battery damage.

*ROM thermal is slow in detecting allowed mA limit, so we use kernel
power connector detection function to update smb349_thermal_mitigation
limit current.

again only if no high temp and battery below 98%

*Also allow USER to set limit using force fast charge interface when using
charger! on USB it's will charge max 500 as should.

Conflicts:
	drivers/power/smb349_charger.c
Revert "FORCE FAST CHARGE: V1.6 allow kernel control for smb349_thermal_mitigation"

This reverts commit dffe6546b845c34c173199caae3c7ed02952aece.
Revert "FORCE FAST CHARGE: bump to v1.5 Cleanups + FIX, now it's WORKS"

This reverts commit 370e079b4caeaf0557caf255dd5d047c5757130f.
Revert "Revert USB CABLE Hack, it's not working as needed."

This reverts commit e624b8c3ce029ca2eb60e15e242c6bc750c75db3.
Revert "FAST CHARGE: Ver 1.4 added new controls to bypass ROM thermal control."

This reverts commit 4234badebc644fe5caf946600d030ca936808341.
stage some changes;
FAST CHARGE: Ver 1.4 added new controls to bypass ROM thermal control.

If i want to use Intelli thermal i cant get more than 300ma! as no one
telling to kernel to allow high charge power.

by doing:
echo 1600 > /sys/module/smb349_charger/parameters/smb349_thermal_mitigation

so the smb349_thermal_mitigation stay 300ma

now kernel will use fake charge mA value to boost smb349_thermal_mitigation
when USB is connected.

and if battery will be over 55c it's will set 300mA max till cooldown.

here some examples switching max mA in STweaks in manual mode:

<3>smb349_set_thermal_chg_current_set: thermal-engine set chg current to 500
<3>LGE charging scenario : state 0 -> 0(0-0), temp=34, volt=4180, BTM=0, charger=1, cur_set=500/500, chg_cur = 199
<3>smb349_set_thermal_chg_current_set: thermal-engine set chg current to 1600
<3>LGE charging scenario : state 0 -> 0(0-0), temp=36, volt=4057, BTM=0, charger=1, cur_set=1600/1600, chg_cur = 117
<3>smb349_set_thermal_chg_current_set: thermal-engine set chg current to 1800
<3>LGE charging scenario : state 0 -> 0(0-0), temp=33, volt=4201, BTM=0, charger=1, cur_set=1800/1600, chg_cur = 244
Revert USB CABLE Hack, it's not working as needed.
FORCE FAST CHARGE: bump to v1.5 Cleanups + FIX, now it's WORKS
FORCE FAST CHARGE: V1.6 allow kernel control for smb349_thermal_mitigation

*ROM thermal driver controlling the smb349_thermal_mitigation that lock
max charge from charger/usb to what ROM thermal decide.
Well that is not always good for us :)

*If we connect USB from PC, we will get 500ma charge limit as USB
cant give us more any way. prevent force fast charge to set higher.

*If battery is overheatted or at >= 98% limit charge to 300ma to prevent
battery damage.

*ROM thermal is slow in detecting allowed mA limit, so we use kernel
power connector detection function to update smb349_thermal_mitigation
limit current.

again only if no high temp and battery below 98%

*Also allow USER to set limit using force fast charge interface when using
charger! on USB it's will charge max 500 as should.

Conflicts:
	drivers/power/smb349_charger.c
FORCE FAST CHARGE: V1.8 new fixes and options.

*Fixed fast charge to 1200 when using FFC ON, was stuck on 300ma!
*Added Ability to charge on MAX 300ma as requested by my user.
*Corrected 1500ma to 1600ma to make it more standard current.
*Rised USB max mA from 370 to 400mA. as we need more 100 for stable MTP
link from PC to Phone.

Conflicts:
	arch/arm/mach-msm/fastchg.c
	drivers/power/smb349_charger.c
FORCE FAST CHARGE: v1.9 added auto FFC on/off based on battery %

*If battery is above 95% then fast charge is set to OFF
if battery is below 95% it's enabled again if was ON/Manual before.

This should prevent full charge bugs and SODS.
FORCE FAST CHARGE: v2.0 add mutex guards to functions.

*My functions get values from other code, and best to lock the read
in that time for asking function.

Conflicts:
	drivers/usb/dwc3/dwc3_otg.c
FORCE FAST CHARGE: v2.1 Correct Mutex init and defines in right place.

Conflicts:
	drivers/power/smb349_charger.c
FORCE FAST CHARGE: v2.2 fix charging on 900ma limit.