diff options
author | Jesse Gilles <jgilles@multitech.com> | 2013-02-06 16:28:02 -0600 |
---|---|---|
committer | Jesse Gilles <jgilles@multitech.com> | 2013-02-06 16:28:02 -0600 |
commit | b33041c401b7a9445a0ebfad06165b819f12ca36 (patch) | |
tree | 12d3783331a718e1a3b84b2ee45edbaa4745f44c /multitech/recipes/linux | |
parent | 2c90905f0a6ee951c92353d792142cc7d0716ed0 (diff) | |
parent | 37a410282653ad5c567d23861ebe6afcf7675c5c (diff) |
Merge commit '37a410282653ad5c567d23861ebe6afcf7675c5c'
Diffstat (limited to 'multitech/recipes/linux')
12 files changed, 4481 insertions, 0 deletions
diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-at25.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-at25.patch new file mode 100644 index 0000000..3aa9096 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-at25.patch @@ -0,0 +1,37 @@ +diff -uprN -X linux-2.6.32.3/Documentation/dontdiff linux-2.6.32.3-vanilla/drivers/misc/eeprom/at25.c linux-2.6.32.3/drivers/misc/eeprom/at25.c +--- linux-2.6.32.3-vanilla/drivers/misc/eeprom/at25.c 2010-01-06 17:07:45.000000000 -0600 ++++ linux-2.6.32.3/drivers/misc/eeprom/at25.c 2010-10-27 11:05:36.000000000 -0500 +@@ -147,6 +147,7 @@ at25_ee_write(struct at25_data *at25, co + unsigned written = 0; + unsigned buf_size; + u8 *bounce; ++ int a8; + + if (unlikely(off >= at25->bin.size)) + return -EFBIG; +@@ -163,6 +164,11 @@ at25_ee_write(struct at25_data *at25, co + if (!bounce) + return -ENOMEM; + ++ if (!strcmp(at25->chip.name, "at25040b")) ++ a8 = 1; ++ else ++ a8 = 0; ++ + /* For write, rollover is within the page ... so we write at + * most one page, then manually roll over to the next page. + */ +@@ -183,6 +189,13 @@ at25_ee_write(struct at25_data *at25, co + break; + } + ++ if (a8) { ++ if (offset & BIT(8)) ++ bounce[0] |= BIT(3); ++ else ++ bounce[0] &= ~BIT(3); ++ } ++ + /* 8/16/24-bit address is written MSB first */ + switch (at25->addrlen) { + default: /* case 3 */ diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-atmel_spi.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-atmel_spi.patch new file mode 100644 index 0000000..a7b87b3 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-atmel_spi.patch @@ -0,0 +1,12 @@ +diff -uprN -X linux-2.6.32.3/Documentation/dontdiff linux-2.6.32.3-vanilla/drivers/spi/atmel_spi.c linux-2.6.32.3/drivers/spi/atmel_spi.c +--- linux-2.6.32.3-vanilla/drivers/spi/atmel_spi.c 2010-01-06 17:07:45.000000000 -0600 ++++ linux-2.6.32.3/drivers/spi/atmel_spi.c 2010-09-08 13:38:52.000000000 -0500 +@@ -768,7 +768,7 @@ static int __init atmel_spi_probe(struct + master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; + + master->bus_num = pdev->id; +- master->num_chipselect = 4; ++ master->num_chipselect = 7; + master->setup = atmel_spi_setup; + master->transfer = atmel_spi_transfer; + master->cleanup = atmel_spi_cleanup; diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-option-telit.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-option-telit.patch new file mode 100644 index 0000000..db0283d --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-option-telit.patch @@ -0,0 +1,23 @@ +diff linux-2.6.32.3.orig/drivers/usb/serial/option.c linux-2.6.32.3/drivers/usb/serial/option.c +--- linux-2.6.32.3.orig/drivers/usb/serial/option.c ++++ linux-2.6.32.3/drivers/usb/serial/option.c +@@ -293,6 +293,9 @@ static int option_resume(struct usb_serial *serial); + #define TELIT_VENDOR_ID 0x1bc7 + #define TELIT_PRODUCT_UC864E 0x1003 + #define TELIT_PRODUCT_UC864G 0x1004 ++#define TELIT_PRODUCT_CC864_DUAL 0x1005 ++#define TELIT_PRODUCT_CC864_SINGLE 0x1006 ++#define TELIT_PRODUCT_DE910_DUAL 0x1010 + + /* ZTE PRODUCTS */ + #define ZTE_VENDOR_ID 0x19d2 +@@ -523,6 +526,9 @@ static struct usb_device_id option_ids[] = { + { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) }, ++ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) }, ++ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) }, ++ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0003, 0xff, 0xff, 0xff) }, diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-at91-gpio-pullup.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-at91-gpio-pullup.patch new file mode 100644 index 0000000..d967838 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-at91-gpio-pullup.patch @@ -0,0 +1,43 @@ +Index: linux-2.6.35/arch/arm/mach-at91/gpio.c +=================================================================== +--- linux-2.6.35.orig/arch/arm/mach-at91/gpio.c 2011-09-27 14:36:06.587267689 -0500 ++++ linux-2.6.35/arch/arm/mach-at91/gpio.c 2011-09-27 14:42:50.997576753 -0500 +@@ -202,6 +202,26 @@ + } + EXPORT_SYMBOL(at91_set_gpio_output); + ++/* ++ * configure pin for output and enable/disable pullup ++ */ ++int __init_or_module at91_set_gpio_output_with_pullup(unsigned pin, int value, int use_pullup) ++{ ++ void __iomem *pio = pin_to_controller(pin); ++ unsigned mask = pin_to_mask(pin); ++ ++ if (!pio) ++ return -EINVAL; ++ ++ __raw_writel(mask, pio + PIO_IDR); ++ __raw_writel(mask, pio + (use_pullup ? PIO_PUER : PIO_PUDR)); ++ __raw_writel(mask, pio + (value ? PIO_SODR : PIO_CODR)); ++ __raw_writel(mask, pio + PIO_OER); ++ __raw_writel(mask, pio + PIO_PER); ++ return 0; ++} ++EXPORT_SYMBOL(at91_set_gpio_output_with_pullup); ++ + + /* + * enable/disable the glitch filter; mostly used with IRQ handling. +Index: linux-2.6.35/arch/arm/mach-at91/include/mach/gpio.h +=================================================================== +--- linux-2.6.35.orig/arch/arm/mach-at91/include/mach/gpio.h ++++ linux-2.6.35/arch/arm/mach-at91/include/mach/gpio.h +@@ -194,6 +194,7 @@ extern int __init_or_module at91_set_A_p + extern int __init_or_module at91_set_B_periph(unsigned pin, int use_pullup); + extern int __init_or_module at91_set_gpio_input(unsigned pin, int use_pullup); + extern int __init_or_module at91_set_gpio_output(unsigned pin, int value); ++extern int __init_or_module at91_set_gpio_output_with_pullup(unsigned pin, int value, int use_pullup); + extern int __init_or_module at91_set_deglitch(unsigned pin, int is_on); + extern int __init_or_module at91_set_multi_drive(unsigned pin, int is_on); + diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-option-zte.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-option-zte.patch new file mode 100644 index 0000000..776c7ee --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-option-zte.patch @@ -0,0 +1,12 @@ +Index: linux-2.6.35/drivers/usb/serial/option.c +=================================================================== +--- linux-2.6.35.orig/drivers/usb/serial/option.c ++++ linux-2.6.35/drivers/usb/serial/option.c +@@ -889,6 +889,7 @@ static const struct usb_device_id option + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xffe8, 0xff, 0xff, 0xff) }, // MC2718 + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.38-sierra-1.7.40.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.38-sierra-1.7.40.patch new file mode 100644 index 0000000..6e55adf --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.38-sierra-1.7.40.patch @@ -0,0 +1,1556 @@ +Index: linux-2.6.39.4/drivers/net/usb/sierra_net.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/net/usb/sierra_net.c 2012-02-27 15:37:27.810465204 -0600 ++++ linux-2.6.39.4/drivers/net/usb/sierra_net.c 2011-09-22 17:05:46.000000000 -0500 +@@ -1,7 +1,7 @@ + /* + * USB-to-WWAN Driver for Sierra Wireless modems + * +- * Copyright (C) 2008, 2009, 2010 Paxton Smith, Matthew Safar, Rory Filer ++ * Copyright (C) 2008 - 2011 Paxton Smith, Matthew Safar, Rory Filer + * <linux@sierrawireless.com> + * + * Portions of this based on the cdc_ether driver by David Brownell (2003-2005) +@@ -25,13 +25,17 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-#define DRIVER_VERSION "v.2.0" ++#define DRIVER_VERSION "v.3.2" + #define DRIVER_AUTHOR "Paxton Smith, Matthew Safar, Rory Filer" + #define DRIVER_DESC "USB-to-WWAN Driver for Sierra Wireless modems" + static const char driver_name[] = "sierra_net"; + + /* if defined debug messages enabled */ + /*#define DEBUG*/ ++/* more debug messages */ ++/*#define VERBOSE*/ ++/* Uncomment to force power level set to auto when attaching a device */ ++/*#define POWER_LEVEL_AUTO*/ + + #include <linux/module.h> + #include <linux/etherdevice.h> +@@ -48,6 +52,7 @@ + + #define SWI_USB_REQUEST_GET_FW_ATTR 0x06 + #define SWI_GET_FW_ATTR_MASK 0x08 ++#define SWI_GET_FW_ATTR_APM 0x2 + + /* atomic counter partially included in MAC address to make sure 2 devices + * do not end up with the same MAC - concept breaks in case of > 255 ifaces +@@ -68,6 +73,11 @@ + */ + #define SIERRA_NET_USBCTL_BUF_LEN 1024 + ++/* The SIERRA_NET_RX_URB_SZ defines the receive urb size ++ * for optimal throughput. ++ */ ++#define SIERRA_NET_RX_URB_SZ 1540 ++ + /* list of interface numbers - used for constructing interface lists */ + struct sierra_net_iface_info { + const u32 infolen; /* number of interface numbers on list */ +@@ -139,6 +149,7 @@ + #define SIERRA_NET_SESSION_IDLE 0x00 + /* LSI Link types */ + #define SIERRA_NET_AS_LINK_TYPE_IPv4 0x00 ++#define SIERRA_NET_AS_LINK_TYPE_IPv6 0x02 + + struct lsi_umts { + u8 protocol; +@@ -200,10 +211,11 @@ + dev->data[0] = (unsigned long)priv; + } + +-/* is packet IPv4 */ ++/* is packet IP */ + static inline int is_ip(struct sk_buff *skb) + { +- return skb->protocol == cpu_to_be16(ETH_P_IP); ++ return ((skb->protocol == cpu_to_be16(ETH_P_IP)) || ++ (skb->protocol == cpu_to_be16(ETH_P_IPV6))); + } + + /* +@@ -312,6 +324,24 @@ + /*----------------------------------------------------------------------------* + * END HIP * + *----------------------------------------------------------------------------*/ ++/* This should come out before going to kernel.org */ ++static void sierra_net_printk_buf(u8 *buf, u16 len) ++{ ++#ifdef VERBOSE ++ u16 i; ++ u16 k; ++ ++ for (i = k = 0; i < len / 4; i++, k += 4) { ++ printk(KERN_DEBUG "%02x%02x%02x%02x ", ++ buf[k+0], buf[k+1], buf[k+2], buf[k+3]); ++ } ++ ++ for (; k < len; k++) ++ printk(KERN_DEBUG "%02x", buf[k]); ++ ++ printk("\n"); ++#endif ++} + + static int sierra_net_send_cmd(struct usbnet *dev, + u8 *cmd, int cmdlen, const char * cmd_name) +@@ -319,10 +349,12 @@ + struct sierra_net_data *priv = sierra_net_get_private(dev); + int status; + ++ usb_autopm_get_interface(dev->intf); + status = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0), + USB_CDC_SEND_ENCAPSULATED_COMMAND, + USB_DIR_OUT|USB_TYPE_CLASS|USB_RECIP_INTERFACE, 0, + priv->ifnum, cmd, cmdlen, USB_CTRL_SET_TIMEOUT); ++ usb_autopm_put_interface(dev->intf); + + if (status != cmdlen && status != -ENODEV) + netdev_err(dev->net, "Submit %s failed %d\n", cmd_name, status); +@@ -339,8 +371,17 @@ + + status = sierra_net_send_cmd(dev, priv->sync_msg, + sizeof(priv->sync_msg), "SYNC"); ++ return status; ++} + +- return status; ++static void sierra_net_send_shutdown(struct usbnet *dev) ++{ ++ struct sierra_net_data *priv = sierra_net_get_private(dev); ++ ++ dev_dbg(&dev->udev->dev, "%s", __func__); ++ ++ sierra_net_send_cmd(dev, priv->shdwn_msg, ++ sizeof(priv->shdwn_msg), "Shutdown"); + } + + static void sierra_net_set_ctx_index(struct sierra_net_data *priv, u8 ctx_ix) +@@ -354,7 +395,7 @@ + + static inline int sierra_net_is_valid_addrlen(u8 len) + { +- return len == sizeof(struct in_addr); ++ return (len == sizeof(struct in_addr)); + } + + static int sierra_net_parse_lsi(struct usbnet *dev, char *data, int datalen) +@@ -383,10 +424,11 @@ + } + + /* Validate the link type */ +- if (lsi->link_type != SIERRA_NET_AS_LINK_TYPE_IPv4) { +- netdev_err(dev->net, "Link type unsupported: 0x%02x\n", ++ if ((lsi->link_type != SIERRA_NET_AS_LINK_TYPE_IPv4) && ++ (lsi->link_type != SIERRA_NET_AS_LINK_TYPE_IPv6)) { ++ netdev_err(dev->net, "Link unavailable: 0x%02x", + lsi->link_type); +- return -1; ++ return 0; + } + + /* Validate the coverage */ +@@ -474,13 +516,15 @@ + return; + } + ifnum = priv->ifnum; ++ usb_autopm_get_interface(dev->intf); + len = usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0), + USB_CDC_GET_ENCAPSULATED_RESPONSE, + USB_DIR_IN|USB_TYPE_CLASS|USB_RECIP_INTERFACE, + 0, ifnum, buf, SIERRA_NET_USBCTL_BUF_LEN, + USB_CTRL_SET_TIMEOUT); ++ usb_autopm_put_interface(dev->intf); + +- if (len < 0) { ++ if (unlikely(len < 0)) { + netdev_err(dev->net, + "usb_control_msg failed, status %d\n", len); + } else { +@@ -488,6 +532,7 @@ + + dev_dbg(&dev->udev->dev, "%s: Received status message," + " %04x bytes", __func__, len); ++ sierra_net_printk_buf(buf, len); + + err = parse_hip(buf, len, &hh); + if (err) { +@@ -534,7 +579,10 @@ + "extmsgid 0x%04x\n", hh.extmsgid.word); + break; + case SIERRA_NET_HIP_RCGI: +- /* Ignored */ ++ /* Ignored. It is a firmware ++ * workaround to solve a Windows driver bug and ++ * may be removed in the future. ++ */ + break; + default: + netdev_err(dev->net, "Unrecognized HIP msg, " +@@ -561,7 +609,10 @@ + struct sierra_net_data *priv = sierra_net_get_private(dev); + + set_bit(work, &priv->kevent_flags); +- schedule_work(&priv->sierra_net_kevent); ++ if (!schedule_work(&priv->sierra_net_kevent)) ++ dev_dbg(&dev->udev->dev, "sierra_net_kevent %d may have been dropped", work); ++ else ++ dev_dbg(&dev->udev->dev, "sierra_net_kevent %d scheduled", work); + } + + /* +@@ -581,6 +632,7 @@ + struct usb_cdc_notification *event; + + dev_dbg(&dev->udev->dev, "%s", __func__); ++ sierra_net_printk_buf(urb->transfer_buffer, urb->actual_length); + + if (urb->actual_length < sizeof *event) + return; +@@ -661,6 +713,7 @@ + if (!attrdata) + return -ENOMEM; + ++ usb_autopm_get_interface(dev->intf); + result = usb_control_msg( + dev->udev, + usb_rcvctrlpipe(dev->udev, 0), +@@ -672,6 +725,7 @@ + attrdata, /* char *data */ + sizeof(*attrdata), /* __u16 size */ + USB_CTRL_SET_TIMEOUT); /* int timeout */ ++ usb_autopm_put_interface(dev->intf); + + if (result < 0) { + kfree(attrdata); +@@ -684,6 +738,12 @@ + return result; + } + ++static int sierra_net_manage_power(struct usbnet *dev, int on) ++{ ++ dev->intf->needs_remote_wakeup = on; ++ return 0; ++} ++ + /* + * collects the bulk endpoints, the status endpoint. + */ +@@ -735,6 +795,10 @@ + + priv->usbnet = dev; + priv->ifnum = ifacenum; ++ /* override change_mtu with our own routine - need to bound check */ ++ /* replace structure to our own structure where we have our own ++ * routine - need to bound check ++ */ + dev->net->netdev_ops = &sierra_net_device_ops; + + /* change MAC addr to include, ifacenum, and to be unique */ +@@ -761,6 +825,7 @@ + + /* Set up the netdev */ + dev->net->flags |= IFF_NOARP; ++ dev->net->flags |= IFF_MULTICAST; + dev->net->ethtool_ops = &sierra_net_ethtool_ops; + netif_carrier_off(dev->net); + +@@ -773,11 +838,23 @@ + + /* Only need to do this once */ + init_timer(&priv->sync_timer); +- + /* verify fw attributes */ + status = sierra_net_get_fw_attr(dev, &fwattr); +- dev_dbg(&dev->udev->dev, "Fw attr: %x\n", fwattr); +- ++ dev_dbg(&dev->udev->dev, "Fw attr: %x\n", fwattr); ++ if (status == sizeof(fwattr) && (fwattr & SWI_GET_FW_ATTR_APM)) { ++/******************************************************************************* ++ * If you want the default /sys/bus/usb/devices/.../.../power/level to be forced ++ * to auto, the following needs to be compiled in. ++ */ ++#ifdef POWER_LEVEL_AUTO ++ /* make power level default be 'auto' */ ++ dev_dbg(&dev->udev->dev, "Enabling APM"); ++ usb_enable_autosuspend(dev->udev); ++#endif ++ } else { ++ dev_info(&intf->dev, "Disabling APM - not supported"); ++ usb_disable_autosuspend(dev->udev); ++ } + /* test whether firmware supports DHCP */ + if (!(status == sizeof(fwattr) && (fwattr & SWI_GET_FW_ATTR_MASK))) { + /* found incompatible firmware version */ +@@ -789,33 +866,45 @@ + /* prepare sync message from template */ + memcpy(priv->sync_msg, sync_tmplate, sizeof(priv->sync_msg)); + ++ return 0; ++} ++ ++static void sierra_net_unbind(struct usbnet *dev, struct usb_interface *intf) ++{ ++ struct sierra_net_data *priv = sierra_net_get_private(dev); ++ ++ dev_dbg(&dev->udev->dev, "%s", __func__); ++ ++ sierra_net_set_private(dev, NULL); ++ ++ kfree(priv); ++} ++ ++static int sierra_net_open(struct usbnet *dev) ++{ ++ dev_dbg(&dev->udev->dev, "%s", __func__); ++ + /* initiate the sync sequence */ + sierra_net_dosync(dev); + + return 0; + } + +-static void sierra_net_unbind(struct usbnet *dev, struct usb_interface *intf) ++static int sierra_net_stop(struct usbnet *dev) + { +- int status; + struct sierra_net_data *priv = sierra_net_get_private(dev); + + dev_dbg(&dev->udev->dev, "%s", __func__); + +- /* kill the timer and work */ ++ /* Kill the timer then flush the work queue */ + del_timer_sync(&priv->sync_timer); ++ + cancel_work_sync(&priv->sierra_net_kevent); + + /* tell modem we are going away */ +- status = sierra_net_send_cmd(dev, priv->shdwn_msg, +- sizeof(priv->shdwn_msg), "Shutdown"); +- if (status < 0) +- netdev_err(dev->net, +- "usb_control_msg failed, status %d\n", status); +- +- sierra_net_set_private(dev, NULL); ++ sierra_net_send_shutdown(dev); + +- kfree(priv); ++ return 0; + } + + static struct sk_buff *sierra_net_skb_clone(struct usbnet *dev, +@@ -847,9 +936,13 @@ + int err; + struct hip_hdr hh; + struct sk_buff *new_skb; ++ struct ethhdr *eth; ++ struct iphdr *ip; + + dev_dbg(&dev->udev->dev, "%s", __func__); + ++ sierra_net_printk_buf(skb->data, skb->len); ++ + /* could contain multiple packets */ + while (likely(skb->len)) { + err = parse_hip(skb->data, skb->len, &hh); +@@ -879,6 +972,12 @@ + memcpy(skb->data, sierra_net_get_private(dev)->ethr_hdr_tmpl, + ETH_HLEN); + ++ ip = (struct iphdr *)((char *)skb->data + ETH_HLEN); ++ if(ip->version == 6) { ++ eth = (struct ethhdr *)skb->data; ++ eth->h_proto = cpu_to_be16(ETH_P_IPV6); ++ } ++ + /* Last packet in batch handled by usbnet */ + if (hh.payload_len.word == skb->len) + return 1; +@@ -923,6 +1022,8 @@ + } + } + build_hip(skb->data, len, priv); ++ ++ sierra_net_printk_buf(skb->data, skb->len); + return skb; + } else { + /* +@@ -942,16 +1043,24 @@ + return NULL; + } + ++static int sierra_net_reset_resume(struct usb_interface *intf) ++{ ++ struct usbnet *dev = usb_get_intfdata(intf); ++ netdev_err(dev->net, "%s\n", __func__); ++ return usbnet_resume(intf); ++} ++ + static const u8 sierra_net_ifnum_list[] = { 7, 10, 11 }; +-static const struct sierra_net_info_data sierra_net_info_data_68A3 = { +- .rx_urb_size = 8 * 1024, ++static const struct sierra_net_info_data sierra_net_info_data_direct_ip = { ++ /* .rx_urb_size = 8 * 1024, */ ++ .rx_urb_size = SIERRA_NET_RX_URB_SZ, + .whitelist = { + .infolen = ARRAY_SIZE(sierra_net_ifnum_list), + .ifaceinfo = sierra_net_ifnum_list + } + }; + +-static const struct driver_info sierra_net_info_68A3 = { ++static const struct driver_info sierra_net_info_direct_ip = { + .description = "Sierra Wireless USB-to-WWAN Modem", + .flags = FLAG_WWAN | FLAG_SEND_ZLP, + .bind = sierra_net_bind, +@@ -959,12 +1068,21 @@ + .status = sierra_net_status, + .rx_fixup = sierra_net_rx_fixup, + .tx_fixup = sierra_net_tx_fixup, +- .data = (unsigned long)&sierra_net_info_data_68A3, ++ .manage_power = sierra_net_manage_power, ++ .stop = sierra_net_stop, ++ .check_connect = sierra_net_open, ++ .data = (unsigned long)&sierra_net_info_data_direct_ip, + }; + + static const struct usb_device_id products[] = { +- {USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless USB-to-WWAN modem */ +- .driver_info = (unsigned long) &sierra_net_info_68A3}, ++ {USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modem */ ++ .driver_info = (unsigned long) &sierra_net_info_direct_ip}, ++ {USB_DEVICE(0xF3D, 0x68A3), /* AT&T Direct IP modem */ ++ .driver_info = (unsigned long) &sierra_net_info_direct_ip}, ++ {USB_DEVICE(0x1199, 0x68AA), /* Sierra Wireless Direct IP LTE modem */ ++ .driver_info = (unsigned long) &sierra_net_info_direct_ip}, ++ {USB_DEVICE(0xF3D, 0x68AA), /* AT&T Direct IP LTE modem */ ++ .driver_info = (unsigned long) &sierra_net_info_direct_ip}, + + {}, /* last item */ + }; +@@ -978,7 +1096,9 @@ + .disconnect = usbnet_disconnect, + .suspend = usbnet_suspend, + .resume = usbnet_resume, ++ .reset_resume = sierra_net_reset_resume, + .no_dynamic_id = 1, ++ .supports_autosuspend = 1, + }; + + static int __init sierra_net_init(void) +Index: linux-2.6.39.4/drivers/usb/serial/sierra.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/usb/serial/sierra.c 2012-02-27 15:38:01.519215085 -0600 ++++ linux-2.6.39.4/drivers/usb/serial/sierra.c 2011-09-22 17:05:46.000000000 -0500 +@@ -3,7 +3,7 @@ + + Copyright (C) 2006, 2007, 2008 Kevin Lloyd <klloyd@sierrawireless.com>, + +- Copyright (C) 2008, 2009 Elina Pasheva, Matthew Safar, Rory Filer ++ Copyright (C) 2008 - 2011 Elina Pasheva, Matthew Safar, Rory Filer + <linux@sierrawireless.com> + + IMPORTANT DISCLAIMER: This driver is not commercially supported by +@@ -17,8 +17,12 @@ + Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org> + */ + /* Uncomment to log function calls */ +-/* #define DEBUG */ +-#define DRIVER_VERSION "v.1.7.16" ++/*#define DEBUG*/ ++/* Uncomment to force power level set to auto when attaching a device */ ++/*#define POWER_LEVEL_AUTO*/ ++ ++/* Sierra driver - kernel 2.6.38 */ ++#define DRIVER_VERSION "v.1.7.40" + #define DRIVER_AUTHOR "Kevin Lloyd, Elina Pasheva, Matthew Safar, Rory Filer" + #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" + +@@ -31,9 +35,13 @@ + #include <linux/module.h> + #include <linux/usb.h> + #include <linux/usb/serial.h> ++#include <asm/unaligned.h> + + #define SWIMS_USB_REQUEST_SetPower 0x00 ++#define SWIMS_USB_REQUEST_GetFwAttr 0x06 + #define SWIMS_USB_REQUEST_SetNmea 0x07 ++#define USB_REQUEST_TYPE_CLASS 0xA1 ++#define USB_REQUEST_IFACE 0x20 + + #define N_IN_URB_HM 8 + #define N_OUT_URB_HM 64 +@@ -46,19 +54,47 @@ + allocations > PAGE_SIZE and the number of packets in a page + is an integer 512 is the largest possible packet on EHCI */ + ++#define SWI_FW_ATTR_PM_MASK 0x02 ++/* PORTION_LEN defines the length of device attribute buffer */ ++#define PORTION_LEN 4096 ++ + static int debug; + static int nmea; + ++/* sysfs attributes */ ++static int sierra_create_sysfs_attrs(struct usb_serial_port *port); ++static int sierra_remove_sysfs_attrs(struct usb_serial_port *port); ++ + /* Used in interface blacklisting */ + struct sierra_iface_info { + const u32 infolen; /* number of interface numbers on blacklist */ + const u8 *ifaceinfo; /* pointer to the array holding the numbers */ + }; + ++/* per interface statistics */ ++struct sierra_intf_stats { ++ atomic_t rx_bytes; /* received bytes */ ++ atomic_t indat_cb_cnt; /* indat callback count */ ++ atomic_t indat_cb_fail; /* indat cb with error */ ++ ++ atomic_t tx_bytes; /* transmitted bytes */ ++ atomic_t write_cnt; /* no. of writes */ ++ atomic_t write_err; /* no. of failed writes */ ++ ++ atomic_t delayed_writes; /* no. of delayed writes */ ++ atomic_t delayed_write_err; /* no. of delayed write errs */ ++ ++ atomic_t outdat_cb_cnt; /* outdat callback count */ ++ atomic_t outdat_cb_fail; /* outdat cb with error */ ++ ++}; ++ + struct sierra_intf_private { + spinlock_t susp_lock; + unsigned int suspended:1; + int in_flight; ++ ++ struct sierra_intf_stats stats; + }; + + static int sierra_set_power_state(struct usb_device *udev, __u16 swiState) +@@ -91,6 +127,38 @@ + return result; + } + ++static int sierra_get_fw_attr(struct usb_device *udev, u16 *data) ++{ ++ int result; ++ u16 *attrdata; ++ ++ dev_dbg(&udev->dev, "%s\n", __func__); ++ ++ attrdata = kmalloc(sizeof(*attrdata), GFP_KERNEL); ++ if (!attrdata) ++ return -ENOMEM; ++ ++ result = usb_control_msg(udev, ++ usb_rcvctrlpipe(udev, 0), ++ SWIMS_USB_REQUEST_GetFwAttr, /* __u8 request*/ ++ USB_TYPE_VENDOR | USB_DIR_IN, /* request type*/ ++ 0x0000, /* __u16 value */ ++ 0x0000, /* __u16 index */ ++ attrdata, /* void *data */ ++ sizeof(*attrdata), /* _u16 size */ ++ USB_CTRL_SET_TIMEOUT); /* in timeout */ ++ ++ if (result < 0) { ++ kfree(attrdata); ++ return -EIO; ++ } ++ ++ *data = *attrdata; ++ ++ kfree(attrdata); ++ return result; ++} ++ + static int sierra_calc_num_ports(struct usb_serial *serial) + { + int num_ports = 0; +@@ -150,7 +218,6 @@ + int interface; + struct usb_interface *p_interface; + struct usb_host_interface *p_host_interface; +- dev_dbg(&serial->dev->dev, "%s\n", __func__); + + /* Get the interface structure pointer from the serial struct */ + p_interface = serial->interface; +@@ -159,8 +226,7 @@ + p_host_interface = p_interface->cur_altsetting; + + /* read the interface descriptor for this active altsetting +- * to find out the interface number we are on +- */ ++ * to find out the interface number we are on */ + interface = p_host_interface->desc.bInterfaceNumber; + + return interface; +@@ -171,7 +237,7 @@ + { + int result = 0; + struct usb_device *udev; +- struct sierra_intf_private *data; ++ struct sierra_intf_private *intfdata; + u8 ifnum; + + udev = serial->dev; +@@ -185,7 +251,9 @@ + if (serial->interface->num_altsetting == 2) { + dev_dbg(&udev->dev, "Selecting alt setting for interface %d\n", + ifnum); +- /* We know the alternate setting is 1 for the MC8785 */ ++ /* We know the alternate setting is for composite USB interface ++ * modems ++ */ + usb_set_interface(udev, ifnum, 1); + } + +@@ -199,10 +267,11 @@ + return -ENODEV; + } + +- data = serial->private = kzalloc(sizeof(struct sierra_intf_private), GFP_KERNEL); +- if (!data) ++ intfdata = serial->private = kzalloc(sizeof(struct sierra_intf_private), ++ GFP_KERNEL); ++ if (!intfdata) + return -ENOMEM; +- spin_lock_init(&data->susp_lock); ++ spin_lock_init(&intfdata->susp_lock); + + return result; + } +@@ -223,15 +292,15 @@ + /* 'blacklist' of interfaces not served by this driver */ + static const u8 direct_ip_non_serial_ifaces[] = { 7, 8, 9, 10, 11 }; + static const struct sierra_iface_info direct_ip_interface_blacklist = { +- .infolen = ARRAY_SIZE(direct_ip_non_serial_ifaces), ++ .infolen = ARRAY_SIZE( direct_ip_non_serial_ifaces ), + .ifaceinfo = direct_ip_non_serial_ifaces, + }; + +-static const struct usb_device_id id_table[] = { ++static const struct usb_device_id id_table [] = { + { USB_DEVICE(0x0F3D, 0x0112) }, /* Airprime/Sierra PC 5220 */ + { USB_DEVICE(0x03F0, 0x1B1D) }, /* HP ev2200 a.k.a MC5720 */ +- { USB_DEVICE(0x03F0, 0x211D) }, /* HP ev2210 a.k.a MC5725 */ + { USB_DEVICE(0x03F0, 0x1E1D) }, /* HP hs2300 a.k.a MC8775 */ ++ { USB_DEVICE(0x03F0, 0x211D) }, /* HP ev2210 a.k.a MC5725 */ + + { USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */ + { USB_DEVICE(0x1199, 0x0018) }, /* Sierra Wireless MC5720 */ +@@ -245,7 +314,10 @@ + { USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E */ + { USB_DEVICE(0x1199, 0x0112) }, /* Sierra Wireless AirCard 580 */ + { USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle 595U */ +- { USB_DEVICE(0x1199, 0x0301) }, /* Sierra Wireless USB Dongle 250U */ ++ { USB_DEVICE(0x1199, 0x0301) }, /* Sierra Wireless USB Dongle 250U/3G */ ++ /* Sierra Wireless MC5728 */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x0400, 0xFF, 0xFF, 0xFF) }, ++ + /* Sierra Wireless C597 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x0023, 0xFF, 0xFF, 0xFF) }, + /* Sierra Wireless T598 */ +@@ -253,7 +325,7 @@ + { USB_DEVICE(0x1199, 0x0026) }, /* Sierra Wireless T11 */ + { USB_DEVICE(0x1199, 0x0027) }, /* Sierra Wireless AC402 */ + { USB_DEVICE(0x1199, 0x0028) }, /* Sierra Wireless MC5728 */ +- { USB_DEVICE(0x1199, 0x0029) }, /* Sierra Wireless Device */ ++ { USB_DEVICE(0x114F, 0x6000) }, /* Sierra Wireless Q26 Elite */ + + { USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */ + { USB_DEVICE(0x1199, 0x6803) }, /* Sierra Wireless MC8765 */ +@@ -277,7 +349,7 @@ + { USB_DEVICE(0x1199, 0x683A) }, /* Sierra Wireless MC8785 */ + { USB_DEVICE(0x1199, 0x683B) }, /* Sierra Wireless MC8785 Composite */ + /* Sierra Wireless MC8790, MC8791, MC8792 Composite */ +- { USB_DEVICE(0x1199, 0x683C) }, ++ { USB_DEVICE(0x1199, 0x683C) }, + { USB_DEVICE(0x1199, 0x683D) }, /* Sierra Wireless MC8791 Composite */ + /* Sierra Wireless MC8790, MC8791, MC8792 */ + { USB_DEVICE(0x1199, 0x683E) }, +@@ -298,22 +370,34 @@ + /* Sierra Wireless HSPA Non-Composite Device */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6892, 0xFF, 0xFF, 0xFF)}, + { USB_DEVICE(0x1199, 0x6893) }, /* Sierra Wireless Device */ +- { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */ +- .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist ++ /* Sierra Wireless Direct IP modems */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x68A3, 0xFF, 0xFF, 0xFF), ++ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist + }, +- { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */ +- .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist ++ /* AT&T Direct IP modems */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68A3, 0xFF, 0xFF, 0xFF), ++ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist + }, +- { USB_DEVICE(0x413C, 0x08133) }, /* Dell Computer Corp. Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port */ ++ /* Sierra Wireless Direct IP LTE modems */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x68AA, 0xFF, 0xFF, 0xFF), ++ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist ++ }, ++ /* AT&T Direct IP LTE modems */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68AA, 0xFF, 0xFF, 0xFF), ++ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist ++ }, ++ /* Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port */ ++ { USB_DEVICE(0x413C, 0x8133) }, + + { } + }; + MODULE_DEVICE_TABLE(usb, id_table); + +- ++/* per port private data */ + struct sierra_port_private { + spinlock_t lock; /* lock the structure */ + int outstanding_urbs; /* number of out urbs in flight */ ++ + struct usb_anchor active; + struct usb_anchor delayed; + +@@ -335,7 +419,7 @@ + static int sierra_send_setup(struct usb_serial_port *port) + { + struct usb_serial *serial = port->serial; +- struct sierra_port_private *portdata; ++ struct sierra_port_private *portdata = usb_get_serial_port_data(port); + __u16 interface = 0; + int val = 0; + int do_send = 0; +@@ -343,8 +427,6 @@ + + dev_dbg(&port->dev, "%s\n", __func__); + +- portdata = usb_get_serial_port_data(port); +- + if (portdata->dtr_state) + val |= 0x01; + if (portdata->rts_state) +@@ -376,10 +458,7 @@ + if (!do_send) + return 0; + +- retval = usb_autopm_get_interface(serial->interface); +- if (retval < 0) +- return retval; +- ++ usb_autopm_get_interface(serial->interface); + retval = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), + 0x22, 0x21, val, interface, NULL, 0, USB_CTRL_SET_TIMEOUT); + usb_autopm_put_interface(serial->interface); +@@ -395,7 +474,7 @@ + sierra_send_setup(port); + } + +-static int sierra_tiocmget(struct tty_struct *tty) ++static int sierra_tiocmget(struct tty_struct *tty, struct file *file) + { + struct usb_serial_port *port = tty->driver_data; + unsigned int value; +@@ -414,7 +493,7 @@ + return value; + } + +-static int sierra_tiocmset(struct tty_struct *tty, ++static int sierra_tiocmset(struct tty_struct *tty, struct file *file, + unsigned int set, unsigned int clear) + { + struct usb_serial_port *port = tty->driver_data; +@@ -440,11 +519,77 @@ + if (urb) { + port = urb->context; + dev_dbg(&port->dev, "%s: %p\n", __func__, urb); +- kfree(urb->transfer_buffer); + usb_free_urb(urb); + } + } + ++/* Sysfs Attributes */ ++ ++static ssize_t show_suspend_status(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct usb_serial_port *port; ++ struct sierra_port_private *portdata; ++ struct sierra_intf_private *intfdata; ++ unsigned long flags; ++ unsigned int flag_suspended = 0; ++ ++ port = to_usb_serial_port(dev); ++ portdata = usb_get_serial_port_data(port); ++ intfdata = port->serial->private; ++ ++ spin_lock_irqsave(&intfdata->susp_lock, flags); ++ flag_suspended = intfdata->suspended; ++ spin_unlock_irqrestore(&intfdata->susp_lock, flags); ++ ++ return snprintf(buf, PORTION_LEN, "%i\n", flag_suspended); ++} ++ ++static ssize_t show_stats(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct usb_serial_port *port; ++ struct sierra_intf_private *intfdata; ++ ++ port = to_usb_serial_port(dev); ++ intfdata = port->serial->private; ++ ++ return snprintf(buf, PORTION_LEN, ++ "rx: %i B\tindat: %i\tindat err: %i\n" ++ "tx: %i B\toutdat: %i\toutdat err: %i\n" ++ "writes: %i\t\twrite err: %i\n" ++ "delayed writes: %i\tdelayed write err: %i\n", ++ atomic_read(&intfdata->stats.rx_bytes), atomic_read(&intfdata->stats.indat_cb_cnt), atomic_read(&intfdata->stats.indat_cb_fail), ++ atomic_read(&intfdata->stats.tx_bytes), atomic_read(&intfdata->stats.outdat_cb_cnt), atomic_read(&intfdata->stats.outdat_cb_fail), ++ atomic_read(&intfdata->stats.write_cnt), atomic_read(&intfdata->stats.write_err), ++ atomic_read(&intfdata->stats.delayed_writes), atomic_read(&intfdata->stats.delayed_write_err) ++ ); ++} ++ ++/* Read only suspend status */ ++static DEVICE_ATTR(suspend_status, S_IWUSR | S_IRUGO, show_suspend_status, ++ NULL); ++ ++/* Read only statistics */ ++static DEVICE_ATTR(stats, S_IWUSR | S_IRUGO, show_stats, NULL); ++ ++static int sierra_create_sysfs_attrs(struct usb_serial_port *port) ++{ ++ int result = 0; ++ ++ result = device_create_file(&port->dev, &dev_attr_stats); ++ if (unlikely (result < 0)) ++ return result; ++ return device_create_file(&port->dev, &dev_attr_suspend_status); ++} ++ ++static int sierra_remove_sysfs_attrs(struct usb_serial_port *port) ++{ ++ device_remove_file(&port->dev, &dev_attr_stats); ++ device_remove_file(&port->dev, &dev_attr_suspend_status); ++ return 0; ++} ++ + static void sierra_outdat_callback(struct urb *urb) + { + struct usb_serial_port *port = urb->context; +@@ -455,16 +600,20 @@ + dev_dbg(&port->dev, "%s - port %d\n", __func__, port->number); + intfdata = port->serial->private; + +- /* free up the transfer buffer, as usb_free_urb() does not do this */ +- kfree(urb->transfer_buffer); + usb_autopm_put_interface_async(port->serial->interface); +- if (status) ++ ++ atomic_inc(&intfdata->stats.outdat_cb_cnt); ++ ++ if (status) { + dev_dbg(&port->dev, "%s - nonzero write bulk status " + "received: %d\n", __func__, status); ++ atomic_inc(&intfdata->stats.outdat_cb_fail); ++ } + + spin_lock(&portdata->lock); + --portdata->outstanding_urbs; + spin_unlock(&portdata->lock); ++ + spin_lock(&intfdata->susp_lock); + --intfdata->in_flight; + spin_unlock(&intfdata->susp_lock); +@@ -473,10 +622,11 @@ + } + + /* Write */ +-static int sierra_write(struct tty_struct *tty, struct usb_serial_port *port, +- const unsigned char *buf, int count) ++static int sierra_write(struct tty_struct *tty, ++ struct usb_serial_port *port, ++ const unsigned char *buf, int count) + { +- struct sierra_port_private *portdata; ++ struct sierra_port_private *portdata = usb_get_serial_port_data(port); + struct sierra_intf_private *intfdata; + struct usb_serial *serial = port->serial; + unsigned long flags; +@@ -489,46 +639,49 @@ + if (count == 0) + return 0; + +- portdata = usb_get_serial_port_data(port); ++ dev_dbg(&port->dev, "%s: write (%zu bytes)\n", __func__, writesize); ++ + intfdata = serial->private; + +- dev_dbg(&port->dev, "%s: write (%zd bytes)\n", __func__, writesize); + spin_lock_irqsave(&portdata->lock, flags); +- dev_dbg(&port->dev, "%s - outstanding_urbs: %d\n", __func__, +- portdata->outstanding_urbs); + if (portdata->outstanding_urbs > portdata->num_out_urbs) { + spin_unlock_irqrestore(&portdata->lock, flags); + dev_dbg(&port->dev, "%s - write limit hit\n", __func__); + return 0; + } + portdata->outstanding_urbs++; +- dev_dbg(&port->dev, "%s - 1, outstanding_urbs: %d\n", __func__, +- portdata->outstanding_urbs); + spin_unlock_irqrestore(&portdata->lock, flags); + + retval = usb_autopm_get_interface_async(serial->interface); +- if (retval < 0) { ++ if (unlikely(retval < 0)) { + spin_lock_irqsave(&portdata->lock, flags); + portdata->outstanding_urbs--; + spin_unlock_irqrestore(&portdata->lock, flags); +- goto error_simple; ++ return retval; + } + + buffer = kmalloc(writesize, GFP_ATOMIC); + if (!buffer) { + dev_err(&port->dev, "out of memory\n"); +- retval = -ENOMEM; +- goto error_no_buffer; ++ spin_lock_irqsave(&portdata->lock, flags); ++ --portdata->outstanding_urbs; ++ spin_unlock_irqrestore(&portdata->lock, flags); ++ usb_autopm_put_interface_async(serial->interface); ++ return -ENOMEM; + } + + urb = usb_alloc_urb(0, GFP_ATOMIC); + if (!urb) { + dev_err(&port->dev, "no more free urbs\n"); +- retval = -ENOMEM; +- goto error_no_urb; ++ kfree(buffer); ++ spin_lock_irqsave(&portdata->lock, flags); ++ --portdata->outstanding_urbs; ++ spin_unlock_irqrestore(&portdata->lock, flags); ++ usb_autopm_put_interface_async(serial->interface); ++ return -ENOMEM; + } + +- memcpy(buffer, buf, writesize); ++ memcpy(buffer, buf, writesize); + + usb_serial_debug_data(debug, &port->dev, __func__, writesize, buffer); + +@@ -537,69 +690,73 @@ + port->bulk_out_endpointAddress), + buffer, writesize, sierra_outdat_callback, port); + +- /* Handle the need to send a zero length packet */ +- urb->transfer_flags |= URB_ZERO_PACKET; ++ /* Handle the need to send a zero length packet and release the ++ * transfer buffer ++ */ ++ urb->transfer_flags |= (URB_ZERO_PACKET | URB_FREE_BUFFER); + + spin_lock_irqsave(&intfdata->susp_lock, flags); + + if (intfdata->suspended) { + usb_anchor_urb(urb, &portdata->delayed); + spin_unlock_irqrestore(&intfdata->susp_lock, flags); +- goto skip_power; +- } else { +- usb_anchor_urb(urb, &portdata->active); ++ /* release our reference to this urb, the USB core will ++ * eventually free it entirely */ ++ usb_free_urb(urb); ++ return writesize; + } ++ usb_anchor_urb(urb, &portdata->active); ++ + /* send it down the pipe */ + retval = usb_submit_urb(urb, GFP_ATOMIC); + if (retval) { + usb_unanchor_urb(urb); + spin_unlock_irqrestore(&intfdata->susp_lock, flags); ++ + dev_err(&port->dev, "%s - usb_submit_urb(write bulk) failed " + "with status = %d\n", __func__, retval); +- goto error; ++ usb_free_urb(urb); ++ spin_lock_irqsave(&portdata->lock, flags); ++ --portdata->outstanding_urbs; ++ spin_unlock_irqrestore(&portdata->lock, flags); ++ usb_autopm_put_interface_async(serial->interface); ++ atomic_inc(&intfdata->stats.write_err); ++ return retval; + } else { + intfdata->in_flight++; + spin_unlock_irqrestore(&intfdata->susp_lock, flags); ++ atomic_inc(&intfdata->stats.write_cnt); ++ atomic_add(writesize, &intfdata->stats.tx_bytes); + } +- +-skip_power: +- /* we are done with this urb, so let the host driver +- * really free it when it is finished with it */ +- usb_free_urb(urb); ++ /* release our reference to this urb, the USB core will eventually ++ * free it entirely */ ++ usb_free_urb(urb); + + return writesize; +-error: +- usb_free_urb(urb); +-error_no_urb: +- kfree(buffer); +-error_no_buffer: +- spin_lock_irqsave(&portdata->lock, flags); +- --portdata->outstanding_urbs; +- dev_dbg(&port->dev, "%s - 2. outstanding_urbs: %d\n", __func__, +- portdata->outstanding_urbs); +- spin_unlock_irqrestore(&portdata->lock, flags); +- usb_autopm_put_interface_async(serial->interface); +-error_simple: +- return retval; + } + + static void sierra_indat_callback(struct urb *urb) + { + int err; + int endpoint; +- struct usb_serial_port *port; ++ struct usb_serial_port *port = urb->context; + struct tty_struct *tty; ++ struct sierra_intf_private *intfdata; + unsigned char *data = urb->transfer_buffer; + int status = urb->status; + + endpoint = usb_pipeendpoint(urb->pipe); +- port = urb->context; + + dev_dbg(&port->dev, "%s: %p\n", __func__, urb); + ++ intfdata = port->serial->private; ++ ++ atomic_inc(&intfdata->stats.indat_cb_cnt); /* indat calls */ ++ + if (status) { + dev_dbg(&port->dev, "%s: nonzero status: %d on" + " endpoint %02x\n", __func__, status, endpoint); ++ atomic_inc(&intfdata->stats.indat_cb_fail); /* indat fails */ + } else { + if (urb->actual_length) { + tty = tty_port_tty_get(&port->port); +@@ -609,6 +766,10 @@ + tty_flip_buffer_push(tty); + + tty_kref_put(tty); ++ /* tty invalid after this point */ ++ /* rx'd bytes */ ++ atomic_add(urb->actual_length, ++ &intfdata->stats.rx_bytes); + usb_serial_debug_data(debug, &port->dev, + __func__, urb->actual_length, data); + } +@@ -619,13 +780,15 @@ + } + + /* Resubmit urb so we continue receiving */ +- if (status != -ESHUTDOWN && status != -EPERM) { ++ if (status != -ESHUTDOWN && status != -ENOENT && status != -ENODEV) { + usb_mark_last_busy(port->serial->dev); + err = usb_submit_urb(urb, GFP_ATOMIC); +- if (err && err != -EPERM) ++ if (err && err != -ENODEV) + dev_err(&port->dev, "resubmit read urb failed." + "(%d)\n", err); + } ++ ++ return; + } + + static void sierra_instat_callback(struct urb *urb) +@@ -636,31 +799,29 @@ + struct sierra_port_private *portdata = usb_get_serial_port_data(port); + struct usb_serial *serial = port->serial; + +- dev_dbg(&port->dev, "%s: urb %p port %p has data %p\n", __func__, +- urb, port, portdata); ++ dev_dbg(&port->dev, "%s: %p\n", __func__, urb); + + if (status == 0) { + struct usb_ctrlrequest *req_pkt = + (struct usb_ctrlrequest *)urb->transfer_buffer; + +- if (!req_pkt) { +- dev_dbg(&port->dev, "%s: NULL req_pkt\n", +- __func__); +- return; +- } +- if ((req_pkt->bRequestType == 0xA1) && +- (req_pkt->bRequest == 0x20)) { ++ const u16 *sigp = (u16 *)(req_pkt + 1); ++ /* usb_ctrlrequest we parsed is followed by two bytes of data ++ * make sure we received that many bytes ++ */ ++ if (urb->actual_length >= sizeof(*req_pkt) + sizeof(*sigp) && ++ req_pkt->bRequestType == USB_REQUEST_TYPE_CLASS && ++ req_pkt->bRequest == USB_REQUEST_IFACE) { + int old_dcd_state; +- unsigned char signals = *((unsigned char *) +- urb->transfer_buffer + +- sizeof(struct usb_ctrlrequest)); ++ const u16 signals = get_unaligned_le16(sigp); + struct tty_struct *tty; + +- dev_dbg(&port->dev, "%s: signal x%x\n", __func__, ++ dev_dbg(&port->dev, "%s: signal 0x%x\n", __func__, + signals); + + old_dcd_state = portdata->dcd_state; +- portdata->cts_state = 1; ++ /* Note: CTS from modem is in reverse logic! */ ++ portdata->cts_state = ((signals & 0x100) ? 0 : 1); + portdata->dcd_state = ((signals & 0x01) ? 1 : 0); + portdata->dsr_state = ((signals & 0x02) ? 1 : 0); + portdata->ri_state = ((signals & 0x08) ? 1 : 0); +@@ -671,19 +832,19 @@ + tty_hangup(tty); + tty_kref_put(tty); + } else { +- dev_dbg(&port->dev, "%s: type %x req %x\n", +- __func__, req_pkt->bRequestType, +- req_pkt->bRequest); ++ /* dump the data we don't understand to log */ ++ usb_serial_debug_data(1, &port->dev, __func__, ++ urb->actual_length, urb->transfer_buffer); + } + } else + dev_dbg(&port->dev, "%s: error %d\n", __func__, status); + + /* Resubmit urb so we continue receiving IRQ data */ +- if (status != -ESHUTDOWN && status != -ENOENT) { ++ if (status != -ESHUTDOWN && status != -ENOENT && status != -ENODEV) { + usb_mark_last_busy(serial->dev); + urb->dev = serial->dev; + err = usb_submit_urb(urb, GFP_ATOMIC); +- if (err && err != -EPERM) ++ if (err && err != -ENODEV) + dev_err(&port->dev, "%s: resubmit intr urb " + "failed. (%d)\n", __func__, err); + } +@@ -694,20 +855,21 @@ + struct usb_serial_port *port = tty->driver_data; + struct sierra_port_private *portdata = usb_get_serial_port_data(port); + unsigned long flags; ++ int retval; + + dev_dbg(&port->dev, "%s - port %d\n", __func__, port->number); + + /* try to give a good number back based on if we have any free urbs at + * this point in time */ ++ retval = MAX_TRANSFER; ++ + spin_lock_irqsave(&portdata->lock, flags); +- if (portdata->outstanding_urbs > (portdata->num_out_urbs * 2) / 3) { +- spin_unlock_irqrestore(&portdata->lock, flags); +- dev_dbg(&port->dev, "%s - write limit hit\n", __func__); +- return 0; ++ if (portdata->outstanding_urbs >= portdata->num_out_urbs) { ++ retval = 0; + } + spin_unlock_irqrestore(&portdata->lock, flags); + +- return 2048; ++ return retval; + } + + static void sierra_stop_rx_urbs(struct usb_serial_port *port) +@@ -734,6 +896,7 @@ + urb = portdata->in_urbs[i]; + if (!urb) + continue; ++ urb->transfer_flags |= URB_FREE_BUFFER; + err = usb_submit_urb(urb, mem_flags); + if (err) { + dev_err(&port->dev, "%s: submit urb failed: %d\n", +@@ -795,38 +958,31 @@ + + return urb; + } +- + static void sierra_close(struct usb_serial_port *port) + { + int i; ++ struct urb *urb; + struct usb_serial *serial = port->serial; + struct sierra_port_private *portdata; + struct sierra_intf_private *intfdata = port->serial->private; + +- + dev_dbg(&port->dev, "%s\n", __func__); + portdata = usb_get_serial_port_data(port); + + portdata->rts_state = 0; + portdata->dtr_state = 0; + ++ usb_autopm_get_interface(serial->interface); ++ + if (serial->dev) { + mutex_lock(&serial->disc_mutex); +- if (!serial->disconnected) { +- serial->interface->needs_remote_wakeup = 0; +- /* odd error handling due to pm counters */ +- if (!usb_autopm_get_interface(serial->interface)) +- sierra_send_setup(port); +- else +- usb_autopm_get_interface_no_resume(serial->interface); +- +- } ++ if (!serial->disconnected) ++ sierra_send_setup(port); + mutex_unlock(&serial->disc_mutex); + spin_lock_irq(&intfdata->susp_lock); + portdata->opened = 0; + spin_unlock_irq(&intfdata->susp_lock); + +- + /* Stop reading urbs */ + sierra_stop_rx_urbs(port); + /* .. and release them */ +@@ -834,6 +990,14 @@ + sierra_release_urb(portdata->in_urbs[i]); + portdata->in_urbs[i] = NULL; + } ++ while((urb = usb_get_from_anchor(&portdata->delayed))) { ++ sierra_release_urb(urb); ++ usb_autopm_put_interface(serial->interface); ++ } ++ /* wait for active to finish */ ++ usb_wait_anchor_empty_timeout(&portdata->active, 500); ++ usb_kill_anchored_urbs(&portdata->active); ++ + } + } + +@@ -867,18 +1031,41 @@ + usb_clear_halt(serial->dev, + usb_sndbulkpipe(serial->dev, endpoint) | USB_DIR_IN); + ++ /* reset outstanding out urbs counter */ ++ spin_lock_irq(&portdata->lock); ++ portdata->outstanding_urbs = 0; ++ spin_unlock_irq(&portdata->lock); ++ + err = sierra_submit_rx_urbs(port, GFP_KERNEL); + if (err) { +- /* get rid of everything as in close */ +- sierra_close(port); +- /* restore balance for autopm */ +- if (!serial->disconnected) ++ /* do everything as in close() but do not call close() because ++ * usbserial calls sierra_open() with mutex taken; ++ * then if we call sierra_close() inside sierra_open() we ++ * violate 'no nested mutexes' kernel condition ++ */ ++ portdata->rts_state = 0; ++ portdata->dtr_state = 0; ++ usb_autopm_get_interface(serial->interface); ++ /* Stop reading urbs */ ++ sierra_stop_rx_urbs(port); ++ /* .. and release them */ ++ for (i = 0; i < portdata->num_in_urbs; i++) { ++ sierra_release_urb(portdata->in_urbs[i]); ++ portdata->in_urbs[i] = NULL; ++ } ++ while((urb = usb_get_from_anchor(&portdata->delayed))) { ++ sierra_release_urb(urb); + usb_autopm_put_interface(serial->interface); ++ } ++ /* wait for active to finish */ ++ usb_wait_anchor_empty_timeout(&portdata->active, 500); ++ usb_kill_anchored_urbs(&portdata->active); ++ /* restore balance for autopm */ ++ usb_autopm_put_interface(serial->interface); + return err; + } + sierra_send_setup(port); + +- serial->interface->needs_remote_wakeup = 1; + spin_lock_irq(&intfdata->susp_lock); + portdata->opened = 1; + spin_unlock_irq(&intfdata->susp_lock); +@@ -887,7 +1074,6 @@ + return 0; + } + +- + static void sierra_dtr_rts(struct usb_serial_port *port, int on) + { + struct usb_serial *serial = port->serial; +@@ -907,11 +1093,13 @@ + + static int sierra_startup(struct usb_serial *serial) + { +- struct usb_serial_port *port; +- struct sierra_port_private *portdata; ++ struct usb_serial_port *port = NULL; ++ struct sierra_port_private *portdata = NULL; + struct sierra_iface_info *himemoryp = NULL; + int i; + u8 ifnum; ++ u16 fw_attr; ++ int result; + + dev_dbg(&serial->dev->dev, "%s\n", __func__); + +@@ -922,19 +1110,30 @@ + if (nmea) + sierra_vsc_set_nmea(serial->dev, 1); + +- /* Now setup per port private data */ +- for (i = 0; i < serial->num_ports; i++) { +- port = serial->port[i]; +- portdata = kzalloc(sizeof(*portdata), GFP_KERNEL); ++ if (serial->num_ports) { ++ /* Note: One big piece of memory is allocated for all ports ++ * private data in one shot. This memory is split into equal ++ * pieces for each port. ++ */ ++ portdata = (struct sierra_port_private *)kzalloc ++ (sizeof(*portdata) * serial->num_ports, GFP_KERNEL); + if (!portdata) { +- dev_dbg(&port->dev, "%s: kmalloc for " +- "sierra_port_private (%d) failed!\n", +- __func__, i); ++ dev_dbg(&serial->dev->dev, "%s: No memory!\n", __func__); + return -ENOMEM; + } ++ } ++ ++ /* Now setup per port private data */ ++ for (i = 0; i < serial->num_ports; i++, portdata++) { ++ port = serial->port[i]; ++ /* Initialize selected members of private data because these ++ * may be referred to right away */ + spin_lock_init(&portdata->lock); + init_usb_anchor(&portdata->active); + init_usb_anchor(&portdata->delayed); ++ ++ portdata->cts_state = 1; ++ + ifnum = i; + /* Assume low memory requirements */ + portdata->num_out_urbs = N_OUT_URB; +@@ -959,12 +1158,29 @@ + portdata->num_in_urbs = N_IN_URB_HM; + } + } +- dev_dbg(&serial->dev->dev, ++ dev_dbg(&serial->dev->dev, + "Memory usage (urbs) interface #%d, in=%d, out=%d\n", + ifnum,portdata->num_in_urbs, portdata->num_out_urbs ); + /* Set the port private data pointer */ + usb_set_serial_port_data(port, portdata); + } ++ serial->interface->needs_remote_wakeup = 1; ++ ++ result = sierra_get_fw_attr(serial->dev, &fw_attr); ++ if (result == sizeof(fw_attr) && (fw_attr & SWI_FW_ATTR_PM_MASK) ) { ++ dev_info(&serial->dev->dev, ++ "APM supported, enabling autosuspend.\n"); ++/******************************************************************************* ++ * If you want the default /sys/bus/usb/devices/.../.../power/level to be forced ++ * to auto, the following needs to be compiled in. ++ */ ++#ifdef POWER_LEVEL_AUTO ++ /* make power level default be 'auto' */ ++ usb_enable_autosuspend(serial->dev); ++#endif ++ } else { ++ usb_disable_autosuspend(serial->dev); ++ } + + return 0; + } +@@ -973,19 +1189,29 @@ + { + int i; + struct usb_serial_port *port; +- struct sierra_port_private *portdata; ++ struct sierra_intf_private *intfdata = serial->private; + + dev_dbg(&serial->dev->dev, "%s\n", __func__); + ++ if (serial->num_ports > 0) { ++ port = serial->port[0]; ++ if (port) ++ /* Note: The entire piece of memory that was allocated ++ * in the startup routine can be released by passing ++ * a pointer to the beginning of the piece. ++ * This address corresponds to the address of the chunk ++ * that was given to port 0. ++ */ ++ kfree(usb_get_serial_port_data(port)); ++ } ++ + for (i = 0; i < serial->num_ports; ++i) { + port = serial->port[i]; + if (!port) + continue; +- portdata = usb_get_serial_port_data(port); +- if (!portdata) +- continue; +- kfree(portdata); ++ usb_set_serial_port_data(port, NULL); + } ++ kfree(intfdata); + } + + #ifdef CONFIG_PM +@@ -1007,21 +1233,21 @@ + static int sierra_suspend(struct usb_serial *serial, pm_message_t message) + { + struct sierra_intf_private *intfdata; +- int b; + +- if (message.event & PM_EVENT_AUTO) { +- intfdata = serial->private; +- spin_lock_irq(&intfdata->susp_lock); +- b = intfdata->in_flight; ++ dev_dbg(&serial->dev->dev, "%s\n", __func__); ++ ++ intfdata = serial->private; ++ spin_lock_irq(&intfdata->susp_lock); + +- if (b) { ++ if (message.event & PM_EVENT_AUTO) { ++ if (intfdata->in_flight) { + spin_unlock_irq(&intfdata->susp_lock); + return -EBUSY; +- } else { +- intfdata->suspended = 1; +- spin_unlock_irq(&intfdata->susp_lock); + } + } ++ intfdata->suspended = 1; ++ spin_unlock_irq(&intfdata->susp_lock); ++ + stop_read_write_urbs(serial); + + return 0; +@@ -1035,22 +1261,35 @@ + struct urb *urb; + int ec = 0; + int i, err; ++ int len; ++ int failed_submits; + ++ dev_dbg(&serial->dev->dev, "%s\n", __func__); ++ + spin_lock_irq(&intfdata->susp_lock); + for (i = 0; i < serial->num_ports; i++) { + port = serial->port[i]; + portdata = usb_get_serial_port_data(port); +- ++ failed_submits = 0; + while ((urb = usb_get_from_anchor(&portdata->delayed))) { + usb_anchor_urb(urb, &portdata->active); + intfdata->in_flight++; ++ len = urb->transfer_buffer_length; + err = usb_submit_urb(urb, GFP_ATOMIC); + if (err < 0) { + intfdata->in_flight--; + usb_unanchor_urb(urb); +- usb_scuttle_anchored_urbs(&portdata->delayed); +- break; ++ failed_submits++; ++ atomic_inc(&intfdata->stats.delayed_write_err); ++ /* fix pm_usage_cnt */ ++ usb_autopm_put_interface_async( ++ port->serial->interface); ++ } else { ++ atomic_inc(&intfdata->stats.delayed_writes); ++ atomic_add(len, &intfdata->stats.tx_bytes); + } ++ /* release urb - usb_get_from_anchor increased kref */ ++ usb_free_urb(urb); + } + + if (portdata->opened) { +@@ -1058,12 +1297,24 @@ + if (err) + ec++; + } ++ if (failed_submits) { ++ /* fix outstanding_urbs counter */ ++ spin_lock(&portdata->lock); /* assuming irq disabled */ ++ portdata->outstanding_urbs -= failed_submits; ++ spin_unlock(&portdata->lock); ++ /* unblock a writer */ ++ usb_serial_port_softint(port); ++ } + } + intfdata->suspended = 0; + spin_unlock_irq(&intfdata->susp_lock); + + return ec ? -EIO : 0; + } ++#else ++#define sierra_suspend NULL ++#define sierra_resume NULL ++#endif + + static int sierra_reset_resume(struct usb_interface *intf) + { +@@ -1071,11 +1322,6 @@ + dev_err(&serial->dev->dev, "%s\n", __func__); + return usb_serial_resume(intf); + } +-#else +-#define sierra_suspend NULL +-#define sierra_resume NULL +-#define sierra_reset_resume NULL +-#endif + + static struct usb_driver sierra_driver = { + .name = "sierra", +@@ -1085,10 +1331,12 @@ + .resume = usb_serial_resume, + .reset_resume = sierra_reset_resume, + .id_table = id_table, +- .no_dynamic_id = 1, +- .supports_autosuspend = 1, ++ ++ .no_dynamic_id = 1, ++ .supports_autosuspend = 1, + }; + ++ + static struct usb_serial_driver sierra_device = { + .driver = { + .owner = THIS_MODULE, +@@ -1109,9 +1357,12 @@ + .tiocmset = sierra_tiocmset, + .attach = sierra_startup, + .release = sierra_release, +- .suspend = sierra_suspend, +- .resume = sierra_resume, ++ .port_probe = sierra_create_sysfs_attrs, ++ .port_remove = sierra_remove_sysfs_attrs, ++ .suspend = sierra_suspend, ++ .resume = sierra_resume, + .read_int_callback = sierra_instat_callback, ++ + }; + + /* Functions used by new usb-serial code. */ +@@ -1122,7 +1373,6 @@ + if (retval) + goto failed_device_register; + +- + retval = usb_register(&sierra_driver); + if (retval) + goto failed_driver_register; diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch new file mode 100644 index 0000000..2554386 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch @@ -0,0 +1,14 @@ +Index: linux-2.6.39.4/drivers/mmc/host/at91_mci.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/mmc/host/at91_mci.c 2012-09-10 14:29:38.217293988 -0500 ++++ linux-2.6.39.4/drivers/mmc/host/at91_mci.c 2012-09-10 14:41:35.352414089 -0500 +@@ -724,7 +724,8 @@ + else + clkdiv = (at91_master_clock / ios->clock) / 2; + +- pr_debug("clkdiv = %d. mcck = %ld\n", clkdiv, ++ pr_info("MMC: requested clock: %ld\n", ios->clock); ++ pr_info("MMC: clkdiv = %d. mcck = %ld\n", clkdiv, + at91_master_clock / (2 * (clkdiv + 1))); + } + if (ios->bus_width == MMC_BUS_WIDTH_4 && host->board->wire4) { diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91sam9260-reset.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91sam9260-reset.patch new file mode 100644 index 0000000..af63d5c --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91sam9260-reset.patch @@ -0,0 +1,26 @@ +Index: linux-2.6.39.4/arch/arm/mach-at91/at91sam9260.c +=================================================================== +--- linux-2.6.39.4.orig/arch/arm/mach-at91/at91sam9260.c 2012-09-17 16:25:08.248303296 -0500 ++++ linux-2.6.39.4/arch/arm/mach-at91/at91sam9260.c 2012-09-17 16:25:45.316033835 -0500 +@@ -310,6 +310,11 @@ + iotable_init(at91sam9xe_sram_desc, ARRAY_SIZE(at91sam9xe_sram_desc)); + } + ++static void at91sam9260_reset(void) ++{ ++ at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); ++} ++ + void __init at91sam9260_initialize(unsigned long main_clock) + { + /* Map peripherals */ +@@ -322,7 +327,8 @@ + else + iotable_init(at91sam9260_sram_desc, ARRAY_SIZE(at91sam9260_sram_desc)); + +- at91_arch_reset = at91sam9_alt_reset; ++ // jjg: use old reset routine, alt reset is not reliable ++ at91_arch_reset = at91sam9260_reset; + pm_power_off = at91sam9260_poweroff; + at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1) + | (1 << AT91SAM9260_ID_IRQ2); diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch new file mode 100644 index 0000000..9f8303a --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch @@ -0,0 +1,28 @@ +Index: linux-2.6.39.4/drivers/mmc/core/core.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/mmc/core/core.c 2011-08-03 14:43:28.000000000 -0500 ++++ linux-2.6.39.4/drivers/mmc/core/core.c 2012-09-12 10:45:57.246686939 -0500 +@@ -46,7 +46,10 @@ + * So we allow it it to be disabled. + */ + int use_spi_crc = 1; ++/* MTPCIE: default max clock to 13MHz */ ++int max_clock = 13000000; + module_param(use_spi_crc, bool, 0); ++module_param(max_clock, int, 0); + + /* + * We normally treat cards as removed during suspend if they are not +@@ -628,6 +631,12 @@ + + if (ios->clock > 0) + mmc_set_ungated(host); ++ ++ if (max_clock > 0 && ios->clock > max_clock) { ++ ios->clock = max_clock; ++ printk("mmc: forcing clock to %u\n", ios->clock); ++ } ++ + host->ops->set_ios(host, ios); + } + diff --git a/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/defconfig b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/defconfig new file mode 100644 index 0000000..a3e1956 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/defconfig @@ -0,0 +1,2295 @@ +# +# Automatically generated make config: don't edit +# Linux/arm 2.6.39.4 Kernel Configuration +# Mon Sep 10 13:10:13 2012 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +# CONFIG_ARCH_USES_GETTIMEOFFSET is not set +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_KTIME_SCALAR=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_VECTORS_BASE=0xffff0000 +# CONFIG_ARM_PATCH_PHYS_VIRT is not set +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y +CONFIG_HAVE_IRQ_WORK=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="" +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_FHANDLE is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set +CONFIG_HAVE_GENERIC_HARDIRQS=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_HARDIRQS=y +CONFIG_HAVE_SPARSE_IRQ=y +CONFIG_GENERIC_IRQ_SHOW=y +# CONFIG_SPARSE_IRQ is not set + +# +# RCU Subsystem +# +CONFIG_TREE_PREEMPT_RCU=y +# CONFIG_TINY_RCU is not set +# CONFIG_TINY_PREEMPT_RCU is not set +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_TRACE is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +# CONFIG_CGROUP_NS is not set +# CONFIG_CGROUP_FREEZER is not set +# CONFIG_CGROUP_DEVICE is not set +# CONFIG_CPUSETS is not set +# CONFIG_CGROUP_CPUACCT is not set +# CONFIG_RESOURCE_COUNTERS is not set +# CONFIG_CGROUP_SCHED is not set +CONFIG_BLK_CGROUP=y +# CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_NAMESPACES=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +# CONFIG_EXPERT is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y + +# +# Kernel Performance Events And Counters +# +# CONFIG_PERF_EVENTS is not set +# CONFIG_PERF_COUNTERS is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_PROFILING is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_DMA_API_DEBUG=y + +# +# GCOV-based kernel profiling +# +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_BLOCK=y +CONFIG_LBDAF=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_THROTTLING is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_CFQ_GROUP_IOSCHED is not set +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +CONFIG_DEFAULT_NOOP=y +CONFIG_DEFAULT_IOSCHED="noop" +# CONFIG_INLINE_SPIN_TRYLOCK is not set +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set +# CONFIG_INLINE_SPIN_LOCK is not set +# CONFIG_INLINE_SPIN_LOCK_BH is not set +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set +# CONFIG_INLINE_SPIN_UNLOCK is not set +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_READ_TRYLOCK is not set +# CONFIG_INLINE_READ_LOCK is not set +# CONFIG_INLINE_READ_LOCK_BH is not set +# CONFIG_INLINE_READ_LOCK_IRQ is not set +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set +# CONFIG_INLINE_READ_UNLOCK is not set +# CONFIG_INLINE_READ_UNLOCK_BH is not set +# CONFIG_INLINE_READ_UNLOCK_IRQ is not set +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_WRITE_TRYLOCK is not set +# CONFIG_INLINE_WRITE_LOCK is not set +# CONFIG_INLINE_WRITE_LOCK_BH is not set +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set +# CONFIG_INLINE_WRITE_UNLOCK is not set +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set +# CONFIG_MUTEX_SPIN_ON_OWNER is not set +CONFIG_FREEZER=y + +# +# System Type +# +CONFIG_MMU=y +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_VEXPRESS is not set +CONFIG_ARCH_AT91=y +# CONFIG_ARCH_BCMRING is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CNS3XXX is not set +# CONFIG_ARCH_GEMINI is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MXS is not set +# CONFIG_ARCH_STMP3XXX is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_NS9XXX is not set +# CONFIG_ARCH_W90X900 is not set +# CONFIG_ARCH_NUC93X is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_SHMOBILE is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C2410 is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_S5P64X0 is not set +# CONFIG_ARCH_S5P6442 is not set +# CONFIG_ARCH_S5PC100 is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_EXYNOS4 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_TCC_926 is not set +# CONFIG_ARCH_U300 is not set +# CONFIG_ARCH_U8500 is not set +# CONFIG_ARCH_NOMADIK is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP is not set +# CONFIG_PLAT_SPEAR is not set +# CONFIG_ARCH_VT8500 is not set +CONFIG_HAVE_AT91_DATAFLASH_CARD=y +CONFIG_HAVE_NAND_ATMEL_BUSWIDTH_16=y +CONFIG_HAVE_AT91_USART3=y +CONFIG_HAVE_AT91_USART4=y +CONFIG_HAVE_AT91_USART5=y + +# +# Atmel AT91 System-on-Chip +# +# CONFIG_ARCH_AT91RM9200 is not set +# CONFIG_ARCH_AT91SAM9260 is not set +# CONFIG_ARCH_AT91SAM9261 is not set +# CONFIG_ARCH_AT91SAM9G10 is not set +# CONFIG_ARCH_AT91SAM9263 is not set +# CONFIG_ARCH_AT91SAM9RL is not set +CONFIG_ARCH_AT91SAM9G20=y +# CONFIG_ARCH_AT91SAM9G45 is not set +# CONFIG_ARCH_AT91CAP9 is not set +# CONFIG_ARCH_AT572D940HF is not set +# CONFIG_ARCH_AT91X40 is not set +CONFIG_AT91_PMC_UNIT=y + +# +# AT91SAM9G20 Board Type +# +CONFIG_MACH_AT91SAM9G20EK=y +# CONFIG_MACH_AT91SAM9G20EK_2MMC is not set +# CONFIG_MACH_CPU9G20 is not set +# CONFIG_MACH_ACMENETUSFOXG20 is not set +# CONFIG_MACH_PORTUXG20 is not set +# CONFIG_MACH_STAMP9G20 is not set +# CONFIG_MACH_PCONTROL_G20 is not set +# CONFIG_MACH_GSIA18S is not set + +# +# AT91SAM9260/AT91SAM9G20 boards +# +# CONFIG_MACH_SNAPPER_9260 is not set + +# +# AT91 Board Options +# +CONFIG_MTD_AT91_DATAFLASH_CARD=y +# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set + +# +# AT91 Feature Selections +# +CONFIG_AT91_PROGRAMMABLE_CLOCKS=y +CONFIG_AT91_SLOW_CLOCK=y +CONFIG_AT91_TIMER_HZ=100 +CONFIG_AT91_EARLY_DBGU=y +# CONFIG_AT91_EARLY_USART0 is not set +# CONFIG_AT91_EARLY_USART1 is not set +# CONFIG_AT91_EARLY_USART2 is not set +# CONFIG_AT91_EARLY_USART3 is not set +# CONFIG_AT91_EARLY_USART4 is not set +# CONFIG_AT91_EARLY_USART5 is not set +# CONFIG_GPIO_PCA953X is not set + +# +# System MMU +# + +# +# Processor Type +# +CONFIG_CPU_ARM926T=y +CONFIG_CPU_32v5=y +CONFIG_CPU_ABRT_EV5TJ=y +CONFIG_CPU_PABRT_LEGACY=y +CONFIG_CPU_CACHE_VIVT=y +CONFIG_CPU_COPY_V4WB=y +CONFIG_CPU_TLB_V4WBI=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +CONFIG_CPU_USE_DOMAINS=y + +# +# Processor Features +# +# CONFIG_ARM_THUMB is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set +# CONFIG_CPU_CACHE_ROUND_ROBIN is not set +CONFIG_ARM_L1_CACHE_SHIFT=5 + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_HZ=100 +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_HIGHMEM is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=999999 +# CONFIG_COMPACTION is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_NEED_PER_CPU_KM=y +CONFIG_FORCE_MAX_ZONEORDER=11 +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_SECCOMP is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_DEPRECATED_PARAM_STRUCT is not set + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE=" quiet " +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_AUTO_ZRELADDR is not set + +# +# CPU Power Management +# +# CONFIG_CPU_IDLE is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +# CONFIG_VFP is not set + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_PM_SLEEP=y +# CONFIG_PM_RUNTIME is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +# CONFIG_APM_EMULATION is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=y +CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IPGRE=y +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +# CONFIG_DEFAULT_CUBIC is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_EVENTS=y +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CT_PROTO_DCCP is not set +# CONFIG_NF_CT_PROTO_SCTP is not set +# CONFIG_NF_CT_PROTO_UDPLITE is not set +# CONFIG_NF_CONNTRACK_AMANDA is not set +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_H323=y +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CT_NETLINK is not set +# CONFIG_NETFILTER_TPROXY is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=y +CONFIG_NETFILTER_XT_CONNMARK=y + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +# CONFIG_NETFILTER_XT_TARGET_HL is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LED is not set +CONFIG_NETFILTER_XT_TARGET_MARK=y +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set + +# +# Xtables matches +# +# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +CONFIG_NETFILTER_XT_MATCH_CONNMARK=y +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +CONFIG_NETFILTER_XT_MATCH_HL=y +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +# CONFIG_NETFILTER_XT_MATCH_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +CONFIG_NETFILTER_XT_MATCH_STATE=y +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_CONNTRACK_PROC_COMPAT=y +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_AH is not set +CONFIG_IP_NF_MATCH_ECN=y +CONFIG_IP_NF_MATCH_TTL=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_TARGET_LOG=y +# CONFIG_IP_NF_TARGET_ULOG is not set +CONFIG_NF_NAT=y +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_IP_NF_TARGET_NETMAP=y +CONFIG_IP_NF_TARGET_REDIRECT=y +CONFIG_NF_NAT_FTP=y +# CONFIG_NF_NAT_IRC is not set +# CONFIG_NF_NAT_TFTP is not set +# CONFIG_NF_NAT_AMANDA is not set +# CONFIG_NF_NAT_PPTP is not set +CONFIG_NF_NAT_H323=y +# CONFIG_NF_NAT_SIP is not set +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_TTL is not set +# CONFIG_IP_NF_RAW is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +# CONFIG_SCTP_HMAC_MD5 is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_BATMAN_ADV is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=y +CONFIG_BT_SCO=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +# CONFIG_BT_BNEP_MC_FILTER is not set +# CONFIG_BT_BNEP_PROTO_FILTER is not set +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +# CONFIG_BT_HCIBTUSB is not set +# CONFIG_BT_HCIBTSDIO is not set +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_BCSP is not set +# CONFIG_BT_HCIUART_ATH3K is not set +CONFIG_BT_HCIUART_LL=y +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_BT_MRVL is not set +# CONFIG_AF_RXRPC is not set +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +CONFIG_NL80211_TESTMODE=y +CONFIG_CFG80211_DEVELOPER_WARNINGS=y +CONFIG_CFG80211_REG_DEBUG=y +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +CONFIG_CFG80211_WEXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_LIB80211=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +# CONFIG_MAC80211_MESH is not set +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +# CONFIG_DEVTMPFS is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_DATAFLASH=y +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_DATAFLASH_OTP is not set +CONFIG_MTD_M25P80=y +# CONFIG_M25PXX_USE_FAST_READ is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND_ECC=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_BCH is not set +# CONFIG_MTD_SM_COMMON is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_DISKONCHIP is not set +CONFIG_MTD_NAND_ATMEL=y +CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y +# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_ALAUDA is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_UBI is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set + +# +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected +# +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=32768 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_SENSORS_LIS3LV02D is not set +CONFIG_MISC_DEVICES=y +# CONFIG_AD525X_DPOT is not set +CONFIG_ATMEL_TCLIB=y +CONFIG_ATMEL_TCB_CLKSRC=y +CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0 +# CONFIG_ICS932S401 is not set +CONFIG_ATMEL_SSC=y +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1780 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_TI_DAC7512 is not set +# CONFIG_BMP085 is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +CONFIG_EEPROM_93CX6=m +# CONFIG_IWMC3200TOP is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LIS3_I2C is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_LIBFC is not set +# CONFIG_LIBFCOE is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +# CONFIG_TARGET_CORE is not set +CONFIG_HAVE_NET_MACB=y +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +CONFIG_MII=y +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM63XX_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_NET_ETHERNET=y +CONFIG_MACB=y +# CONFIG_AX88796 is not set +# CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set +# CONFIG_ENC28J60 is not set +# CONFIG_ETHOC is not set +# CONFIG_SMC911X is not set +# CONFIG_SMSC911X is not set +# CONFIG_DNET is not set +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +# CONFIG_B44 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_FTMAC100 is not set +CONFIG_NETDEV_1000=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NETDEV_10000=y +CONFIG_WLAN=y +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AT76C50X_USB=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +# CONFIG_MAC80211_HWSIM is not set +CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_HTC=m +CONFIG_AR9170_USB=m +CONFIG_AR9170_LEDS=y +# CONFIG_CARL9170 is not set +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_B43LEGACY_DMA_AND_PIO_MODE is not set +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +# CONFIG_HOSTAP is not set +# CONFIG_IWM is not set +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +# CONFIG_LIBERTAS_SDIO is not set +# CONFIG_LIBERTAS_SPI is not set +# CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_LIBERTAS_MESH is not set +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +# CONFIG_P54_SPI is not set +CONFIG_P54_LEDS=y +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +# CONFIG_RT2800USB_RT33XX is not set +# CONFIG_RT2800USB_RT35XX is not set +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2800_LIB=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_HT=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_DEBUG is not set +# CONFIG_RTL8192CU is not set +# CONFIG_WL1251 is not set +CONFIG_WL12XX_MENU=m +CONFIG_WL12XX=m +# CONFIG_WL12XX_HT is not set +# CONFIG_WL12XX_SPI is not set +CONFIG_WL12XX_SDIO=m +# CONFIG_WL12XX_SDIO_TEST is not set +CONFIG_WL12XX_PLATFORM_DATA=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_NET1080=m +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +# CONFIG_USB_ALI_M5632 is not set +# CONFIG_USB_AN2720 is not set +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +# CONFIG_USB_EPSON2888 is not set +# CONFIG_USB_KC2190 is not set +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_NET_CX82310_ETH is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_USB_IPHETH is not set +CONFIG_USB_SIERRA_NET=m +# CONFIG_USB_VL600 is not set +# CONFIG_WAN is not set + +# +# CAIF transport drivers +# +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=y +CONFIG_PPP_BSDCOMP=y +# CONFIG_PPP_MPPE is not set +# CONFIG_PPPOE is not set +# CONFIG_PPTP is not set +# CONFIG_SLIP is not set +CONFIG_SLHC=y +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +CONFIG_DEVKMEM=y + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_ATMEL=y +CONFIG_SERIAL_ATMEL_CONSOLE=y +CONFIG_SERIAL_ATMEL_PDC=y +# CONFIG_SERIAL_ATMEL_TTYAT is not set +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX3107 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_HVC_DCC is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_RAMOOPS is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +# CONFIG_I2C_MUX is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_DESIGNWARE is not set +CONFIG_I2C_GPIO=y +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PXA_PCI is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +CONFIG_SPI_ATMEL=y +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_DESIGNWARE is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set + +# +# PPS support +# +# CONFIG_PPS is not set + +# +# PPS generators support +# +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_GPIO_SYSFS is not set + +# +# Memory mapped GPIO expanders: +# +# CONFIG_GPIO_BASIC_MMIO is not set +# CONFIG_GPIO_IT8761E is not set + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_SX150X is not set +# CONFIG_GPIO_ADP5588 is not set + +# +# PCI GPIO expanders: +# + +# +# SPI GPIO expanders: +# +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_74X164 is not set + +# +# AC97 GPIO expanders: +# + +# +# MODULbus GPIO expanders: +# +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +CONFIG_AT91SAM9X_WATCHDOG=y +# CONFIG_MAX63XX_WATCHDOG is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_MFD_SUPPORT=y +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_MC13XXX is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_REGULATOR is not set +CONFIG_MEDIA_SUPPORT=y + +# +# Multimedia core support +# +# CONFIG_MEDIA_CONTROLLER is not set +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_COMMON=m +# CONFIG_DVB_CORE is not set +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_RC_CORE=y +CONFIG_LIRC=y +# CONFIG_RC_MAP is not set +# CONFIG_IR_NEC_DECODER is not set +# CONFIG_IR_RC5_DECODER is not set +# CONFIG_IR_RC6_DECODER is not set +# CONFIG_IR_JVC_DECODER is not set +# CONFIG_IR_SONY_DECODER is not set +CONFIG_IR_RC5_SZ_DECODER=y +CONFIG_IR_LIRC_CODEC=y +# CONFIG_IR_IMON is not set +# CONFIG_IR_MCEUSB is not set +# CONFIG_IR_STREAMZAP is not set +# CONFIG_RC_LOOPBACK is not set +# CONFIG_MEDIA_ATTACH is not set +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_IR_I2C=m + +# +# Audio decoders +# +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_WM8775=m + +# +# RDS decoders +# + +# +# Video decoders +# +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TVP5150=m + +# +# Video and audio decoders +# +CONFIG_VIDEO_CX25840=m + +# +# MPEG video encoders +# +CONFIG_VIDEO_CX2341X=m + +# +# Video encoders +# + +# +# Video improvement chips +# +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_VIDEO_TIMBERDALE is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_SOC_CAMERA is not set +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +# CONFIG_USB_GSPCA_KONICA is not set +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +# CONFIG_USB_GSPCA_NW80X is not set +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +# CONFIG_USB_GSPCA_SPCA1528 is not set +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +# CONFIG_USB_GSPCA_SQ930X is not set +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +# CONFIG_USB_GSPCA_VICAM is not set +# CONFIG_USB_GSPCA_XIRLINK_CIT is not set +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_USBVISION=m +# CONFIG_USB_ET61X251 is not set +# CONFIG_USB_SN9C102 is not set +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +# CONFIG_V4L_MEM2MEM_DRIVERS is not set +# CONFIG_RADIO_ADAPTERS is not set + +# +# Graphics support +# +# CONFIG_DRM is not set +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +# CONFIG_FB is not set +# CONFIG_FB_CARMINE_DRAM_EVAL is not set +# CONFIG_CARMINE_DRAM_CUSTOM is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +# CONFIG_SOUND is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +# CONFIG_HIDRAW is not set + +# +# USB Input Devices +# +# CONFIG_USB_HID is not set +# CONFIG_HID_PID is not set + +# +# Special HID drivers +# +CONFIG_HID_APPLE=m +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_WACOM is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB_ARCH_HAS_EHCI is not set +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_ISP1362_HCD is not set +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HWA_HCD is not set +# CONFIG_USB_MUSB_HDRC is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=m +CONFIG_USB_EZUSB=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MOTOROLA=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_HP4X=m +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SAMBA is not set +CONFIG_USB_SERIAL_SIEMENS_MPI=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m +CONFIG_USB_SERIAL_ZIO=m +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +CONFIG_USB_SEVSEG=m +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +CONFIG_USB_LCD=m +CONFIG_USB_LED=m +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_SELECTED=y +CONFIG_USB_GADGET_AT91=y +CONFIG_USB_AT91=y +# CONFIG_USB_GADGET_FUSB300 is not set +# CONFIG_USB_GADGET_R8A66597 is not set +# CONFIG_USB_GADGET_PXA_U2O is not set +# CONFIG_USB_GADGET_M66592 is not set +# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_CI13XXX_PCI is not set +# CONFIG_USB_GADGET_NET2280 is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_LANGWELL is not set +# CONFIG_USB_GADGET_EG20T is not set +# CONFIG_USB_GADGET_DUMMY_HCD is not set +# CONFIG_USB_GADGET_DUALSPEED is not set +CONFIG_USB_ZERO=m +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_ETH is not set +# CONFIG_USB_G_NCM is not set +CONFIG_USB_GADGETFS=m +# CONFIG_USB_FUNCTIONFS is not set +CONFIG_USB_FILE_STORAGE=m +# CONFIG_USB_FILE_STORAGE_TEST is not set +# CONFIG_USB_MASS_STORAGE is not set +CONFIG_USB_G_SERIAL=m +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_NOKIA is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_WEBCAM is not set + +# +# OTG and related infrastructure +# +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ULPI is not set +# CONFIG_NOP_USB_XCEIV is not set +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set +# CONFIG_MMC_CLKGATE is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_SDHCI is not set +CONFIG_MMC_AT91=m +# CONFIG_MMC_ATMELMCI is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y + +# +# LED drivers +# +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_GPIO_PLATFORM=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +CONFIG_LEDS_TRIGGERS=y + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_NFC_DEVICES is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set +# CONFIG_RTC_DRV_PCF2123 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_AT91SAM9=y +CONFIG_RTC_DRV_AT91SAM9_RTT=0 +CONFIG_RTC_DRV_AT91SAM9_GPBR=0 +# CONFIG_DMADEVICES is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_STAGING is not set +# CONFIG_LIS3L02DQ_BUF_RING_SW is not set +# CONFIG_MACH_NO_WESTBRIDGE is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_XATTR=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD=y +CONFIG_JBD2=y +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_FS_WBUF_VERIFY=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +# CONFIG_LOGFS is not set +CONFIG_CRAMFS=y +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +CONFIG_ROMFS_FS=y +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_MTD is not set +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +CONFIG_ROMFS_ON_BLOCK=y +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_LOCKUP_DETECTOR is not set +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_KMEMLEAK is not set +CONFIG_DEBUG_PREEMPT=y +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_SYSCTL_SYSCALL_CHECK is not set +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_ENABLE_DEFAULT_TRACERS is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_STRICT_DEVMEM is not set +CONFIG_ARM_UNWIND=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_DEBUG_LL=y +# CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_OC_ETM is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +# CONFIG_DEFAULT_SECURITY_APPARMOR is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" +CONFIG_CRYPTO=m + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ALGAPI2=m +CONFIG_CRYPTO_AEAD2=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=m +CONFIG_CRYPTO_HASH2=m +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=m +CONFIG_CRYPTO_PCOMP2=m +CONFIG_CRYPTO_MANAGER=m +CONFIG_CRYPTO_MANAGER2=m +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_WORKQUEUE=m +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=m +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=m +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +CONFIG_CRYPTO_HW=y +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +CONFIG_CRC7=m +# CONFIG_LIBCRC32C is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_AVERAGE=y diff --git a/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch new file mode 100644 index 0000000..36da1a2 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch @@ -0,0 +1,406 @@ +Index: linux-2.6.39.4/arch/arm/mach-at91/at91sam9260_devices.c +=================================================================== +--- linux-2.6.39.4.orig/arch/arm/mach-at91/at91sam9260_devices.c 2011-08-03 14:43:28.000000000 -0500 ++++ linux-2.6.39.4/arch/arm/mach-at91/at91sam9260_devices.c 2012-09-10 12:33:08.656010481 -0500 +@@ -183,9 +183,9 @@ + at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ + at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ + at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ +- at91_set_B_periph(AT91_PIN_PA23, 0); /* ETX2 */ +- at91_set_B_periph(AT91_PIN_PA24, 0); /* ETX3 */ +- at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ ++ at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ ++ at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ ++ /*at91_set_B_periph(AT91_PIN_PA22, 0);*/ /* ETXER */ + } + + eth_data = *data; +@@ -571,7 +571,15 @@ + .num_resources = ARRAY_SIZE(spi1_resources), + }; + +-static const unsigned spi1_standard_cs[4] = { AT91_PIN_PB3, AT91_PIN_PC5, AT91_PIN_PC4, AT91_PIN_PC3 }; ++static const unsigned spi1_standard_cs[7] = { ++ AT91_PIN_PB21, // CS0 - external pin SPI_CS7 ++ AT91_PIN_PC5, // CS1 - GP output ++ AT91_PIN_PC4, // CS2 - temp sensor ++ AT91_PIN_PC6, // CS3 - unused/floating ++ AT91_PIN_PB12, // CS4 - GP input ++ AT91_PIN_PB13, // CS5 - external pin SPI_CS5 ++ AT91_PIN_PB16 // CS6 - external pin SPI_CS6 ++}; + + void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) + { +Index: linux-2.6.39.4/arch/arm/mach-at91/board-sam9g20ek.c +=================================================================== +--- linux-2.6.39.4.orig/arch/arm/mach-at91/board-sam9g20ek.c 2011-08-03 14:43:28.000000000 -0500 ++++ linux-2.6.39.4/arch/arm/mach-at91/board-sam9g20ek.c 2012-09-10 12:37:02.306005503 -0500 +@@ -30,6 +30,12 @@ + #include <linux/regulator/machine.h> + #include <linux/regulator/fixed.h> + #include <linux/regulator/consumer.h> ++#include <linux/i2c/at24.h> ++#include <linux/spi/eeprom.h> ++#include <linux/spi/flash.h> ++#include <linux/delay.h> ++#include <mach/at91_rtt.h> ++#include <linux/wl12xx.h> + + #include <mach/hardware.h> + #include <asm/setup.h> +@@ -59,9 +65,14 @@ + return machine_is_at91sam9g20ek_2mmc() || (system_rev & HAVE_2MMC); + } + ++#define WL12XX_ENABLE_PIN AT91_PIN_PB7 ++ ++static int i2c_present; + + static void __init ek_map_io(void) + { ++ int tmp; ++ + /* Initialize processor: 18.432 MHz crystal */ + at91sam9260_initialize(18432000); + +@@ -76,12 +87,55 @@ + /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ + at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); + ++ /* ++ * Reset any initiated i2c data transfers? ++ */ ++ at91_set_gpio_input(AT91_PIN_PA23, 0); ++ at91_set_gpio_output(AT91_PIN_PA24, 0); ++ for (tmp = 0; tmp < 11; tmp++) { ++ at91_set_gpio_value(AT91_PIN_PA24, 0); ++ udelay(20); ++ at91_set_gpio_value(AT91_PIN_PA24, 1); ++ udelay(20); ++ } ++ at91_set_gpio_input(AT91_PIN_PA24, 0); ++ ++ /* ++ * PA24 and PA23 are used as ID pins on MTCBA/MTCDP-0.0 and I2C pins on MTCDP-1.0. ++ * ++ * MTCBA Rev. B: 0x01, C: 0x02, D: 0x03 ++ * MTCDP Rev. A reads as 0x00 with TWCK and TWD pulled high ++ * ++ */ ++ tmp = !at91_get_gpio_value(AT91_PIN_PA24) << 1 | !at91_get_gpio_value(AT91_PIN_PA23); ++ ++ i2c_present = !tmp; ++ ++ /* ++ * The GPS receiver is either at US2 on MTCBA/MTCDP-0.0 and US3 on MTCDP-1.0. ++ */ ++ if (i2c_present) { ++ at91_register_uart(AT91SAM9260_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS); ++ printk(KERN_INFO "sam9g20: i2c available\n"); ++ } else { ++ at91_register_uart(AT91SAM9260_ID_US2, 3, 0); ++ printk(KERN_INFO "sam9g20: i2c not available\n"); ++ } ++ + /* set serial console to ttyS0 (ie, DBGU) */ + at91_set_serial_console(0); + } + + static void __init ek_init_irq(void) + { ++ /* ++ * Ensure RTT interrupts are disabled ++ */ ++ u32 mr; ++ mr = __raw_readl(AT91_VA_BASE_SYS + AT91_RTT + AT91_RTT_MR); ++ __raw_writel(mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN), ++ AT91_VA_BASE_SYS + AT91_RTT + AT91_RTT_MR); ++ + at91sam9260_init_interrupts(NULL); + } + +@@ -97,10 +151,37 @@ + * USB Device port + */ + static struct at91_udc_data __initdata ek_udc_data = { +- .vbus_pin = AT91_PIN_PC5, +- .pullup_pin = 0, /* pull-up driven by UDC */ ++ .vbus_pin = AT91_PIN_PC12, ++ .pullup_pin = 0, /* pull-up driven by UDC */ ++}; ++ ++ ++#define MTS_EXT_AT25_TEST 0 ++#if MTS_EXT_AT25_TEST ++static struct spi_eeprom at25040b = { ++ .byte_len = SZ_4K / 8, ++ .name = "at25040b", ++ .page_size = 8, ++ .flags = EE_ADDR1, ++}; ++#endif ++ ++#define MTS_EXT_STT25_TEST 0 ++#if MTS_EXT_STT25_TEST ++static struct mtd_partition m25_partitions[] = { ++ { ++ .name = "flash", ++ .offset = 0x00000000, ++ .size = MTDPART_SIZ_FULL, ++ }, + }; + ++static struct flash_platform_data m25_spi_flash_data = { ++ .type = "sst25vf080b", ++ .nr_parts = ARRAY_SIZE(m25_partitions), ++ .parts = m25_partitions, ++}; ++#endif + + /* + * SPI devices. +@@ -122,6 +203,54 @@ + }, + #endif + #endif ++ { ++ .modalias = "mts-io-sout", ++ .chip_select = 0, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-board-temp", ++ .chip_select = 2, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-dout", ++ .chip_select = 1, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-din", ++ .chip_select = 4, ++ .bus_num = 1, ++ }, ++#if MTS_EXT_AT25_TEST ++ { ++ .modalias = "at25", ++ .platform_data = &at25040b, ++ .max_speed_hz = 20 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 5, ++ .mode = SPI_MODE_0, ++ }, ++ { ++ .modalias = "at25", ++ .platform_data = &at25040b, ++ .max_speed_hz = 20 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 6, ++ .mode = SPI_MODE_0, ++ }, ++#endif ++#if MTS_EXT_STT25_TEST ++ { ++ .modalias = "m25p80", ++ .platform_data = &m25_spi_flash_data, ++ .irq = NO_IRQ, ++ .max_speed_hz = 33 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 5, ++ }, ++#endif + }; + + +@@ -130,7 +259,7 @@ + */ + static struct at91_eth_data __initdata ek_macb_data = { + .phy_irq_pin = AT91_PIN_PA7, +- .is_rmii = 1, ++ .is_rmii = 0, + }; + + static void __init ek_add_device_macb(void) +@@ -146,18 +275,48 @@ + */ + static struct mtd_partition __initdata ek_nand_partition[] = { + { +- .name = "Bootstrap", +- .offset = 0, +- .size = 4 * SZ_1M, ++ .name = "MTNCG-NANDFlash", ++ .offset = 0, ++ .size = 256*1024*1024, ++ }, ++ { ++ .name = "AT91Bootstrap", ++ .offset = 0, ++ .size = 128*1024, ++ }, ++ { ++ .name = "UBoot", ++ .offset = 128*1024, ++ .size = 256*1024, ++ }, ++ { ++ .name = "UBoot Config", ++ .offset = 384*1024, ++ .size = 128*1024, ++ }, ++ { ++ .name = "UBoot Redundant Config", ++ .offset = 512*1024, ++ .size = 128*1024, ++ }, ++ { ++ .name = "uImage", ++ .offset = 640*1024, ++ .size = 59*128*1024, ++ }, ++ { ++ .name = "Config", ++ .offset = 64*128*1024, ++ .size = 64*128*1024, + }, + { +- .name = "Partition 1", +- .offset = MTDPART_OFS_NXTBLK, +- .size = 60 * SZ_1M, ++ .name = "Oem Config", ++ .offset = 128*128*1024, ++ .size = 64*128*1024, + }, + { +- .name = "Partition 2", +- .offset = MTDPART_OFS_NXTBLK, ++ .name = "Rootfs", ++ .offset = 192*128*1024, + .size = MTDPART_SIZ_FULL, + }, + }; +@@ -228,10 +387,11 @@ + + }; + #else ++/* MT100ECOG-PCIE-DK: SDIO for WLAN */ + static struct at91_mmc_data __initdata ek_mmc_data = { + .slot_b = 1, /* Only one slot so use slot B */ + .wire4 = 1, +- .det_pin = AT91_PIN_PC9, ++ .det_pin = AT91_PIN_PB20, + }; + #endif + +@@ -252,15 +412,10 @@ + * LEDs + */ + static struct gpio_led ek_leds[] = { +- { /* "bottom" led, green, userled1 to be defined */ +- .name = "ds5", +- .gpio = AT91_PIN_PA6, ++ { /* "status" led, green */ ++ .name = "status", ++ .gpio = AT91_PIN_PA30, + .active_low = 1, +- .default_trigger = "none", +- }, +- { /* "power" led, yellow */ +- .name = "ds1", +- .gpio = AT91_PIN_PA9, + .default_trigger = "heartbeat", + } + }; +@@ -363,16 +518,60 @@ + static void __init ek_add_regulators(void) {} + #endif + ++uint8_t mts_id_eeprom[512]; ++ ++EXPORT_SYMBOL(mts_id_eeprom); ++ ++static void mts_id_eeprom_load(struct memory_accessor *macc, void *context) ++{ ++ int tmp; ++ ++ memset(mts_id_eeprom, 0, sizeof(mts_id_eeprom)); ++ ++ tmp = macc->read(macc, mts_id_eeprom, 0, sizeof(mts_id_eeprom)); ++ if (tmp != sizeof(mts_id_eeprom)) { ++ printk(KERN_ERR "sam9g20: id eeprom read failed: %d\n", tmp); ++ } else { ++ printk(KERN_INFO "sam9g20: read %d bytes from id eeprom\n", tmp); ++ } ++} ++ ++static struct at24_platform_data at24c04_data = { ++ .byte_len = SZ_4K / 8, ++ .page_size = 16, ++ .setup = mts_id_eeprom_load, ++}; ++ + + static struct i2c_board_info __initdata ek_i2c_devices[] = { +- { +- I2C_BOARD_INFO("24c512", 0x50) +- }, +- { +- I2C_BOARD_INFO("wm8731", 0x1b) +- }, ++ { ++ I2C_BOARD_INFO("24c04", 0x56), ++ .platform_data = &at24c04_data, ++ }, + }; + ++/* MT100EOCG-PCIE-DK: WL12XX support */ ++static void wl12xx_enable(int enable) ++{ ++ if (enable) { ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 0, 0); ++ msleep(10); ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 1, 0); ++ msleep(100); ++ printk(KERN_INFO "WLAN Enabled\n"); ++ } ++ else { ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 0, 0); ++ msleep(10); ++ printk(KERN_INFO "WLAN Disabled\n"); ++ } ++}; ++ ++static struct wl12xx_platform_data at91_wl12xx_wlan_data __initdata = { ++ .irq = AT91_PIN_PB19, ++ .board_ref_clock = WL12XX_REFCLOCK_38, ++ .set_power = wl12xx_enable, ++}; + + static void __init ek_board_init(void) + { +@@ -401,7 +600,22 @@ + /* PCK0 provides MCLK to the WM8731 */ + at91_set_B_periph(AT91_PIN_PC1, 0); + /* SSC (for WM8731) */ +- at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); ++ /* at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); */ ++ ++ /* MT100ECOG-PCIE-DK ++ * configure the WLAN_IRQ for input ++ */ ++ at91_set_gpio_input(at91_wl12xx_wlan_data.irq, 0); ++ at91_set_deglitch(at91_wl12xx_wlan_data.irq, 1); ++ ++ if (wl12xx_set_platform_data(&at91_wl12xx_wlan_data)) ++ pr_err("error setting wl12xx data\n"); ++ ++ /* configure WLAN_EN as output and enable chip */ ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 0, 0); ++ mdelay(10); ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 1, 0); ++ mdelay(100); + } + + MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") diff --git a/multitech/recipes/linux/linux_2.6.39.4.bb b/multitech/recipes/linux/linux_2.6.39.4.bb new file mode 100644 index 0000000..d0af5f7 --- /dev/null +++ b/multitech/recipes/linux/linux_2.6.39.4.bb @@ -0,0 +1,29 @@ +require recipes/linux/linux.inc + +PR = "r1" + +SRC_URI = " \ + ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \ + " + +SRC_URI_append_mt100eocg-pcie-dk = "file://defconfig \ + file://linux-2.6.39.4-at91sam9260-reset.patch \ + file://linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch \ + file://linux-2.6.35.14-at91-gpio-pullup.patch \ + file://linux-2.6.32.3-atmel_spi.patch \ + file://linux-2.6.32.3-at25.patch \ + file://linux-2.6.35.14-option-zte.patch \ + file://linux-2.6.38-sierra-1.7.40.patch \ + file://linux-2.6.32.3-option-telit.patch \ + file://linux-2.6.39.4-mmc-core-maxclock.patch \ + file://linux-2.6.39.4-at91-mci-clock-debug.patch \ + " + +SRC_URI[kernel.md5sum] = "a17c748c2070168f1e784e9605ca043d" +SRC_URI[kernel.sha256sum] = "d26e44eedbb4bf63f84754bd21640c5d4fee9010320781a5b66c7d2106941183" + +# add missing crypto headers +sysroot_stage_all_append() { + kerneldir=${SYSROOT_DESTDIR}${STAGING_KERNEL_DIR} + cp -fR include/crypto* $kerneldir/include/ +} |