File libfprint-deinit-01.patch of Package libfprint

--- libfprint/fprint.h	2009-01-26 14:22:08.000000000 +0100
+++ libfprint/fprint.h	2009-01-26 14:25:40.000000000 +0100
@@ -89,6 +89,7 @@
 /* Device handling */
 struct fp_dev *fp_dev_open(struct fp_dscv_dev *ddev);
 void fp_dev_close(struct fp_dev *dev);
+void fp_dev_reset(struct fp_dev *dev);
 struct fp_driver *fp_dev_get_driver(struct fp_dev *dev);
 int fp_dev_get_nr_enroll_stages(struct fp_dev *dev);
 uint32_t fp_dev_get_devtype(struct fp_dev *dev);
--- libfprint/drivers/aes2501.c	2008-03-20 14:37:33.000000000 +0100
+++ libfprint/drivers/aes2501.c	2009-01-26 14:25:40.000000000 +0100
@@ -248,6 +248,11 @@
 	usb_release_interface(dev->udev, 0);
 }
 
+static void dev_reset(struct  fp_img_dev *dev)
+{
+	// reset stub
+}
+
 static const struct aes_regwrite finger_det_reqs[] = {
 	{ AES2501_REG_CTRL1, AES2501_CTRL1_MASTER_RESET },
 	{ AES2501_REG_EXCITCTRL, 0x40 },
@@ -584,6 +589,7 @@
 
 	.init = dev_init,
 	.exit = dev_exit,
+	.reset = dev_reset,
 	.await_finger_on = await_finger_on,
 	.capture = capture,
 };
--- libfprint/drivers/upekts.c	2008-03-20 14:37:33.000000000 +0100
+++ libfprint/drivers/upekts.c	2009-01-26 14:29:04.000000000 +0100
@@ -546,6 +546,14 @@
 	g_free(dev->priv);
 }
 
+static void dev_reset(struct fp_dev *dev)
+{
+	/* should not be necessary */
+	//dev_init(dev, 0L);
+	do_init(dev);
+	do_deinit(dev);
+}
+
 static const unsigned char enroll_init[] = {
 	0x02, 0xc0, 0xd4, 0x01, 0x00, 0x04, 0x00, 0x08
 };
@@ -817,6 +825,7 @@
 	.id_table = id_table,
 	.init = dev_init,
 	.exit = dev_exit,
+	.reset = dev_reset,
 	.enroll = enroll,
 	.verify = verify,
 };
--- libfprint/core.c	2009-01-26 14:22:08.000000000 +0100
+++ libfprint/core.c	2009-01-26 14:25:40.000000000 +0100
@@ -1167,3 +1167,10 @@
 	registered_drivers = NULL;
 }
 
+API_EXPORTED void fp_dev_reset(struct fp_dev *dev)
+{
+	if (!dev)
+		return;
+	if (dev->drv->reset)
+		dev->drv->reset(dev);
+}
--- libfprint/fp_internal.h	2009-01-26 14:33:49.000000000 +0100
+++ libfprint/fp_internal.h	2009-01-26 14:25:40.000000000 +0100
@@ -111,6 +111,7 @@
 	int (*discover)(const struct usb_id *usb_id, uint32_t *devtype);
 	int (*init)(struct fp_dev *dev, unsigned long driver_data);
 	void (*exit)(struct fp_dev *dev);
+	void (*reset)(struct fp_dev *dev);
 	int (*enroll)(struct fp_dev *dev, gboolean initial, int stage,
 		struct fp_print_data **print_data, struct fp_img **img);
 	int (*verify)(struct fp_dev *dev, struct fp_print_data *data,
@@ -135,6 +136,7 @@
 	/* Device operations */
 	int (*init)(struct fp_img_dev *dev, unsigned long driver_data);
 	void (*exit)(struct fp_img_dev *dev);
+	void (*reset)(struct fp_dev *dev);
 	int (*await_finger_on)(struct fp_img_dev *dev);
 	int (*await_finger_off)(struct fp_img_dev *dev);
 	int (*capture)(struct fp_img_dev *dev, gboolean unconditional,
openSUSE Build Service is sponsored by