trigggl |
07-15-2006 08:23 AM |
Quote:
Originally Posted by nadroj
go to /usr/src/kernel-headers-`uname -r`/ and run 'make dep'.. does that create the necessary file? ive read thats what you can do to make it.
|
Code:
fangorn:/usr/src/kernel-headers-2.6.8-3-686# make dep
*** Warning: make dep is unnecessary now.
fangorn:/usr/src/kernel-headers-2.6.8-3-686#
Apparently either Debian Sarge or 2.6.8 don't do modversions. So, back to what I really need help with.
How do I edit this Makefile to my needs? I guess I can post some of the beginning errors from the make command.
Code:
fangorn:/home/greg/lexmark/LEXUSB-SCANNER-1.0-1# make
gcc -DMODULE -D__KERNEL__ -I/usr/src/kernel-headers-`uname -r`/include -include /usr/src/kernel-headers-`uname -r`/include/linux/modversions.h -c lxkscanner.c
<command line>:138477835:336: /usr/src/kernel-headers-2.6.8-3-686/include/linux/modversions.h: No such file or directory
In file included from /usr/src/kernel-headers-2.6.8-3-686/include/linux/irq.h:20,
from /usr/src/kernel-headers-2.6.8-3-686/include/asm/hardirq.h:6,
from /usr/src/kernel-headers-2.6.8-3-686/include/linux/interrupt.h:12,
from /usr/src/kernel-headers-2.6.8-3-686/include/linux/usb.h:15,
from lxkscanner.h:54,
from lxkscanner.c:358:
/usr/src/kernel-headers-2.6.8-3-686/include/asm/irq.h:16:25: irq_vectors.h: No such file or directory
In file included from /usr/src/kernel-headers-2.6.8-3-686/include/asm/hardirq.h:6,
from /usr/src/kernel-headers-2.6.8-3-686/include/linux/interrupt.h:12,
from /usr/src/kernel-headers-2.6.8-3-686/include/linux/usb.h:15,
from lxkscanner.h:54,
from lxkscanner.c:358:
/usr/src/kernel-headers-2.6.8-3-686/include/linux/irq.h:70: error: `NR_IRQS' undeclared here (not in a function)
In file included from /usr/src/kernel-headers-2.6.8-3-686/include/linux/irq.h:72,
from /usr/src/kernel-headers-2.6.8-3-686/include/asm/hardirq.h:6,
from /usr/src/kernel-headers-2.6.8-3-686/include/linux/interrupt.h:12,
from /usr/src/kernel-headers-2.6.8-3-686/include/linux/usb.h:15,
from lxkscanner.h:54,
from lxkscanner.c:358:
/usr/src/kernel-headers-2.6.8-3-686/include/asm/hw_irq.h:28: error: `NR_IRQ_VECTORS' undeclared here (not in a function)
Just for grins, I'll go ahead and include the other files(no pun intended).
lxkscanner.h
Code:
/*
* Driver for USB Scanners (linux-2.4.18)
*
* Copyright (C) 2004, Lexmark International, Inc.
* Copyright (C) 1999, 2000, 2001, 2002 David E. Nelson
*
* Brian Beattie <beattie@beattie-home.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* History
*
* 0.1 5/22/2004
* - Added a new structure to solve inconsistency in declaration
* among some Linux distributions
* - Added vendor and product ID's of Lexmark devices
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <asm/uaccess.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/ioctl.h>
#include <linux/sched.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
// #define DEBUG
/* Enable this to support the older ioctl interfaces scanners that
* a PV8630 Scanner-On-Chip. The prefered method is the
* SCANNER_IOCTL_CTRLMSG ioctl.
*/
// #define PV8630
#define DRIVER_VERSION "0.4.6"
#define DRIVER_DESC "USB Scanner Driver"
#include <linux/usb.h>
static __s32 vendor=-1, product=-1, read_timeout=0;
MODULE_AUTHOR("Brian Beattie, beattie@beattie-home.net");
MODULE_DESCRIPTION(DRIVER_DESC" "DRIVER_VERSION);
MODULE_LICENSE("GPL");
MODULE_PARM(vendor, "i");
MODULE_PARM_DESC(vendor, "User specified USB idVendor");
MODULE_PARM(product, "i");
MODULE_PARM_DESC(product, "User specified USB idProduct");
MODULE_PARM(read_timeout, "i");
MODULE_PARM_DESC(read_timeout, "User specified read timeout in seconds");
/* WARNING: These DATA_DUMP's can produce a lot of data. Caveat Emptor. */
// #define RD_DATA_DUMP /* Enable to dump data - limited to 24 bytes */
// #define WR_DATA_DUMP /* DEBUG does not have to be defined. */
static struct usb_device_id scanner_device_ids [] = {
/* Lexmark */
{ USB_DEVICE(0x043d, 0x0093) }, /* X5250 */
{ USB_DEVICE(0x043d, 0x0065) }, /* X5100 */
{ USB_DEVICE(0x043d, 0x0098) },
{ USB_DEVICE(0x043d, 0x0097) },
{ } /* Terminating entry */
};
MODULE_DEVICE_TABLE (usb, scanner_device_ids);
#define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
#define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
#define IS_EP_BULK_OUT(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)
#define IS_EP_INTR(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_INT ? 1 : 0)
#define USB_SCN_MINOR(X) MINOR((X)->i_rdev) - SCN_BASE_MNR
#ifdef DEBUG
#define SCN_DEBUG(X) X
#else
#define SCN_DEBUG(X)
#endif
#define IBUF_SIZE 32768
#define OBUF_SIZE 4096
/* read_scanner timeouts -- RD_NAK_TIMEOUT * RD_EXPIRE = Number of seconds */
#define RD_NAK_TIMEOUT (10*HZ) /* Default number of X seconds to wait */
#define RD_EXPIRE 12 /* Number of attempts to wait X seconds */
/* FIXME: These are NOT registered ioctls()'s */
#ifdef PV8630
#define PV8630_IOCTL_INREQUEST 69
#define PV8630_IOCTL_OUTREQUEST 70
#endif /* PV8630 */
/* read vendor and product IDs from the scanner */
#define SCANNER_IOCTL_VENDOR _IOR('U', 0x20, int)
#define SCANNER_IOCTL_PRODUCT _IOR('U', 0x21, int)
/* send/recv a control message to the scanner */
#define SCANNER_IOCTL_CTRLMSG _IOWR('U', 0x22, devrequest_lxk)
#define SCN_MAX_MNR 16 /* We're allocated 16 minors */
#define SCN_BASE_MNR 48 /* USB Scanners start at minor 48 */
static DECLARE_MUTEX (scn_mutex); /* Initializes to unlocked */
struct scn_usb_data {
struct usb_device *scn_dev;
devfs_handle_t devfs; /* devfs device */
struct urb scn_irq;
unsigned int ifnum; /* Interface number of the USB device */
kdev_t scn_minor; /* Scanner minor - used in disconnect() */
unsigned char button; /* Front panel buffer */
char isopen; /* Not zero if the device is open */
char present; /* Not zero if device is present */
char *obuf, *ibuf; /* transfer buffers */
char bulk_in_ep, bulk_out_ep, intr_ep; /* Endpoint assignments */
wait_queue_head_t rd_wait_q; /* read timeouts */
struct semaphore sem; /* lock to prevent concurrent reads or writes */
unsigned int rd_nak_timeout; /* Seconds to wait before read() timeout. */
};
extern devfs_handle_t usb_devfs_handle;
static struct scn_usb_data *p_scn_table[SCN_MAX_MNR] = { NULL, /* ... */};
static struct usb_driver scanner_driver;
typedef struct {
__u8 requesttype;
__u8 request;
__u16 value;
__u16 index;
__u16 length;
} devrequest_lxk __attribute__ ((packed));
I'll post lxkscanner.c and lxkscanner_load after doing finances.
|