Hey,
the attached patch is fixing an oops on boot. pcf50633_global is not yet set
when we boot with usb attached and then finding the "struct device" within
the NULL pointer. I think it is safe to not call into the pcf50633 as we will
do a "coldplug" anyway.
z.
From cede5c6c9b06ecbb0f7f2df7b7070092b87ddaf8 Mon Sep 17 00:00:00 2001
From: Holger Freyther <[EMAIL PROTECTED]>
Date: Mon, 7 Jul 2008 09:05:02 +0200
Subject: [PATCH] [pcf50633] Avoid ooops on start with inserted usb cable
The pcf50633_global might not be initialized when we get the first
usb interrupt. We would oops inside the dev_err because we made up
a struct device.
Signed-Off-By: Holger Freyther <[EMAIL PROTECTED]>
---
arch/arm/mach-s3c2440/mach-gta02.c | 3 +++
drivers/i2c/chips/pcf50633.c | 4 +---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
index 7118332..b3d3797 100644
--- a/arch/arm/mach-s3c2440/mach-gta02.c
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
@@ -883,6 +883,9 @@ static void gta02_udc_command(enum s3c2410_udc_cmd_e cmd)
static void gta02_udc_vbus_draw(unsigned int ma)
{
+ if (!pcf50633_global)
+ return;
+
pcf50633_notify_usb_current_limit_change(pcf50633_global, ma);
}
diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
index 10934f7..64de9bf 100644
--- a/drivers/i2c/chips/pcf50633.c
+++ b/drivers/i2c/chips/pcf50633.c
@@ -690,9 +690,7 @@ int pcf50633_notify_usb_current_limit_change(struct pcf50633_data *pcf,
* have to bail with error since we can't even schedule the work
*/
if (!pcf) {
- dev_err(&pcf->client.dev,
- "pcf50633_notify_usb_current_limit_change "
- "called with NULL pcf\n");
+ printk(KERN_ERR "pcf50633_notify_usb_current_limit called with NULL pcf\n");
return -EBUSY;
}
--
1.5.2.3