endif
ifeq ($(CONFIG_OC_LINCAN_CARD_ipci165),y)
-lincan_cards_SOURCES += ipci165_fw.c kthread.c
+lincan_cards_SOURCES += ipci165_fw.c
+lincan_need_kthread=y
endif
ifeq ($(CONFIG_OC_LINCAN_CARD_sh7760),y)
endif
ifeq ($(CONFIG_OC_LINCAN_CARD_usbcan),y)
-lincan_cards_SOURCES += kthread.c
+lincan_need_kthread=y
+endif
+
+ifeq ($(lincan_need_kthread),y)
+#lincan_cards_SOURCES += kthread.c
endif
ifneq ($(filter hms30c7202_can ns_dev_can,$(lincan_cards_SELECTED)),)
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20))
#include <linux/freezer.h>
#endif
-#include <linux/smp_lock.h>
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
+ #include <linux/smp_lock.h>
+#endif
+#include <linux/module.h>
static int usbcan_probe(struct usb_interface *interface, const struct usb_device_id *id);
static void usbcan_disconnect(struct usb_interface *interface);
int j;
/* prevent more I/O from starting */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
lock_kernel();
+#endif
usbdevs = usb_get_intfdata(interface);
if (usbdevs==NULL){
CANMSG("USBCAN device seems to be already removed\n");
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
unlock_kernel();
+#endif
return;
}
usb_set_intfdata(interface, NULL);
mutex_unlock(&usbdevs->devs[j]->io_mutex);
}
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
unlock_kernel();
+#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10))
kref_put(&usbdevs->candev->refcount,release_device);