greybus: first framework for the es1 ap controller
diff --git a/drivers/staging/greybus/es1-ap-usb.c b/drivers/staging/greybus/es1-ap-usb.c
index 05c7248..991a538 100644
--- a/drivers/staging/greybus/es1-ap-usb.c
+++ b/drivers/staging/greybus/es1-ap-usb.c
@@ -18,17 +18,40 @@
 };
 MODULE_DEVICE_TABLE(usb, id_table);
 
+/*
+ * Hack, we "know" we will only have one of these at any one time, so only
+ * create one static structure pointer.
+ */
+struct es1_ap_dev {
+	struct usb_interface *usb_intf;
+
+} *es1_ap_dev;
+
 
 static int ap_probe(struct usb_interface *interface,
 		    const struct usb_device_id *id)
 {
+	if (es1_ap_dev) {
+		dev_err(&interface->dev, "Already have a es1_ap_dev???\n");
+		return -ENODEV;
+	}
+	es1_ap_dev = kzalloc(sizeof(*es1_ap_dev), GFP_KERNEL);
+	if (!es1_ap_dev)
+		return -ENOMEM;
 
+	es1_ap_dev->usb_intf = interface;
+	usb_set_intfdata(interface, es1_ap_dev);
 	return 0;
 }
 
 static void ap_disconnect(struct usb_interface *interface)
 {
+	es1_ap_dev = usb_get_intfdata(interface);
 
+	/* Tear down everything! */
+
+	kfree(es1_ap_dev);
+	es1_ap_dev = NULL;
 
 }