linux-omap git: update to 2.6.28rc6, remove patches that were applied
authorKoen Kooi <koen@openembedded.org>
Sat, 22 Nov 2008 17:59:33 +0000 (18:59 +0100)
committerKoen Kooi <koen@openembedded.org>
Sat, 22 Nov 2008 17:59:33 +0000 (18:59 +0100)
packages/linux/linux-omap/beagleboard/defconfig
packages/linux/linux-omap/fix-asoc.diff [deleted file]
packages/linux/linux-omap/fix-mmc.diff [deleted file]
packages/linux/linux-omap/musb-dma-iso-in.eml [deleted file]
packages/linux/linux-omap/musb-fix-endpoints.diff [deleted file]
packages/linux/linux-omap/musb-fix-multiple-bulk-transfers.diff [deleted file]
packages/linux/linux-omap_git.bb

index ce06b21..cf6cc12 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.28-rc3-omap1
-# Tue Nov 11 15:45:33 2008
+# Linux kernel version: 2.6.28-rc4-omap1
+# Mon Nov 17 15:37:33 2008
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -801,7 +801,7 @@ CONFIG_INPUT_KEYBOARD=y
 # CONFIG_KEYBOARD_NEWTON is not set
 # CONFIG_KEYBOARD_STOWAWAY is not set
 # CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_KEYBOARD_GPIO=y
 CONFIG_INPUT_MOUSE=y
 CONFIG_MOUSE_PS2=y
 CONFIG_MOUSE_PS2_ALPS=y
@@ -1314,6 +1314,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
 # CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
 CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=14
 CONFIG_FB_OMAP2=y
 CONFIG_FB_OMAP2_DEBUG=y
@@ -1323,11 +1324,11 @@ CONFIG_FB_OMAP2_DEBUG=y
 # OMAP2/3 Display Device Drivers
 #
 CONFIG_PANEL_DVI=y
-# CONFIG_PANEL_DVI_LOWLOWRES is not set
-# CONFIG_PANEL_DVI_LOWRES is not set
-CONFIG_PANEL_DVI_HIGHRES=y
-# CONFIG_PANEL_DVI_VERYHIGHRES is not set
-# CONFIG_PANEL_SDP3430 is not set
+# CONFIG_PANEL_DVI_640X480 is not set
+# CONFIG_PANEL_DVI_800X600 is not set
+CONFIG_PANEL_DVI_1024X768=y
+# CONFIG_PANEL_DVI_1280X1024 is not set
+# CONFIG_PANEL_SHARP_LS037V7DW01 is not set
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
@@ -1734,14 +1735,7 @@ CONFIG_RTC_DRV_TWL4030=y
 # on-CPU RTC drivers
 #
 # CONFIG_DMADEVICES is not set
-
-#
-# Voltage and Current regulators
-#
 # CONFIG_REGULATOR is not set
-# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_BQ24022 is not set
 # CONFIG_UIO is not set
 
 #
