Skip to contentSkip to conversation

sharpsl_pm refactor

PATCH In review Pavel Machek 2 participants 5 messages Jul 7, 2006 – Jul 8, 2006 Arm (32-bit)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sharpsl_pm refactor

This prepares sharpsl_pm.c for collie. Without nested if()s, #ifdefs can be added. Also warn users about charging in unsuitable temperature.

PATCH FOLLOWS
KernelVersion: 2.6.18-rc1-git

arch/arm/common/sharpsl_pm.c +12 -4
index 045e37e..12beac3 100644
@@ -276,13 +284,19 @@ static void sharpsl_chrg_full_timer(unsi
 		dev_dbg(sharpsl_pm.dev, "Charge Full: AC removed - stop charging!\n");
 		if (sharpsl_pm.charge_mode == CHRG_ON)
 			sharpsl_charge_off();
-	} else if (sharpsl_pm.full_count < 2) {
+		return;
+	} 
+	if (sharpsl_pm.full_count < 2) {
 		dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n");
 		schedule_work(&toggle_charger);
-	} else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) {
+		return;
+	} 
+	if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) {
 		dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n");
 		schedule_work(&toggle_charger);
-	} else {
+		return;
+	}
+	{
 		sharpsl_charge_off();
 		sharpsl_pm.charge_mode = CHRG_DONE;
 		dev_dbg(sharpsl_pm.dev, "Charge Full: Charging Finished\n");
@@ -412,8 +429,10 @@ static int sharpsl_check_battery_temp(vo
 	val = get_select_val(buff);
 
 	dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val);
-	if (val > sharpsl_pm.machinfo->charge_on_temp)
+	if (val > sharpsl_pm.machinfo->charge_on_temp) {
+		printk(KERN_WARNING "Not charging: temperature out of limits.\n"); 
 		return -1;
+	}
 
 	return 0;
 }
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#1 lore raw
Quoted 2 lines · Pavel Machek

This prepares sharpsl_pm.c for collie. Without nested if()s, #ifdefs can be added.

I'm unconvinced as to why collie needs an ifdef in there and looking at what I think you're leading to, its ugly. Perhaps you could change the 2 to a variable set by the machine instead or something, depending upon your intention.

Rather than post these patches straight to the patch system, perhaps you could also post them for discussion first as discussing them once they're submitted seems wrong (and we have to remember to remove the patch system from the cc).

Quoted 2 lines

Also warn users about charging in unsuitable
temperature.

I'm ok with that bit.

Richard

#2 lore raw

Hi!

Quoted 7 lines
Quoted 2 lines

This prepares sharpsl_pm.c for collie. Without nested if()s, #ifdefs can be added.

I'm unconvinced as to why collie needs an ifdef in there and looking at what I think you're leading to, its ugly. Perhaps you could change the 2 to a variable set by the machine instead or something, depending upon your intention.

Well, I hate the if/else maze -- IMO returns are more readable. Anyway collie needs both count and time checks disabled, AFAICT.

Quoted 4 lines

Rather than post these patches straight to the patch system, perhaps you could also post them for discussion first as discussing them once they're submitted seems wrong (and we have to remember to remove the patch system from the cc).

Sorry about that. Yep, I'm used to work with akpm...
Pavel

Signature · 1 line
Thanks for all the (sleeping) penguins.
#3 lore raw
Quoted 7 lines · Pavel Machek
Quoted 4 lines

I'm unconvinced as to why collie needs an ifdef in there and looking at what I think you're leading to, its ugly. Perhaps you could change the 2 to a variable set by the machine instead or something, depending upon your intention.

Well, I hate the if/else maze -- IMO returns are more readable. Anyway collie needs both count and time checks disabled, AFAICT.

To me it looks much worse after you changed it as I can understand it at the moment and afterwards with the ifdefs in, I can't.

Ignoring that issue, why does collie need them disabled? Do they break collie somehow or is this just because the sharp driver didn't do it?

I'd prefer to keep the charging techniques the same across as many of the devices as we can and I can't see how this technique causes a problem. The charging hardware and the battery is very similar across the models (although you wouldn't believe it looking at the charging driver).

Richard

#4 lore raw

Hi!

Quoted 10 lines
Quoted 7 lines
Quoted 4 lines

I'm unconvinced as to why collie needs an ifdef in there and looking at what I think you're leading to, its ugly. Perhaps you could change the 2 to a variable set by the machine instead or something, depending upon your intention.

Well, I hate the if/else maze -- IMO returns are more readable. Anyway collie needs both count and time checks disabled, AFAICT.

To me it looks much worse after you changed it as I can understand it at the moment and afterwards with the ifdefs in, I can't.

Well, maybe you'll not get the ifdefs after all... They were just handy in my tree and code with returns (vs. code with if/else maze) looked better to me.

Quoted 3 lines

Ignoring that issue, why does collie need them disabled? Do they break collie somehow or is this just because the sharp driver didn't do it?

Sharp driver did not do it, and forcing charge 3 times when charger tells me that it is done seems a bit cruel. What is worse, if I get charge-too-fast timeout too long, it will keep charging battery over-and-over-and-over-and-over.

Quoted 5 lines

I'd prefer to keep the charging techniques the same across as many of the devices as we can and I can't see how this technique causes a problem. The charging hardware and the battery is very similar across the models (although you wouldn't believe it looking at the charging driver).

Okay, you may be right here. I am just trying to be careful -- hot lithium scares me a bit ;-).
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html