diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1229-add-pcf50633-allow-force-charger-type.patch.patch')
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.24/1229-add-pcf50633-allow-force-charger-type.patch.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1229-add-pcf50633-allow-force-charger-type.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1229-add-pcf50633-allow-force-charger-type.patch.patch new file mode 100644 index 000000000..582d89363 --- /dev/null +++ b/target/linux/s3c24xx/patches-2.6.24/1229-add-pcf50633-allow-force-charger-type.patch.patch @@ -0,0 +1,69 @@ +From f96aab45a604cb0f46a6ca3aa286a821c2462fda Mon Sep 17 00:00:00 2001 +From: Andy Green <andy@openmoko.com> +Date: Sun, 13 Jul 2008 20:30:31 +0100 +Subject: [PATCH] add-pcf50633-allow-force-charger-type.patch + +This patch adds a sysfs node: + +/sys/class/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous + +it allows to force the charging limit regardless of the one chosen +by pcf50633 kernel driver. As such, if you write a charging limit +here that is not suitable for the power source, and the power source +is not current limited on its side, it could draw more current than +your power source can handle, burn down you house, etc. + +If you're certain that your power supply can handle it, you can use +this on your own responsibility to make the amount drawn by the +PMU match what you believed your power supply could handle. + +Example usage, in case where you have a dumb 500mA USB charger that +does not have the ID resistor: + +# cat /sys/class/i2c-adapter/i2c-0/0-0073/charger_type +host/500mA usb mode 100mA <=== dumb charger does not ennumerate us +# echo 500 > /sys/class/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous +# cat /sys/class/i2c-adapter/i2c-0/0-0073/charger_type +host/500mA usb mode 500mA + +Signed-off-by: Andy Green <andy@openmoko.com> +--- + drivers/i2c/chips/pcf50633.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c +index a116f9f..9f98ba1 100644 +--- a/drivers/i2c/chips/pcf50633.c ++++ b/drivers/i2c/chips/pcf50633.c +@@ -1953,6 +1953,20 @@ static ssize_t show_charger_type(struct device *dev, + + static DEVICE_ATTR(charger_type, 0444, show_charger_type, NULL); + ++static ssize_t force_usb_limit_dangerous(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t count) ++{ ++ struct i2c_client *client = to_i2c_client(dev); ++ struct pcf50633_data *pcf = i2c_get_clientdata(client); ++ int ma = simple_strtoul(buf, NULL, 10); ++ ++ pcf50633_usb_curlim_set(pcf, ma); ++ return count; ++} ++ ++static DEVICE_ATTR(force_usb_limit_dangerous, 0600, ++ NULL, force_usb_limit_dangerous); ++ + /* + * Charger adc + */ +@@ -2030,6 +2044,7 @@ static struct attribute *pcf_sysfs_entries[] = { + &dev_attr_voltage_ldo6.attr, + &dev_attr_voltage_hcldo.attr, + &dev_attr_charger_type.attr, ++ &dev_attr_force_usb_limit_dangerous.attr, + &dev_attr_charger_adc.attr, + &dev_attr_dump_regs.attr, + NULL, /* going to add things at this point! */ +-- +1.5.6.5 + |