I made a mistake on the latest patch I sent, if (IS_ERR(bllcd->lcd_device)) { + ret = PTR_ERR(bllcd->bl_device); + backlight_device_unregister(bllcd->bl_device); + printk(KERN_ERR "lcd :failed to register device\n"); + kfree(bllcd); + return ret; + }
should ofcourse read if (IS_ERR(bllcd->lcd_device)) { + ret = PTR_ERR(bllcd->lcd_device); + backlight_device_unregister(bllcd->bl_device); + printk(KERN_ERR "lcd :failed to register device\n"); + kfree(bllcd); + return ret; + } Its fixed now for me. Going to test that mdelay issue now. On Wed, 6 Feb 2008 19:31:55 +0000 Russell King - ARM Linux <[EMAIL PROTECTED]> wrote: > On Wed, Feb 06, 2008 at 08:21:28PM +0100, Kristoffer Ericson wrote: > > Oh, and thanks for all the feedback people! (and for doing it nicely) > > I'm afraid you missed one - and there's a better fix for one of the other > points I made... 8) > > > +static int jornada_bl_probe(struct platform_device *pdev) > > +{ > > + struct bllcd_device *bllcd; > > int ret; > > > + > > + bllcd = kzalloc(sizeof(*bllcd), GFP_KERNEL); > > + if (bllcd == NULL) > > + return -ENOMEM; > > + > > + /* bl driver - name must match fb driver name */ > > + bllcd->bl_device = backlight_device_register(S1D_DEVICENAME, > > + &pdev->dev, NULL, &jornada_bl_ops); > > + > > + if (IS_ERR(bllcd->bl_device)) { > > ret = PTR_ERR(bllcd->bl_device); > > > + kfree(bllcd); > > + printk(KERN_ERR "bl :failed to register device\n"); > > + return -ENODEV; > > delete the line above, and then swap the two remaining lines. > > return ret; > > > + } > > + > > + /* lcd driver */ > > + bllcd->lcd_device = lcd_device_register(S1D_DEVICENAME, > > + &pdev->dev, NULL, &jornada_lcd_ops); > > + if (IS_ERR(bllcd->lcd_device)) { > > + backlight_device_unregister(bllcd->bl_device); > > ret = PTR_ERR(bllcd->lcd_device); > > > + kfree(bllcd); > > + printk(KERN_ERR "lcd :failed to register device\n"); > > + return -ENODEV; > > delete the line above, and then swap the two remaining lines. > > return ret; > > The reason for swapping the two lines is that it _might_ give gcc a > chance to optimise the two paths. > > > +static struct platform_driver jornada_bl_driver = { > > + .probe = jornada_bl_probe, > > + .remove = jornada_bl_remove, > > +#ifdef CONFIG_PM > > + .suspend = jornada_bl_suspend, > > + .resume = jornada_bl_resume, > > +#endif > > + .driver = { > > + .name = "jornada_bllcd", > > You missed this one - which currently is: tab space space space space. > It should be two tabs. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/