diff options
author | lars <lars@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-01-06 01:32:17 +0000 |
---|---|---|
committer | lars <lars@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-01-06 01:32:17 +0000 |
commit | 12cb8e47f82cfc3132962382d3a290028548b902 (patch) | |
tree | 65d74b06f4e472da29770bc5ee7ba329c5b0ad9d /target/linux/xburst/patches-2.6.37/300-battery-fixes.patch | |
parent | a4cf24d38a15dec9dbc1970b53049af4823ea476 (diff) |
[xburst] Add 2.6.37 support
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@24914 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/xburst/patches-2.6.37/300-battery-fixes.patch')
-rw-r--r-- | target/linux/xburst/patches-2.6.37/300-battery-fixes.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/target/linux/xburst/patches-2.6.37/300-battery-fixes.patch b/target/linux/xburst/patches-2.6.37/300-battery-fixes.patch new file mode 100644 index 0000000000..947c6711c3 --- /dev/null +++ b/target/linux/xburst/patches-2.6.37/300-battery-fixes.patch @@ -0,0 +1,49 @@ +--- a/drivers/power/jz4740-battery.c ++++ b/drivers/power/jz4740-battery.c +@@ -47,6 +47,8 @@ struct jz_battery { + + struct power_supply battery; + struct delayed_work work; ++ ++ struct mutex lock; + }; + + static inline struct jz_battery *psy_to_jz_battery(struct power_supply *psy) +@@ -68,6 +70,8 @@ static long jz_battery_read_voltage(stru + unsigned long val; + long voltage; + ++ mutex_lock(&battery->lock); ++ + INIT_COMPLETION(battery->read_completion); + + enable_irq(battery->irq); +@@ -91,6 +95,8 @@ static long jz_battery_read_voltage(stru + battery->cell->disable(battery->pdev); + disable_irq(battery->irq); + ++ mutex_unlock(&battery->lock); ++ + return voltage; + } + +@@ -240,6 +246,11 @@ static int __devinit jz_battery_probe(st + struct jz_battery *jz_battery; + struct power_supply *battery; + ++ if (!pdata) { ++ dev_err(&pdev->dev, "No platform_data supplied\n"); ++ return -ENXIO; ++ } ++ + jz_battery = kzalloc(sizeof(*jz_battery), GFP_KERNEL); + if (!jz_battery) { + dev_err(&pdev->dev, "Failed to allocate driver structure\n"); +@@ -291,6 +302,7 @@ static int __devinit jz_battery_probe(st + jz_battery->pdev = pdev; + + init_completion(&jz_battery->read_completion); ++ mutex_init(&jz_battery->lock); + + INIT_DELAYED_WORK(&jz_battery->work, jz_battery_work); + |