RE: [patch 2.6.12-rc3] dell_rbu: Resubmitting patch for new DellBIOS update driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Mon, Jun 06, 2005 at 11:27:53AM -0500, [email protected]
wrote:
> > > The firmware class creates a sysfs file.  That is what I am
referring
> > to
> > > here.
> > >
> > By doing a copy of the image to the sysfs file are we trying to do
the
> > automatic actions done by the hotplug scripts manually?
> 
> Ok, it seems everyone is way confused here.  This is what I was
thinking
> of when I suggested using the firmware code:
> 	- module loads and registers with firmware core doing the
> 	  "request_firmware_nowait" call.
> 	- a hotplug event gets generated that everyone just ignores
> 	  (because it isn't really a big deal.)

At this instance the function returns and no entry is seen in
/sys/class/firmware/

> 	- At some point, the user copies the firmware to the sysfs file
> 	  because they want to update their bios.
> 	- the module is then told that firmware is present and it does
> 	  something with it.
> 
> Note, that between step 2 and 3, it could be _days_ or _months_.  No
> need to touch any hotplug scripts at all.
> 
> Does this make more sense now?  It seems pretty simple to me...

But the code still fails; here's the code snippet tired...

struct device *new_device;
void callbackfn(const struct firmware *fw, void *context)
{
        printk("callbackfn: entry\n");

        if (!fw)
                printk("Got invalid fw entry \n");

        printk("callbackfn: exit\n");
}

static int __init dcdrbu_init(void)
{
        int rc = 0;
        
        init_packet_head();

        new_device = kmalloc(sizeof (struct device), GFP_KERNEL);

        if (!new_device) {
                printk("dcdrbu_init: kmalloc failed \n");
                return -ENOMEM;
        }

        device_initialize(new_device);
        strcpy(new_device->bus_id, "dell_rbu");
      
	  rc = request_firmware_nowait (THIS_MODULE,
                "install.log", new_device,
                NULL,
                callbackfn);
        if(rc) {
                printk(KERN_ERR
                        "dcdrbu_init:"
                        " request_firmware_nowait failed %d\n", error);
        }

     return rc;
}

In this case the fw pointer returned in the callback is NULL, it also
happens without any delay and I also see a message as below in
/var/log/messages.
hald[2888]: Timed out waiting for hotplug event 305. Rebasing to 306.

Thanks
Abhay
-
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/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux