summaryrefslogtreecommitdiff
path: root/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-gadget-introduce-g_nokia-gadget-driver.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-gadget-introduce-g_nokia-gadget-driver.patch')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-gadget-introduce-g_nokia-gadget-driver.patch320
1 files changed, 0 insertions, 320 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-gadget-introduce-g_nokia-gadget-driver.patch b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-gadget-introduce-g_nokia-gadget-driver.patch
deleted file mode 100644
index 14b4bfbc0..000000000
--- a/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-gadget-introduce-g_nokia-gadget-driver.patch
+++ /dev/null
@@ -1,320 +0,0 @@
-From d96b241bd2ad42b6c49d5f6435c69b23818f001e Mon Sep 17 00:00:00 2001
-From: Felipe Balbi <felipe.balbi@nokia.com>
-Date: Tue, 5 Jan 2010 16:10:13 +0200
-Subject: [PATCH 9/10] USB: gadget: introduce g_nokia gadget driver
-
-Patch-mainline: 2.6.34
-Git-commit: f358f5b40af67caf28b627889d007294614170b2
-
-g_nokia is the gadget driver implementing
-WMCDC Wireless Handset Control Model for the N900
-device.
-
-Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
----
- drivers/usb/gadget/Kconfig | 10 +
- drivers/usb/gadget/Makefile | 2
- drivers/usb/gadget/nokia.c | 259 ++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 271 insertions(+)
- create mode 100644 drivers/usb/gadget/nokia.c
-
---- a/drivers/usb/gadget/Kconfig
-+++ b/drivers/usb/gadget/Kconfig
-@@ -828,6 +828,16 @@
- Say "y" to link the driver statically, or "m" to build a
- dynamically linked module.
-
-+config USB_G_NOKIA
-+ tristate "Nokia composite gadget"
-+ depends on PHONET
-+ help
-+ The Nokia composite gadget provides support for acm, obex
-+ and phonet in only one composite gadget driver.
-+
-+ It's only really useful for N900 hardware. If you're building
-+ a kernel for N900, say Y or M here. If unsure, say N.
-+
- config USB_G_MULTI
- tristate "Multifunction Composite Gadget (EXPERIMENTAL)"
- depends on BLOCK && NET
---- a/drivers/usb/gadget/Makefile
-+++ b/drivers/usb/gadget/Makefile
-@@ -44,6 +44,7 @@
- g_cdc-objs := cdc2.o
- g_multi-objs := multi.o
- g_still_image-objs := still_image.o
-+g_nokia-objs := nokia.o
-
- obj-$(CONFIG_USB_ZERO) += g_zero.o
- obj-$(CONFIG_USB_AUDIO) += g_audio.o
-@@ -57,6 +58,7 @@
- obj-$(CONFIG_USB_CDC_COMPOSITE) += g_cdc.o
- obj-$(CONFIG_USB_G_MULTI) += g_multi.o
- obj-$(CONFIG_USB_STILL_IMAGE) += g_still_image.o
-+obj-$(CONFIG_USB_G_NOKIA) += g_nokia.o
-
- ifeq ($(CONFIG_USB_GADGET_DEBUG),y)
- EXTRA_CFLAGS += -DDMA_PPB_MODE
---- /dev/null
-+++ b/drivers/usb/gadget/nokia.c
-@@ -0,0 +1,259 @@
-+/*
-+ * nokia.c -- Nokia Composite Gadget Driver
-+ *
-+ * Copyright (C) 2008-2010 Nokia Corporation
-+ * Contact: Felipe Balbi <felipe.balbi@nokia.com>
-+ *
-+ * This gadget driver borrows from serial.c which is:
-+ *
-+ * Copyright (C) 2003 Al Borchers (alborchers@steinerpoint.com)
-+ * Copyright (C) 2008 by David Brownell
-+ * Copyright (C) 2008 by Nokia Corporation
-+ *
-+ * This software is distributed under the terms of the GNU General
-+ * Public License ("GPL") as published by the Free Software Foundation,
-+ * version 2 of that License.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/utsname.h>
-+#include <linux/device.h>
-+
-+#include "u_serial.h"
-+#include "u_ether.h"
-+#include "u_phonet.h"
-+#include "gadget_chips.h"
-+
-+/* Defines */
-+
-+#define NOKIA_VERSION_NUM 0x0211
-+#define NOKIA_LONG_NAME "N900 (PC-Suite Mode)"
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * Kbuild is not very cooperative with respect to linking separately
-+ * compiled library objects into one module. So for now we won't use
-+ * separate compilation ... ensuring init/exit sections work to shrink
-+ * the runtime footprint, and giving us at least some parts of what
-+ * a "gcc --combine ... part1.c part2.c part3.c ... " build would.
-+ */
-+#include "composite.c"
-+#include "usbstring.c"
-+#include "config.c"
-+#include "epautoconf.c"
-+
-+#include "u_serial.c"
-+#include "f_acm.c"
-+#include "f_ecm.c"
-+#include "f_obex.c"
-+#include "f_serial.c"
-+#include "f_phonet.c"
-+#include "u_ether.c"
-+
-+/*-------------------------------------------------------------------------*/
-+
-+#define NOKIA_VENDOR_ID 0x0421 /* Nokia */
-+#define NOKIA_PRODUCT_ID 0x01c8 /* Nokia Gadget */
-+
-+/* string IDs are assigned dynamically */
-+
-+#define STRING_MANUFACTURER_IDX 0
-+#define STRING_PRODUCT_IDX 1
-+#define STRING_DESCRIPTION_IDX 2
-+
-+static char manufacturer_nokia[] = "Nokia";
-+static const char product_nokia[] = NOKIA_LONG_NAME;
-+static const char description_nokia[] = "PC-Suite Configuration";
-+
-+static struct usb_string strings_dev[] = {
-+ [STRING_MANUFACTURER_IDX].s = manufacturer_nokia,
-+ [STRING_PRODUCT_IDX].s = NOKIA_LONG_NAME,
-+ [STRING_DESCRIPTION_IDX].s = description_nokia,
-+ { } /* end of list */
-+};
-+
-+static struct usb_gadget_strings stringtab_dev = {
-+ .language = 0x0409, /* en-us */
-+ .strings = strings_dev,
-+};
-+
-+static struct usb_gadget_strings *dev_strings[] = {
-+ &stringtab_dev,
-+ NULL,
-+};
-+
-+static struct usb_device_descriptor device_desc = {
-+ .bLength = USB_DT_DEVICE_SIZE,
-+ .bDescriptorType = USB_DT_DEVICE,
-+ .bcdUSB = __constant_cpu_to_le16(0x0200),
-+ .bDeviceClass = USB_CLASS_COMM,
-+ .idVendor = __constant_cpu_to_le16(NOKIA_VENDOR_ID),
-+ .idProduct = __constant_cpu_to_le16(NOKIA_PRODUCT_ID),
-+ /* .iManufacturer = DYNAMIC */
-+ /* .iProduct = DYNAMIC */
-+ .bNumConfigurations = 1,
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* Module */
-+MODULE_DESCRIPTION("Nokia composite gadget driver for N900");
-+MODULE_AUTHOR("Felipe Balbi");
-+MODULE_LICENSE("GPL");
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static u8 hostaddr[ETH_ALEN];
-+
-+static int __init nokia_bind_config(struct usb_configuration *c)
-+{
-+ int status = 0;
-+
-+ status = phonet_bind_config(c);
-+ if (status)
-+ printk(KERN_DEBUG "could not bind phonet config\n");
-+
-+ status = obex_bind_config(c, 0);
-+ if (status)
-+ printk(KERN_DEBUG "could not bind obex config %d\n", 0);
-+
-+ status = obex_bind_config(c, 1);
-+ if (status)
-+ printk(KERN_DEBUG "could not bind obex config %d\n", 0);
-+
-+ status = acm_bind_config(c, 2);
-+ if (status)
-+ printk(KERN_DEBUG "could not bind acm config\n");
-+
-+ status = ecm_bind_config(c, hostaddr);
-+ if (status)
-+ printk(KERN_DEBUG "could not bind ecm config\n");
-+
-+ return status;
-+}
-+
-+static struct usb_configuration nokia_config_500ma_driver = {
-+ .label = "Bus Powered",
-+ .bind = nokia_bind_config,
-+ .bConfigurationValue = 1,
-+ /* .iConfiguration = DYNAMIC */
-+ .bmAttributes = USB_CONFIG_ATT_ONE,
-+ .bMaxPower = 250, /* 500mA */
-+};
-+
-+static struct usb_configuration nokia_config_100ma_driver = {
-+ .label = "Self Powered",
-+ .bind = nokia_bind_config,
-+ .bConfigurationValue = 2,
-+ /* .iConfiguration = DYNAMIC */
-+ .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER,
-+ .bMaxPower = 50, /* 100 mA */
-+};
-+
-+static int __init nokia_bind(struct usb_composite_dev *cdev)
-+{
-+ int gcnum;
-+ struct usb_gadget *gadget = cdev->gadget;
-+ int status;
-+
-+ status = gphonet_setup(cdev->gadget);
-+ if (status < 0)
-+ goto err_phonet;
-+
-+ status = gserial_setup(cdev->gadget, 3);
-+ if (status < 0)
-+ goto err_serial;
-+
-+ status = gether_setup(cdev->gadget, hostaddr);
-+ if (status < 0)
-+ goto err_ether;
-+
-+ status = usb_string_id(cdev);
-+ if (status < 0)
-+ goto err_usb;
-+ strings_dev[STRING_MANUFACTURER_IDX].id = status;
-+
-+ device_desc.iManufacturer = status;
-+
-+ status = usb_string_id(cdev);
-+ if (status < 0)
-+ goto err_usb;
-+ strings_dev[STRING_PRODUCT_IDX].id = status;
-+
-+ device_desc.iProduct = status;
-+
-+ /* config description */
-+ status = usb_string_id(cdev);
-+ if (status < 0)
-+ goto err_usb;
-+ strings_dev[STRING_DESCRIPTION_IDX].id = status;
-+
-+ nokia_config_500ma_driver.iConfiguration = status;
-+ nokia_config_100ma_driver.iConfiguration = status;
-+
-+ /* set up other descriptors */
-+ gcnum = usb_gadget_controller_number(gadget);
-+ if (gcnum >= 0)
-+ device_desc.bcdDevice = cpu_to_le16(NOKIA_VERSION_NUM);
-+ else {
-+ /* this should only work with hw that supports altsettings
-+ * and several endpoints, anything else, panic.
-+ */
-+ pr_err("nokia_bind: controller '%s' not recognized\n",
-+ gadget->name);
-+ goto err_usb;
-+ }
-+
-+ /* finaly register the configuration */
-+ status = usb_add_config(cdev, &nokia_config_500ma_driver);
-+ if (status < 0)
-+ goto err_usb;
-+
-+ status = usb_add_config(cdev, &nokia_config_100ma_driver);
-+ if (status < 0)
-+ goto err_usb;
-+
-+ dev_info(&gadget->dev, "%s\n", NOKIA_LONG_NAME);
-+
-+ return 0;
-+
-+err_usb:
-+ gether_cleanup();
-+err_ether:
-+ gserial_cleanup();
-+err_serial:
-+ gphonet_cleanup();
-+err_phonet:
-+ return status;
-+}
-+
-+static int __exit nokia_unbind(struct usb_composite_dev *cdev)
-+{
-+ gphonet_cleanup();
-+ gserial_cleanup();
-+ gether_cleanup();
-+
-+ return 0;
-+}
-+
-+static struct usb_composite_driver nokia_driver = {
-+ .name = "g_nokia",
-+ .dev = &device_desc,
-+ .strings = dev_strings,
-+ .bind = nokia_bind,
-+ .unbind = __exit_p(nokia_unbind),
-+};
-+
-+static int __init nokia_init(void)
-+{
-+ return usb_composite_register(&nokia_driver);
-+}
-+module_init(nokia_init);
-+
-+static void __exit nokia_cleanup(void)
-+{
-+ usb_composite_unregister(&nokia_driver);
-+}
-+module_exit(nokia_cleanup);
-+