diff --git a/packages/linux/linux-omap/fix-asoc.diff b/packages/linux/linux-omap/fix-asoc.diff
deleted file mode 100644 (file)
index 4948e93..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-From linux-omap-owner@vger.kernel.org Mon Nov 10 23:48:17 2008
-Date:  Mon, 10 Nov 2008 14:36:32 -0800
-From: "Steve Sakoman" <sakoman@gmail.com>
-To: "Philip Balister" <philip@balister.org>
-Subject: Re: ASOC and the Beagle
-Cc: "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
-        "Tony Lindgren" <tony@atomide.com>
-
-On Mon, Nov 10, 2008 at 12:38 PM, Steve Sakoman <sakoman@gmail.com> wrote:
-> On Mon, Nov 10, 2008 at 7:10 AM, Philip Balister <philip@balister.org> wrote:
->> A few weeks ago kernels built from git would detect the sound hardware and
->> actually work.
->>
->> Yesterday I build a kernel and the sound hardware is no longer detected. Is
->> there an easy way to fix this?
->>
->> Sorry I'm so vague, I don't have all the revision data handy ....
->
-> I just noticed this too.
->
-> It seems that the Kconfig for soc/omap got damaged in the merge.
->
-> The fix is simple, patch below.
-
-Next time I should build test before posting :-)
-
-Turns out that the Makefile for soc/omap and the Kconfig and Makefile
-for soc/codec also got screwed up in the merge, so those need to be
-fixed.
-
-The complete fix is:
-
-diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
-index 38a0e3b..5df7402 100644
---- a/sound/soc/codecs/Kconfig
-+++ b/sound/soc/codecs/Kconfig
-@@ -10,6 +10,7 @@ config SND_SOC_ALL_CODECS
-       select SND_SOC_TLV320AIC23
-       select SND_SOC_TLV320AIC26
-       select SND_SOC_TLV320AIC3X
-+      select SND_SOC_TWL4030
-       select SND_SOC_UDA1380
-       select SND_SOC_WM8510
-       select SND_SOC_WM8580
-@@ -75,6 +76,10 @@ config SND_SOC_TLV320AIC3X
-       tristate
-       depends on I2C
-
-+config SND_SOC_TWL4030
-+      tristate
-+      depends on TWL4030_CORE
-+
- config SND_SOC_UDA1380
-         tristate
-
-diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
-index 90f0a58..3b9b58a 100644
---- a/sound/soc/codecs/Makefile
-+++ b/sound/soc/codecs/Makefile
-@@ -7,6 +7,7 @@ snd-soc-ssm2602-objs := ssm2602.o
- snd-soc-tlv320aic23-objs := tlv320aic23.o
- snd-soc-tlv320aic26-objs := tlv320aic26.o
- snd-soc-tlv320aic3x-objs := tlv320aic3x.o
-+snd-soc-twl4030-objs := twl4030.o
- snd-soc-uda1380-objs := uda1380.o
- snd-soc-wm8510-objs := wm8510.o
- snd-soc-wm8580-objs := wm8580.o
-@@ -29,6 +30,7 @@ obj-$(CONFIG_SND_SOC_SSM2602)        += snd-soc-ssm2602.o
- obj-$(CONFIG_SND_SOC_TLV320AIC23)     += snd-soc-tlv320aic23.o
- obj-$(CONFIG_SND_SOC_TLV320AIC26)     += snd-soc-tlv320aic26.o
- obj-$(CONFIG_SND_SOC_TLV320AIC3X)     += snd-soc-tlv320aic3x.o
-+obj-$(CONFIG_SND_SOC_TWL4030) += snd-soc-twl4030.o
- obj-$(CONFIG_SND_SOC_UDA1380) += snd-soc-uda1380.o
- obj-$(CONFIG_SND_SOC_WM8510)  += snd-soc-wm8510.o
- obj-$(CONFIG_SND_SOC_WM8580)  += snd-soc-wm8580.o
-diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
-index 8b7766b..0daeee4 100644
---- a/sound/soc/omap/Kconfig
-+++ b/sound/soc/omap/Kconfig
-@@ -14,6 +14,14 @@ config SND_OMAP_SOC_N810
-       help
-         Say Y if you want to add support for SoC audio on Nokia N810.
-
-+config SND_OMAP_SOC_OMAP3_BEAGLE
-+      tristate "SoC Audio support for OMAP3 Beagle"
-+      depends on SND_OMAP_SOC && MACH_OMAP3_BEAGLE
-+      select SND_OMAP_SOC_MCBSP
-+      select SND_SOC_TWL4030
-+      help
-+        Say Y if you want to add support for SoC audio on the Beagleboard.
-+
- config SND_OMAP_SOC_OSK5912
-       tristate "SoC Audio support for omap osk5912"
-       depends on SND_OMAP_SOC && MACH_OMAP_OSK
-@@ -21,3 +29,13 @@ config SND_OMAP_SOC_OSK5912
-       select SND_SOC_TLV320AIC23
-       help
-         Say Y if you want to add support for SoC audio on osk5912.
-+
-+config SND_OMAP_SOC_OVERO
-+      tristate "SoC Audio support for Gumstix Overo"
-+      depends on SND_OMAP_SOC && MACH_OVERO
-+      select SND_OMAP_SOC_MCBSP
-+      select SND_SOC_TWL4030
-+      help
-+        Say Y if you want to add support for SoC audio on the Gumstix Overo.
-+
-+
-diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
-index e09d1f2..4bae404 100644
---- a/sound/soc/omap/Makefile
-+++ b/sound/soc/omap/Makefile
-@@ -7,7 +7,12 @@ obj-$(CONFIG_SND_OMAP_SOC_MCBSP) += snd-soc-omap-mcbsp.o
-
- # OMAP Machine Support
- snd-soc-n810-objs := n810.o
-+snd-soc-omap3beagle-objs := omap3beagle.o
- snd-soc-osk5912-objs := osk5912.o
-+snd-soc-overo-objs := overo.o
-
- obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
-+obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
- obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o
-+obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o
-+
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at  http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap/fix-mmc.diff b/packages/linux/linux-omap/fix-mmc.diff
deleted file mode 100644 (file)
index dfc531c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-Oops.. Haven't thought to try it without gpio_cd set up, in which case c->mmc
-is not set initialized.. Please try the following patch:
-
-
-diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c
-index 0ea6ba6..626d668 100644
---- a/arch/arm/mach-omap2/mmc-twl4030.c
-+++ b/arch/arm/mach-omap2/mmc-twl4030.c
-@@ -239,6 +239,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on,
-       u32 reg;
-       int ret = 0;
-       struct twl_mmc_controller *c = &hsmmc[0];
-+      struct omap_mmc_platform_data *mmc = dev->platform_data;
-       if (power_on) {
-               if (cpu_is_omap2430()) {
-@@ -250,7 +251,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on,
-                       omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1);
-               }
--              if (c->mmc->slots[0].internal_clock) {
-+              if (mmc->slots[0].internal_clock) {
-                       reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
-                       reg |= OMAP2_MMCSDIO1ADPCLKISEL;
-                       omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0);
-@@ -293,11 +294,11 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on,
- static int twl_mmc2_set_power(struct device *dev, int slot, int power_on, int vdd)
- {
-       int ret;
--
-       struct twl_mmc_controller *c = &hsmmc[1];
-+      struct omap_mmc_platform_data *mmc = dev->platform_data;
-       if (power_on) {
--              if (c->mmc->slots[0].internal_clock) {
-+              if (mmc->slots[0].internal_clock) {
-                       u32 reg;
-                       reg = omap_ctrl_readl(control_devconf1_offset);
diff --git a/packages/linux/linux-omap/musb-dma-iso-in.eml b/packages/linux/linux-omap/musb-dma-iso-in.eml
deleted file mode 100644 (file)
index 56fc827..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-Fixes blurred capture images in dma mode. Isochronous error field in
-urb and source data buffer pointer were not updated properly in dma
-mode.
-
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
----
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index 08e421f..a481d54 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -1505,10 +1505,29 @@ void musb_host_rx(struct musb *musb, u8 epnum)
-               musb_writew(hw_ep->regs, MUSB_RXCSR, val);
- #ifdef CONFIG_USB_INVENTRA_DMA
-+              if (usb_pipeisoc(pipe)) {
-+                      struct usb_iso_packet_descriptor *d;
-+
-+                      d = urb->iso_frame_desc + qh->iso_idx;
-+                      d->actual_length = xfer_len;
-+
-+                      /* even if there was an error, we did the dma
-+                       * for iso_frame_desc->length
-+                       */
-+                      if (d->status != EILSEQ && d->status != -EOVERFLOW)
-+                              d->status = 0;
-+
-+                      if (++qh->iso_idx >= urb->number_of_packets)
-+                              done = true;
-+                      else
-+                              done = false;
-+
-+              } else  {
-               /* done if urb buffer is full or short packet is recd */
-               done = (urb->actual_length + xfer_len >=
-                               urb->transfer_buffer_length
-                       || dma->actual_len < qh->maxpacket);
-+              }
-               /* send IN token for next packet, without AUTOREQ */
-               if (!done) {
-@@ -1545,7 +1564,8 @@ void musb_host_rx(struct musb *musb, u8 epnum)
-               if (dma) {
-                       struct dma_controller   *c;
-                       u16                     rx_count;
--                      int                     ret;
-+                      int                     ret, length;
-+                      dma_addr_t              buf;
-                       rx_count = musb_readw(epio, MUSB_RXCOUNT);
-@@ -1558,6 +1578,35 @@ void musb_host_rx(struct musb *musb, u8 epnum)
-                       c = musb->dma_controller;
-+                      if (usb_pipeisoc(pipe)) {
-+                              int status = 0;
-+                              struct usb_iso_packet_descriptor *d;
-+
-+                              d = urb->iso_frame_desc + qh->iso_idx;
-+
-+                              if (iso_err) {
-+                                      status = -EILSEQ;
-+                                      urb->error_count++;
-+                              }
-+                              if (rx_count > d->length) {
-+                                      if (status == 0) {
-+                                              status = -EOVERFLOW;
-+                                              urb->error_count++;
-+                                      }
-+                                      DBG(2, "** OVERFLOW %d into %d\n",\
-+                                          rx_count, d->length);
-+
-+                                      length = d->length;
-+                              } else
-+                                      length = rx_count;
-+                              d->status = status;
-+                              buf = urb->transfer_dma + d->offset;
-+                      } else {
-+                              length = rx_count;
-+                              buf = urb->transfer_dma +
-+                                              urb->actual_length;
-+                      }
-+
-                       dma->desired_mode = 0;
- #ifdef USE_MODE1
-                       /* because of the issue below, mode 1 will
-@@ -1569,6 +1618,12 @@ void musb_host_rx(struct musb *musb, u8 epnum)
-                                               urb->actual_length)
-                                       > qh->maxpacket)
-                               dma->desired_mode = 1;
-+                      if (rx_count < hw_ep->max_packet_sz_rx) {
-+                              length = rx_count;
-+                              dma->bDesiredMode = 0;
-+                      } else {
-+                              length = urb->transfer_buffer_length;
-+                      }
- #endif
- /* Disadvantage of using mode 1:
-@@ -1606,12 +1661,7 @@ void musb_host_rx(struct musb *musb, u8 epnum)
-                        */
-                       ret = c->channel_program(
-                               dma, qh->maxpacket,
--                              dma->desired_mode,
--                              urb->transfer_dma
--                                      + urb->actual_length,
--                              (dma->desired_mode == 0)
--                                      ? rx_count
--                                      : urb->transfer_buffer_length);
-+                              dma->desired_mode, buf, length);
-                       if (!ret) {
-                               c->channel_release(dma);
-@@ -1628,19 +1678,6 @@ void musb_host_rx(struct musb *musb, u8 epnum)
-               }
-       }
--      if (dma && usb_pipeisoc(pipe)) {
--              struct usb_iso_packet_descriptor        *d;
--              int                                     iso_stat = status;
--
--              d = urb->iso_frame_desc + qh->iso_idx;
--              d->actual_length += xfer_len;
--              if (iso_err) {
--                      iso_stat = -EILSEQ;
--                      urb->error_count++;
--              }
--              d->status = iso_stat;
--      }
--
- finish:
-       urb->actual_length += xfer_len;
-       qh->offset += xfer_len;
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at  http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap/musb-fix-endpoints.diff b/packages/linux/linux-omap/musb-fix-endpoints.diff
deleted file mode 100644 (file)
index 5d1201f..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-From: Ajay Kumar Gupta <ajay.gupta@ti.com>
-To: linux-usb@vger.kernel.org
-Cc: linux-omap@vger.kernel.org, david-b@pacbell.net, me@felipebalbi.com,
-        Ajay Kumar Gupta <ajay.gupta@ti.com>
-Subject: [PATCH] MUSB: BULK request on different available endpoints
-Date:  Tue,  7 Oct 2008 11:12:24 +0530
-
-Fixes co-working issue of usb serial device with usb/net devices while
-oter endpoints are free and can be used.This patch implements the policy
-that if endpoint resources are available then different BULK request goes
-to different endpoint otherwise they are multiplexed to one reserved
-endpoint as currently done.
-
-NAK limit scheme has to be added for multiplexed BULK request scenario
-to avoid endpoint starvation due to usb/net devices.
-
-musb->periodic[] flag setting is also updated.It use to set this flag for
-an endpoint even when only rx or tx is used.Now flag setting is done on
-rx/tx basis of an endpoint.
-
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
----
- drivers/usb/musb/musb_host.c |   94 ++++++++++++++++++++++++------------------
- drivers/usb/musb/musb_host.h |    1 +
- 2 files changed, 55 insertions(+), 40 deletions(-)
---- /tmp/musb_host.c   2008-10-07 10:10:49.000000000 +0200
-+++ git/drivers/usb/musb/musb_host.c   2008-10-07 10:13:59.000000000 +0200
-@@ -378,27 +378,32 @@
-               switch (qh->type) {
-+              case USB_ENDPOINT_XFER_CONTROL:
-+              case USB_ENDPOINT_XFER_BULK:
-+                      /* fifo policy for these lists, except that NAKing
-+                       * should rotate a qh to the end (for fairness).
-+                       */
-+                      if (qh->mux == 1) {
-+                              head = qh->ring.prev;
-+                              list_del(&qh->ring);
-+                              kfree(qh);
-+                              qh = first_qh(head);
-+                              break;
-+                      }
-               case USB_ENDPOINT_XFER_ISOC:
-               case USB_ENDPOINT_XFER_INT:
-                       /* this is where periodic bandwidth should be
-                        * de-allocated if it's tracked and allocated;
-                        * and where we'd update the schedule tree...
-                        */
--                      musb->periodic[ep->epnum] = NULL;
-+                      if (is_in)
-+                              musb->periodic[2 * ep->epnum - 2] = NULL;
-+                      else
-+                              musb->periodic[2 * ep->epnum - 1] = NULL;
-                       kfree(qh);
-                       qh = NULL;
-                       break;
--              case USB_ENDPOINT_XFER_CONTROL:
--              case USB_ENDPOINT_XFER_BULK:
--                      /* fifo policy for these lists, except that NAKing
--                       * should rotate a qh to the end (for fairness).
--                       */
--                      head = qh->ring.prev;
--                      list_del(&qh->ring);
--                      kfree(qh);
--                      qh = first_qh(head);
--                      break;
-               }
-       }
-       return qh;
-@@ -1728,22 +1733,9 @@
-       u16                     maxpacket;
-       /* use fixed hardware for control and bulk */
--      switch (qh->type) {
--      case USB_ENDPOINT_XFER_CONTROL:
-+      if (qh->type == USB_ENDPOINT_XFER_CONTROL) {
-               head = &musb->control;
-               hw_ep = musb->control_ep;
--              break;
--      case USB_ENDPOINT_XFER_BULK:
--              hw_ep = musb->bulk_ep;
--              if (is_in)
--                      head = &musb->in_bulk;
--              else
--                      head = &musb->out_bulk;
--              break;
--      }
--      if (head) {
--              idle = list_empty(head);
--              list_add_tail(&qh->ring, head);
-               goto success;
-       }
-@@ -1778,7 +1770,8 @@
-       for (epnum = 1; epnum < musb->nr_endpoints; epnum++) {
-               int     diff;
--              if (musb->periodic[epnum])
-+              if ((is_in && musb->periodic[2 * epnum - 2]) ||
-+                      (!is_in && musb->periodic[2 * epnum - 1]))
-                       continue;
-               hw_ep = &musb->endpoints[epnum];
-               if (hw_ep == musb->bulk_ep)
-@@ -1789,19 +1782,36 @@
-               else
-                       diff = hw_ep->max_packet_sz_tx - maxpacket;
--              if (diff > 0 && best_diff > diff) {
-+              if (diff >= 0 && best_diff > diff) {
-                       best_diff = diff;
-                       best_end = epnum;
-               }
-       }
--      if (best_end < 0)
-+      /* use bulk reserved ep1 if no other ep is free*/
-+      if (best_end < 0 && qh->type == USB_ENDPOINT_XFER_BULK) {
-+              hw_ep = musb->bulk_ep;
-+              if (is_in)
-+                      head = &musb->in_bulk;
-+              else
-+                      head = &musb->out_bulk;
-+              goto success;
-+      } else if (best_end < 0)
-               return -ENOSPC;
-       idle = 1;
-+      qh->mux = 0;
-       hw_ep = musb->endpoints + best_end;
--      musb->periodic[best_end] = qh;
--      DBG(4, "qh %p periodic slot %d\n", qh, best_end);
-+      if (is_in)
-+              musb->periodic[2 * best_end - 2] = qh;
-+      else
-+              musb->periodic[2 * best_end - 1] = qh;
-+      DBG(4, "qh %p periodic slot %d%s\n", qh, best_end, is_in ? "Rx" : "Tx");
- success:
-+      if (head) {
-+              idle = list_empty(head);
-+              list_add_tail(&qh->ring, head);
-+              qh->mux = 1;
-+      }
-       qh->hw_ep = hw_ep;
-       qh->hep->hcpriv = qh;
-       if (idle)
-@@ -2065,11 +2075,13 @@
-                       sched = &musb->control;
-                       break;
-               case USB_ENDPOINT_XFER_BULK:
--                      if (usb_pipein(urb->pipe))
--                              sched = &musb->in_bulk;
--                      else
--                              sched = &musb->out_bulk;
--                      break;
-+                      if (qh->mux == 1) {
-+                              if (usb_pipein(urb->pipe))
-+                                      sched = &musb->in_bulk;
-+                              else
-+                                      sched = &musb->out_bulk;
-+                              break;
-+                      }
-               default:
-                       /* REVISIT when we get a schedule tree, periodic
-                        * transfers won't always be at the head of a
-@@ -2131,11 +2143,13 @@
-               sched = &musb->control;
-               break;
-       case USB_ENDPOINT_XFER_BULK:
--              if (is_in)
--                      sched = &musb->in_bulk;
--              else
--                      sched = &musb->out_bulk;
--              break;
-+              if (qh->mux == 1) {
-+                      if (is_in)
-+                              sched = &musb->in_bulk;
-+                      else
-+                              sched = &musb->out_bulk;
-+                      break;
-+              }
-       case USB_ENDPOINT_XFER_ISOC:
-       case USB_ENDPOINT_XFER_INT:
-               for (i = 0; i < musb->nr_endpoints; i++) {
---- /tmp/musb_host.h   2008-10-07 08:59:38.000000000 +0200
-+++ git/drivers/usb/musb/musb_host.h   2008-10-07 10:10:54.000000000 +0200
-@@ -53,7 +53,8 @@
-       struct list_head        ring;           /* of musb_qh */
-       /* struct musb_qh               *next; */       /* for periodic tree */
--
-+      u8          mux;        /* qh multiplexed to hw_ep */
-+      
-       unsigned                offset;         /* in urb->transfer_buffer */
-       unsigned                segsize;        /* current xfer fragment */
diff --git a/packages/linux/linux-omap/musb-fix-multiple-bulk-transfers.diff b/packages/linux/linux-omap/musb-fix-multiple-bulk-transfers.diff
deleted file mode 100644 (file)
index 7435a2e..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-From: Ajay Kumar Gupta <ajay.gupta@ti.com>
-To: linux-usb@vger.kernel.org
-Cc: linux-omap@vger.kernel.org, felipe.balbi@nokia.com,
-Subject: [PATCH] MUSB: Fix for kernel panic with multiple bulk transfer
-Date:  Wed,  1 Oct 2008 13:08:56 +0530
-
-Fixes kernel panic when multiple copy is performed among more than two mass
-storage media and transfer is aborted.musb_advance_schedule(),
-musb_urb_dequeue(),musb_cleanup_urb() and musb_h_disable() functions have
-been modified to correct urb handling associated with bulk and control
-endpoints which are multiplexed on one hardware endpoint.
-
-musb_advance_schedule() has been removed from musb_cleanup_urb() and added
-to musb_urb_dequeue(). musb_h_disable() has been modified to take care of
-multiple qh on same hw_ep scenario.
-
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
-CC: Romit Dasgupta <romit@ti.com> 
----
-Suggestions welcome to move while loop doing kfree(qh) from 
-musb_advance_schedule() and musb_h_disable() to musb_giveback().
-
- drivers/usb/musb/musb_host.c |  105 ++++++++++++++++++++++++++++++-----------
- 1 files changed, 77 insertions(+), 28 deletions(-)
-
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index 8b4be01..c2474de 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -427,8 +427,17 @@ musb_advance_schedule(struct musb *musb, struct urb *urb,
-               qh = musb_giveback(qh, urb, 0);
-       else
-               qh = musb_giveback(qh, urb, urb->status);
-+      while (qh && qh->is_ready && list_empty(&qh->hep->urb_list)) {
-+              struct list_head *head;
-+              head = qh->ring.prev;
-+              list_del(&qh->ring);
-+              qh->hep->hcpriv = NULL;
-+              kfree(qh);
-+              qh = first_qh(head);
-+      }
--      if (qh && qh->is_ready && !list_empty(&qh->hep->urb_list)) {
-+
-+      if (qh && qh->is_ready) {
-               DBG(4, "... next ep%d %cX urb %p\n",
-                               hw_ep->epnum, is_in ? 'R' : 'T',
-                               next_urb(qh));
-@@ -1964,8 +1973,6 @@ static int musb_cleanup_urb(struct urb *urb, struct musb_qh *qh, int is_in)
-               /* flush cpu writebuffer */
-               csr = musb_readw(epio, MUSB_TXCSR);
-       }
--      if (status == 0)
--              musb_advance_schedule(ep->musb, urb, ep, is_in);
-       return status;
- }
-@@ -2026,13 +2033,24 @@ static int musb_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
-       /* NOTE:  qh is invalid unless !list_empty(&hep->urb_list) */
-       if (ret < 0 || (sched && qh != first_qh(sched))) {
-               int     ready = qh->is_ready;
--
-+              int     type = urb->pipe;
-               ret = 0;
-               qh->is_ready = 0;
-               __musb_giveback(musb, urb, 0);
--              qh->is_ready = ready;
--      } else
-+
-+              if (list_empty(&qh->hep->urb_list) && list_empty(&qh->ring))
-+                      list_del(&qh->ring);
-+              else
-+                      qh->is_ready = ready;
-+              if (usb_pipeisoc(type))
-+                      musb->periodic[qh->hw_ep->epnum] = NULL;
-+      } else {
-               ret = musb_cleanup_urb(urb, qh, urb->pipe & USB_DIR_IN);
-+              if (!ret) {
-+                      musb_advance_schedule(qh->hw_ep->musb, urb, qh->hw_ep,
-+                                      urb->pipe & USB_DIR_IN);
-+              }
-+      }
- done:
-       spin_unlock_irqrestore(&musb->lock, flags);
-       return ret;
-@@ -2046,14 +2064,17 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
-       unsigned long           flags;
-       struct musb             *musb = hcd_to_musb(hcd);
-       u8                      is_in = epnum & USB_DIR_IN;
--      struct musb_qh          *qh = hep->hcpriv;
-+      struct musb_qh          *qh, *qh_for_curr_urb;
-       struct urb              *urb, *tmp;
-       struct list_head        *sched;
--
--      if (!qh)
--              return;
-+      int                     i;
-       spin_lock_irqsave(&musb->lock, flags);
-+      qh = hep->hcpriv;
-+      if (!qh) {
-+              spin_unlock_irqrestore(&musb->lock, flags);
-+              return;
-+      }
-       switch (qh->type) {
-       case USB_ENDPOINT_XFER_CONTROL:
-@@ -2065,6 +2086,13 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
-               else
-                       sched = &musb->out_bulk;
-               break;
-+      case USB_ENDPOINT_XFER_ISOC:
-+      case USB_ENDPOINT_XFER_INT:
-+              for (i = 0; i < musb->nr_endpoints; i++) {
-+                      if (musb->periodic[i] == qh)
-+                              sched = &qh->ring;
-+                      break;
-+              }
-       default:
-               /* REVISIT when we get a schedule tree, periodic transfers
-                * won't always be at the head of a singleton queue...
-@@ -2073,26 +2101,47 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
-               break;
-       }
--      /* NOTE:  qh is invalid unless !list_empty(&hep->urb_list) */
--
-       /* kick first urb off the hardware, if needed */
--      qh->is_ready = 0;
--      if (!sched || qh == first_qh(sched)) {
-+      if (sched) {
-+              qh_for_curr_urb = qh;
-               urb = next_urb(qh);
--
--              /* make software (then hardware) stop ASAP */
--              if (!urb->unlinked)
--                      urb->status = -ESHUTDOWN;
--
--              /* cleanup */
--              musb_cleanup_urb(urb, qh, urb->pipe & USB_DIR_IN);
--      } else
--              urb = NULL;
--
--      /* then just nuke all the others */
--      list_for_each_entry_safe_from(urb, tmp, &hep->urb_list, urb_list)
--              musb_giveback(qh, urb, -ESHUTDOWN);
--
-+              if (urb) {
-+                      /* make software (then hardware) stop ASAP */
-+                      if (!urb->unlinked)
-+                              urb->status = -ESHUTDOWN;
-+                      /* cleanup first urb of first qh; */
-+                      if (qh == first_qh(sched)) {
-+                              musb_cleanup_urb(urb, qh,
-+                                      urb->pipe & USB_DIR_IN);
-+                      }
-+                      qh = musb_giveback(qh, urb, -ESHUTDOWN);
-+                      if (qh == qh_for_curr_urb) {
-+                              list_for_each_entry_safe_from(urb, tmp,
-+                                      &hep->urb_list, urb_list) {
-+                                      qh = musb_giveback(qh, tmp, -ESHUTDOWN);
-+                                      if (qh != qh_for_curr_urb)
-+                                              break;
-+                              }
-+                      }
-+              }
-+              /* pick the next candidate and go */
-+              if (qh && qh->is_ready) {
-+                      while (qh && qh->is_ready &&
-+                              list_empty(&qh->hep->urb_list)) {
-+                                      struct list_head *head;
-+                                      head = qh->ring.prev;
-+                                      list_del(&qh->ring);
-+                                      qh->hep->hcpriv = NULL;
-+                                      kfree(qh);
-+                                      qh = first_qh(head);
-+                      }
-+                      if (qh && qh->is_ready) {
-+                              epnum = qh->hep->desc.bEndpointAddress;
-+                              is_in = epnum & USB_DIR_IN;
-+                              musb_start_urb(musb, is_in, qh);
-+                      }
-+              }
-+      }
-       spin_unlock_irqrestore(&musb->lock, flags);
- }
--- 
-1.5.6
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at  http://vger.kernel.org/majordomo-info.html
index c6c0dbb..76bf666 100644 (file)
@@ -6,9 +6,9 @@ KERNEL_IMAGETYPE = "uImage"
 COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard|omap3evm"
 
 
-SRCREV = "5ecf98b76fa95078277c9037bb01640fd3de5e2c"
+SRCREV = "3b7de4be879f1f4f55ae59882a5cbd80f6dcf0f0"
 
-PV = "2.6.27+2.6.28-rc4+${PR}+gitr${SRCREV}"
+PV = "2.6.27+2.6.28-rc6+${PR}+gitr${SRCREV}"
 #PV = "2.6.27+${PR}+gitr${SRCREV}"
 PR = "r1"
 
@@ -20,7 +20,6 @@ SRC_URI_append = " \
            file://no-cortex-deadlock.patch;patch=1 \
            file://read_die_ids.patch;patch=1 \
            file://fix-install.patch;patch=1 \
-           file://musb-dma-iso-in.eml;patch=1 \
            file://musb-support-high-bandwidth.patch.eml;patch=1 \
            file://mru-fix-timings.diff;patch=1 \
            file://mru-fix-display-panning.diff;patch=1 \
@@ -29,8 +28,6 @@ SRC_URI_append = " \
            file://mru-improve-pixclock-config.diff;patch=1 \
            file://mru-make-video-timings-selectable.diff;patch=1 \
            file://mru-enable-overlay-optimalization.diff;patch=1 \
-           file://musb-fix-multiple-bulk-transfers.diff;patch=1 \
-           file://musb-fix-endpoints.diff;patch=1 \
            file://dvb-fix-dma.diff;patch=1 \
            file://0001-Removed-resolution-check-that-prevents-scaling-when.patch;patch=1 \
            file://0001-Implement-downsampling-with-debugs.patch;patch=1 \
@@ -43,8 +40,6 @@ SRC_URI_append = " \
            file://0009-DSS-Sharp-LS037V7DW01-LCD-Panel-driver.patch;patch=1 \
            file://0010-DSS-Support-for-OMAP3-SDP-board.patch;patch=1 \
            file://0011-DSS-Support-for-OMAP3-EVM-board.patch;patch=1 \
-#           file://fix-asoc.diff;patch=1 \
-           file://fix-mmc.diff;patch=1 \
                   http://www.bat.org/~tomba/git/0001-DSS-OMAPFB-Check-that-var-pixclock-is-not-zero.patch;patch=1 \
 "
 
@@ -54,7 +49,6 @@ SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \
 
 SRC_URI_append_omap3evm = " \
        file://evm-mcspi-ts.diff;patch=1 \
-#      file://omap3evm-lcd-redtint.diff;patch=1 \
 "
 
 S = "${WORKDIR}/git"