[werner at sita.openmoko.org: r4187 - trunk/src/target/u-boot/patches]

Andy Green andy at openmoko.com
Sun Mar 9 22:15:40 CET 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Somebody in the thread at some point said:
> ----- Forwarded message from werner at sita.openmoko.org -----
> 
> To: commitlog at lists.openmoko.org
> From: werner at sita.openmoko.org
> Subject: r4187 - trunk/src/target/u-boot/patches
> Date: Sun, 09 Mar 2008 18:09:04 +0100
> 
> Author: werner
> Date: 2008-03-09 18:09:00 +0100 (Sun, 09 Mar 2008)
> New Revision: 4187
> 
> Added:
>    trunk/src/target/u-boot/patches/dont-smoke.patch
> Modified:
>    trunk/src/target/u-boot/patches/series
> Log:
> This patch prevents us from drawing more than 100mA from USB, unless we're
> sure we're allowed to. Thus, we don't make the upstream port produce smoke.
> 
> series: added dont-smoke.patch (for later merging into uboot-gta02.patch)
> 
> dont-smoke.patch:
> - drivers/misc/pcf50633.c (pcf50633_read_charger_type, pcf50633_init): return 
>   100 (mA) for USB, not 500
> - drivers/misc/pcf50633.c (pcf50633_init): use pcf50633_usb_maxcurrent instead
>   of open-coding current setting again
> - drivers/misc/pcf50633.c (pcf50633_usb_maxcurrent): use symbolic names for
>   current limits instead of numbers
> - board/neo1973/gta02/pcf50633.c (pcf50633_initial_regs): set initial USB
>   current to 100mA, not 500mA
> 
> 
> 
> Added: trunk/src/target/u-boot/patches/dont-smoke.patch
> ===================================================================
> --- trunk/src/target/u-boot/patches/dont-smoke.patch	2008-03-09 15:41:05 UTC (rev 4186)
> +++ trunk/src/target/u-boot/patches/dont-smoke.patch	2008-03-09 17:09:00 UTC (rev 4187)
> @@ -0,0 +1,89 @@
> +This patch prevents us from drawing more than 100mA from USB, unless we're
> +sure we're allowed to. Thus, we don't make the upstream port produce smoke.
> +
> +Index: u-boot/board/neo1973/gta02/pcf50633.c
> +===================================================================
> +--- u-boot.orig/board/neo1973/gta02/pcf50633.c
> ++++ u-boot/board/neo1973/gta02/pcf50633.c
> +@@ -107,7 +107,7 @@
> + 	[PCF50633_REG_MBCC4]	= 0xff, /* 255/255 == 1A adapter fast */
> + 	[PCF50633_REG_MBCC5]	= 0x7f,	/* 127/255 == 500mA usb fast */
> + 	[PCF50633_REG_MBCC6]	= 0x00, /* cutoff current 1/32 * Ichg */
> +-	[PCF50633_REG_MBCC7]	= 0x01,	/* 1.6A max bat curr, USB 500mA */
> ++	[PCF50633_REG_MBCC7]	= 0x00,	/* 1.6A max bat curr, USB 100mA */
> + 	[PCF50633_REG_MBCC8]	= 0x00,
> + 
> + 	[PCF50633_REG_BBCCTL]	= 0x19,	/* 3V, 200uA, on */
> +Index: u-boot/drivers/misc/pcf50633.c
> +===================================================================
> +--- u-boot.orig/drivers/misc/pcf50633.c
> ++++ u-boot/drivers/misc/pcf50633.c
> +@@ -141,7 +141,7 @@
> + 
> + 	/* ok all we know is there is no resistor, it can be USB pwr or none */
> + 	if ((pcf50633_reg_read(PCF50633_REG_MBCS1) & 0x3) == 0x3)
> +-		return 500; /* USB power then */
> ++		return 100; /* USB power then */
> + 
> + 	return 0; /* nope, no power, just battery */
> + }
> +@@ -152,7 +152,8 @@
> + void pcf50633_init(void)
> + {
> + 	unsigned long flags;
> +-	u_int8_t i, limit;
> ++	u_int8_t i;
> ++	int limit;
> + 
> + 	local_irq_save(flags);
> + 	for (i = 0; i < PCF50633_LAST_REG; i++) {
> +@@ -163,23 +164,15 @@
> + 	local_irq_restore(flags);
> + 
> + 	printf("Power: ");
> +-	switch (pcf50633_read_charger_type()) {
> +-	case 0: /* no charger, battery only */
> +-		printf("Battery\n");
> +-		limit = PCF50633_MBCC7_USB_SUSPEND;
> +-		break;
> +-	case 500:
> +-		printf("USB / 500mA\n");
> +-		limit = PCF50633_MBCC7_USB_500mA;
> +-		break;
> +-	default:
> +-		printf("1A\n");
> +-		limit = PCF50633_MBCC7_USB_1000mA;
> +-		break;
> ++	limit = pcf50633_read_charger_type();
> ++	/*
> ++	 * If we're on real USB, don't change the setting to avoid racing with
> ++	 * USB signaling.
> ++	 */
> ++	if (limit != 100) {
> ++		printf("%dmA\n", limit);
> ++		pcf50633_usb_maxcurrent(limit);
> + 	}
> +-	pcf50633_reg_write(PCF50633_REG_MBCC7,
> +-			   (pcf50633_reg_read(PCF50633_REG_MBCC7) &
> +-			   (~PCF56033_MBCC7_USB_MASK)) | limit);
> + }
> + 
> + void pcf50633_usb_maxcurrent(unsigned int ma)
> +@@ -187,13 +180,13 @@
> + 	u_int8_t val;
> + 
> + 	if (ma < 100)
> +-		val = 0x03;
> ++		val = PCF50633_MBCC7_USB_SUSPEND;
> + 	else if (ma < 500)
> +-		val = 0x00;
> ++		val = PCF50633_MBCC7_USB_100mA;
> + 	else if (ma < 1000)
> +-		val = 0x01;
> ++		val = PCF50633_MBCC7_USB_500mA;
> + 	else
> +-		val = 0x02;
> ++		val = PCF50633_MBCC7_USB_1000mA;
> + 
> + 	return pcf50633_reg_set_bit_mask(PCF50633_REG_MBCC7, 0x03, val);
> + }
> 
> Modified: trunk/src/target/u-boot/patches/series
> ===================================================================
> --- trunk/src/target/u-boot/patches/series	2008-03-09 15:41:05 UTC (rev 4186)
> +++ trunk/src/target/u-boot/patches/series	2008-03-09 17:09:00 UTC (rev 4187)
> @@ -92,3 +92,7 @@
>  
>  # let's see what upstream thinks about this
>  loadenv.patch
> +
> +# fix and improve power management
> +dont-smoke.patch
> +lie-low.patch
> 
> 
> _______________________________________________
> commitlog mailing list
> commitlog at lists.openmoko.org
> http://lists.openmoko.org/mailman/listinfo/commitlog
> 
> ----- End forwarded message -----

Well thanks for sending me the patch Werner, if you can just send 'em to
the list I'll still get a copy and we'll be tickety-boo on that one.

I guess we didn't eat PMU events.

- -Andy
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFH1FN8OjLpvpq7dMoRAocMAJ9PFXy0shjjv7iWR/Oqrh9CHTaY8ACggcZA
L4nUmAouDzzS5XYPCsDq+80=
=6vsh
-----END PGP SIGNATURE-----




More information about the openmoko-kernel mailing list