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

Abhay_Salunke
2005-05-26T16:38:11Z

> -----Original Message-----
> From: Greg KH [mailto:greg@kroah.com]
> Sent: Monday, May 23, 2005 10:48 AM
> To: Salunke, Abhay
> Cc: linux-kernel@vger.kernel.org; akpm@osdl.org; Domsch, Matt
> Subject: Re: [patch 2.6.12-rc3] dell_rbu: Resubmitting patch for new
Dell
> BIOS update driver
>
> On Mon, May 23, 2005 at 09:52:05AM -0500, Abhay_Salunke@Dell.com
wrote:
> > Greg,
> > >
> > > Also, what's wrong with using the existing firmware interface in
the
> > > kernel?
> > request_firmware requires the $FIRMWARE env to be populated with the
> > firmware image name or the firmware image name needs to be hardcoded
> > within the call to request_firmware. Since the user is free to
change
> > the BIOS update image at will, it may not be possible if we use
> > $FIRMWARE also I am not sure if this env variable might be
conflicting
> > to some other driver.
>
> As others have already stated, this doesn't really matter. Make it
> "dell_bios_update", if any device names their firmware that, well,
> that's their problem...

OK, I have been trying to use request_firmware but it always fails with
return code -2. This is the code snippet below, any thoughts?

static struct device rbu_device_type;

static struct device rbu_device;

static int __init dcdrbu_init(void)
{
int rc = 0;
const struct firmware *fw;

device_initialize(&rbu_device_type);
device_initialize(&rbu_device);

strncpy(rbu_device.bus_id,"dell_rbu.bin", BUS_ID_SIZE);
strncpy(rbu_device_type.bus_id,"dell_rbu1.bin", BUS_ID_SIZE);

rc = request_firmware(&fw, "dell_rbu_type", &rbu_device_type);

if (rc) {
printk(KERN_ERR "dcdrbu_init: Firmware 1 missing "
"%d\n", rc);
return -EIO;
}

release_firmware(fw);

rc = request_firmware(&fw, "dell_rbu_data", &rbu_device);
if (rc) {
printk(KERN_ERR "dcdrbu_init: Firmware 2 missing "
"%d\n", rc);
return -EIO;
}

release_firmware(fw);

return rc;
}

static __exit void dcdrbu_exit( void)
{
}

module_exit(dcdrbu_exit);
module_init(dcdrbu_init);