summaryrefslogtreecommitdiffstats
path: root/uClinux-2.4.20-uc1/drivers/usb/storage/initializers.c
diff options
context:
space:
mode:
Diffstat (limited to 'uClinux-2.4.20-uc1/drivers/usb/storage/initializers.c')
-rw-r--r--uClinux-2.4.20-uc1/drivers/usb/storage/initializers.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/uClinux-2.4.20-uc1/drivers/usb/storage/initializers.c b/uClinux-2.4.20-uc1/drivers/usb/storage/initializers.c
index dd03ef7..924ee88 100644
--- a/uClinux-2.4.20-uc1/drivers/usb/storage/initializers.c
+++ b/uClinux-2.4.20-uc1/drivers/usb/storage/initializers.c
@@ -46,14 +46,33 @@ int usb_stor_euscsi_init(struct us_data *us)
{
unsigned char data = 0x1;
int result;
+#ifdef CONFIG_BOARD_W90N745
+ unsigned char *datap = kmalloc(sizeof(unsigned char)*1, GFP_KERNEL);
+
+ if(!datap) {
+ printk("Can't alloc memory for eusci_init\n");
+ return 0;
+ }
+ datap = (unsigned char *)((unsigned long)datap | 0x80000000);
+#endif
US_DEBUGP("Attempting to init eUSCSI bridge...\n");
+#ifndef CONFIG_BOARD_W90N745
result = usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0),
0x0C, USB_RECIP_INTERFACE | USB_TYPE_VENDOR,
0x01, 0x0, &data, 0x1, 5*HZ);
US_DEBUGP("-- result is %d\n", result);
US_DEBUGP("-- data afterwards is %d\n", data);
+#else
+ result = usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0),
+ 0x0C, USB_RECIP_INTERFACE | USB_TYPE_VENDOR,
+ 0x01, 0x0, datap, 0x1, 5*HZ);
+ US_DEBUGP("-- result is %d\n", result);
+ US_DEBUGP("-- data afterwards is %d\n", *datap);
+ if(datap)
+ kfree((unsigned char *)((unsigned long)datap & 0x7fffffff));
+#endif
return 0;
}