greybus: es1-ap-usb: more init framework added.
diff --git a/drivers/staging/greybus/es1-ap-usb.c b/drivers/staging/greybus/es1-ap-usb.c
index 991a538..bebef6d 100644
--- a/drivers/staging/greybus/es1-ap-usb.c
+++ b/drivers/staging/greybus/es1-ap-usb.c
@@ -18,19 +18,31 @@
 };
 MODULE_DEVICE_TABLE(usb, id_table);
 
+struct es1_ap_dev {
+	struct usb_device *usb_dev;
+	struct usb_interface *usb_intf;
+
+	__u8 ap_in_endpoint;
+	__u8 ap_out_endpoint;
+	u8 *ap_buffer;
+
+};
+
 /*
  * 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 struct es1_ap_dev *es1_ap_dev;
 
 
 static int ap_probe(struct usb_interface *interface,
 		    const struct usb_device_id *id)
 {
+	struct usb_host_interface *iface_desc;
+	struct usb_endpoint_descriptor *endpoint;
+	size_t buffer_size;
+	int i;
+
 	if (es1_ap_dev) {
 		dev_err(&interface->dev, "Already have a es1_ap_dev???\n");
 		return -ENODEV;
@@ -39,7 +51,30 @@
 	if (!es1_ap_dev)
 		return -ENOMEM;
 
+	// FIXME
+	// figure out endpoint for talking to the AP.
+	iface_desc = interface->cur_altsetting;
+	for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
+		endpoint = &iface_desc->endpoint[i].desc;
+
+		if (usb_endpoint_is_bulk_in(endpoint)) {
+			buffer_size = usb_endpoint_maxp(endpoint);
+			// FIXME - Save buffer_size?
+			es1_ap_dev->ap_in_endpoint = endpoint->bEndpointAddress;
+		}
+		if (usb_endpoint_is_bulk_out(endpoint)) {
+			// FIXME - anything else about this we need?
+			es1_ap_dev->ap_out_endpoint = endpoint->bEndpointAddress;
+		}
+		// FIXME - properly exit once found the AP endpoint
+		// FIXME - set up cport endpoints
+	}
+
+	// FIXME - allocate buffer
+	// FIXME = start up talking, then create the gb "devices" based on what the AP tells us.
+
 	es1_ap_dev->usb_intf = interface;
+	es1_ap_dev->usb_dev = usb_get_dev(interface_to_usbdev(interface));
 	usb_set_intfdata(interface, es1_ap_dev);
 	return 0;
 }
@@ -50,6 +85,8 @@
 
 	/* Tear down everything! */
 
+	usb_put_dev(es1_ap_dev->usb_dev);
+	kfree(es1_ap_dev->ap_buffer);
 	kfree(es1_ap_dev);
 	es1_ap_dev = NULL;