View | Details | Raw Unified | Return to bug 32652
Collapse All | Expand All

(-)usb/usb.h (+3 lines)
Lines 567-570 Link Here
567
#define USB_GET_CM_OVER_DATA	_IOR ('U', 130, int)
567
#define USB_GET_CM_OVER_DATA	_IOR ('U', 130, int)
568
#define USB_SET_CM_OVER_DATA	_IOW ('U', 131, int)
568
#define USB_SET_CM_OVER_DATA	_IOW ('U', 131, int)
569
569
570
/* Scanner device */
571
#define USB_GET_DEVICE_ID	_IOR('U', 140, int)
572
570
#endif /* _USB_H_ */
573
#endif /* _USB_H_ */
(-)usb/uscanner.c (-3 / +37 lines)
Lines 95-100 Link Here
95
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U },
95
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U },
96
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U2 },
96
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U2 },
97
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANTOUCH },
97
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANTOUCH },
98
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1236U },
99
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE20 },
100
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE25 },
101
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE26 },
102
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE40 },
103
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE50 },
104
	{ USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE52 },
98
105
99
	/* Kye */
106
	/* Kye */
100
	{ USB_VENDOR_KYE, USB_PRODUCT_KYE_VIVIDPRO },
107
	{ USB_VENDOR_KYE, USB_PRODUCT_KYE_VIVIDPRO },
Lines 197-202 Link Here
197
204
198
	int			sc_refcnt;
205
	int			sc_refcnt;
199
	u_char			sc_dying;
206
	u_char			sc_dying;
207
	u_int16_t		sc_vendor_id;
208
	u_int16_t		sc_product_id;
200
};
209
};
201
210
202
#if defined(__NetBSD__) || defined(__OpenBSD__)
211
#if defined(__NetBSD__) || defined(__OpenBSD__)
Lines 207-213 Link Here
207
d_read_t  uscannerread;
216
d_read_t  uscannerread;
208
d_write_t uscannerwrite;
217
d_write_t uscannerwrite;
209
d_poll_t  uscannerpoll;
218
d_poll_t  uscannerpoll;
210
219
d_ioctl_t uscannerioctl;
211
#define USCANNER_CDEV_MAJOR	156
220
#define USCANNER_CDEV_MAJOR	156
212
221
213
Static struct cdevsw uscanner_cdevsw = {
222
Static struct cdevsw uscanner_cdevsw = {
Lines 215-221 Link Here
215
	/* close */	uscannerclose,
224
	/* close */	uscannerclose,
216
	/* read */	uscannerread,
225
	/* read */	uscannerread,
217
	/* write */	uscannerwrite,
226
	/* write */	uscannerwrite,
218
	/* ioctl */	noioctl,
227
	/* ioctl */	uscannerioctl,
219
	/* poll */	uscannerpoll,
228
	/* poll */	uscannerpoll,
220
	/* mmap */	nommap,
229
	/* mmap */	nommap,
221
	/* strategy */	nostrategy,
230
	/* strategy */	nostrategy,
Lines 267-272 Link Here
267
	printf("%s: %s\n", USBDEVNAME(sc->sc_dev), devinfo);
276
	printf("%s: %s\n", USBDEVNAME(sc->sc_dev), devinfo);
268
277
269
	sc->sc_udev = uaa->device;
278
	sc->sc_udev = uaa->device;
279
	sc->sc_vendor_id = uaa->vendor;
280
	sc->sc_product_id = uaa->product;
270
281
271
	err = usbd_set_config_no(uaa->device, 1, 1); /* XXX */
282
	err = usbd_set_config_no(uaa->device, 1, 1); /* XXX */
272
	if (err) {
283
	if (err) {
Lines 338-346 Link Here
338
349
339
	USB_GET_SC_OPEN(uscanner, unit, sc);
350
	USB_GET_SC_OPEN(uscanner, unit, sc);
340
351
341
 	DPRINTFN(5, ("uscanneropen: flag=%d, mode=%d, unit=%d\n", 
352
 	DPRINTFN(5, ("uscanneropen: flag=%d, mode=%d, unit=%d\n",
342
		     flag, mode, unit));
353
		     flag, mode, unit));
343
354
355
	printf( "uscanneropen()\n" );
344
	if (sc->sc_dying)
356
	if (sc->sc_dying)
345
		return (ENXIO);
357
		return (ENXIO);
346
358
Lines 664-669 Link Here
664
	return (revents);
676
	return (revents);
665
}
677
}
666
678
679
int
680
uscannerioctl( dev_t dev, u_long cmd, caddr_t addr, int flag, struct thread* td )
681
{
682
	struct uscanner_softc* sc;
683
684
	USB_GET_SC( uscanner, USCANNERUNIT( dev ), sc );
685
686
	if( sc->sc_dying )
687
		return( EIO );
688
689
	switch( cmd ) {
690
	case USB_GET_DEVICE_ID:
691
		*(u_int32_t*)addr = ( sc->sc_vendor_id << 16 ) | sc->sc_product_id;
692
		break;
693
	default:
694
		return EINVAL;
695
	}
696
	return 0;
697
}
698
667
#if defined(__FreeBSD__)
699
#if defined(__FreeBSD__)
668
DRIVER_MODULE(uscanner, uhub, uscanner_driver, uscanner_devclass, usbd_driver_load, 0);
700
DRIVER_MODULE(uscanner, uhub, uscanner_driver, uscanner_devclass, usbd_driver_load, 0);
669
#endif
701
#endif
702
703

Return to bug 32652