linux-omap 2.6.29: fixes
authorKoen Kooi <koen@openembedded.org>
Mon, 6 Apr 2009 13:21:25 +0000 (15:21 +0200)
committerKoen Kooi <koen@openembedded.org>
Mon, 6 Apr 2009 13:39:24 +0000 (15:39 +0200)
* add patch to fix leds
* tweak ISP patches to handle new API
* tweak beagleboard defconfig

conf/machine/include/omap3.inc
recipes/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch [new file with mode: 0644]
recipes/linux/linux-omap-2.6.29/beagleboard/defconfig
recipes/linux/linux-omap-2.6.29/isp/standalone/0001-Resizer-and-Previewer-driver-added-to-commit.patch
recipes/linux/linux-omap-2.6.29/isp/standalone/0002-Resizer-bug-fixes-on-top-of-1.0.2-release.patch
recipes/linux/linux-omap_2.6.29.bb

index f6cf895..4e95fb1 100644 (file)
@@ -1,6 +1,6 @@
 require conf/machine/include/tune-cortexa8.inc
 PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
-MACHINE_KERNEL_PR = "r20
+MACHINE_KERNEL_PR = "r21
 
 KERNEL_IMAGETYPE = "uImage"
 
diff --git a/recipes/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch b/recipes/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch
new file mode 100644 (file)
index 0000000..dc6e190
--- /dev/null
@@ -0,0 +1,79 @@
+From c810e850d830330cf04225a4cff8e981e153f269 Mon Sep 17 00:00:00 2001
+From: David Brownell <david-b@pacbell.net>
+Date: Mon, 23 Feb 2009 14:08:14 -0800
+Subject: [PATCH 124/133] leds-gpio broken with current git?
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: 8bit
+
+On Monday 23 February 2009, David Brownell wrote:
+>
+> > Perhaps something broke with Tony's RC1 merge?
+> > The LEDs are broken for me as well.
+>
+> Still works for me. Â Did you maybe not enable the twl4030
+> GPIO support in Kconfig?
+
+Oh, and if you did *not*, please give this patch a try.
+I've been meaning to test it.
+
+- Dave
+
+==============
+Sometimes it's awkward to make sure that the array in the
+platform_data handed to the leds-gpio driver has only valid
+data ... some leds may not be always available, and coping
+with that currently requires patching or rebuilding the array.
+
+This patch fixes that by making it be OK to pass an invalid
+GPIO (such as "-EINVAL") ... such table entries are skipped.
+---
+ drivers/leds/leds-gpio.c |   12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
+index b13bd29..83737e6 100644
+--- a/drivers/leds/leds-gpio.c
++++ b/drivers/leds/leds-gpio.c
+@@ -90,13 +90,19 @@ static int gpio_led_probe(struct platform_device *pdev)
+               cur_led = &pdata->leds[i];
+               led_dat = &leds_data[i];
++              /* skip leds that aren't available */
++              led_dat->gpio = cur_led->gpio;
++              if (!gpio_is_valid(led_dat->gpio)) {
++                      dev_dbg(&pdev->dev, "skipping %s\n", cur_led->name);
++                      continue;
++              }
++
+               ret = gpio_request(cur_led->gpio, cur_led->name);
+               if (ret < 0)
+                       goto err;
+               led_dat->cdev.name = cur_led->name;
+               led_dat->cdev.default_trigger = cur_led->default_trigger;
+-              led_dat->gpio = cur_led->gpio;
+               led_dat->can_sleep = gpio_cansleep(cur_led->gpio);
+               led_dat->active_low = cur_led->active_low;
+               if (pdata->gpio_blink_set) {
+@@ -124,6 +130,8 @@ static int gpio_led_probe(struct platform_device *pdev)
+ err:
+       if (i > 0) {
+               for (i = i - 1; i >= 0; i--) {
++                      if (!gpio_is_valid(leds_data[i].gpio))
++                              continue;
+                       led_classdev_unregister(&leds_data[i].cdev);
+                       cancel_work_sync(&leds_data[i].work);
+                       gpio_free(leds_data[i].gpio);
+@@ -144,6 +152,8 @@ static int __devexit gpio_led_remove(struct platform_device *pdev)
+       leds_data = platform_get_drvdata(pdev);
+       for (i = 0; i < pdata->num_leds; i++) {
++              if (!gpio_is_valid(leds_data[i].gpio))
++                      continue;
+               led_classdev_unregister(&leds_data[i].cdev);
+               cancel_work_sync(&leds_data[i].work);
+               gpio_free(leds_data[i].gpio);
+-- 
+1.6.0.4.790.gaa14a
+
index eb36c0d..fcbe27c 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.29-omap1
-# Sat Apr  4 14:17:07 2009
+# Mon Apr  6 15:31:26 2009
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -200,6 +200,7 @@ CONFIG_OMAP_BOOT_REASON=y
 # CONFIG_OMAP_MUX is not set
 CONFIG_OMAP_MCBSP=y
 # CONFIG_OMAP_MBOX_FWK is not set
+# CONFIG_OMAP_IOMMU is not set
 # CONFIG_OMAP_MPU_TIMER is not set
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER_HZ=128
@@ -1157,6 +1158,7 @@ CONFIG_VIDEO_CX2341X=m
 # CONFIG_VIDEO_SAA5246A is not set
 # CONFIG_VIDEO_SAA5249 is not set
 # CONFIG_VIDEO_AU0828 is not set
+# CONFIG_VIDEO_OMAP3 is not set
 # CONFIG_SOC_CAMERA is not set
 CONFIG_V4L_USB_DRIVERS=y
 CONFIG_USB_VIDEO_CLASS=m
@@ -1392,7 +1394,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
 # CONFIG_FB_MB862XX is not set
 # CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
 CONFIG_OMAP2_DSS=y
-CONFIG_OMAP2_DSS_VRAM_SIZE=4
+CONFIG_OMAP2_DSS_VRAM_SIZE=14
 CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
 # CONFIG_OMAP2_DSS_RFBI is not set
 CONFIG_OMAP2_DSS_VENC=y
@@ -1467,7 +1469,7 @@ CONFIG_SND_DRIVERS=y
 # CONFIG_SND_MTPAV is not set
 # CONFIG_SND_SERIAL_U16550 is not set
 # CONFIG_SND_MPU401 is not set
-CONFIG_SND_ARM=y
+# CONFIG_SND_ARM is not set
 CONFIG_SND_SPI=y
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=y
@@ -1475,8 +1477,11 @@ CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_SOC=y
 CONFIG_SND_OMAP_SOC=y
+CONFIG_SND_OMAP_SOC_MCBSP=y
+CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y
 CONFIG_SND_SOC_I2C_AND_SPI=y
 # CONFIG_SND_SOC_ALL_CODECS is not set
+CONFIG_SND_SOC_TWL4030=y
 # CONFIG_SOUND_PRIME is not set
 CONFIG_HID_SUPPORT=y
 CONFIG_HID=y
@@ -1733,6 +1738,7 @@ CONFIG_USB_OTG_UTILS=y
 CONFIG_USB_GPIO_VBUS=y
 # CONFIG_ISP1301_OMAP is not set
 CONFIG_TWL4030_USB=y
+# CONFIG_NOP_USB_XCEIV is not set
 CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
 CONFIG_MMC_UNSAFE_RESUME=y
index 77b273c..f796ce8 100644 (file)
@@ -443,7 +443,7 @@ index 0000000..634a056
 +      wait_for_completion_interruptible(&device->wfc);
 +
 +      if (device->isp_addr_read) {
-+              ispmmu_unmap(device->isp_addr_read);
++              ispmmu_vunmap(device->isp_addr_read);
 +              device->isp_addr_read = 0;
 +      }
 +
@@ -465,7 +465,7 @@ index 0000000..634a056
 +      struct prev_fh *fh = q->priv_data;
 +      struct prev_device *device = fh->device;
 +
-+      ispmmu_unmap(device->isp_addr_read);
++      ispmmu_vunmap(device->isp_addr_read);
 +      device->isp_addr_read = 0;
 +      spin_lock(&device->vbq_lock);
 +      vb->state = VIDEOBUF_NEEDS_INIT;
@@ -550,7 +550,7 @@ index 0000000..634a056
 +      if (vb->state == VIDEOBUF_NEEDS_INIT) {
 +              err = videobuf_iolock(q, vb, NULL);
 +              if (!err) {
-+                      isp_addr = ispmmu_map_sg(dma->sglist, dma->sglen);
++                      isp_addr = ispmmu_vmap(dma->sglist, dma->sglen);
 +                      if (!isp_addr)
 +                              err = -EIO;
 +                      else
@@ -1450,11 +1450,11 @@ index 0000000..54bc425
 +      }
 +
 +      if (fh->isp_addr_read) {
-+              ispmmu_unmap(fh->isp_addr_read);
++              ispmmu_vunmap(fh->isp_addr_read);
 +              fh->isp_addr_read = 0;
 +      }
 +      if (fh->isp_addr_write) {
-+              ispmmu_unmap(fh->isp_addr_write);
++              ispmmu_vunmap(fh->isp_addr_write);
 +              fh->isp_addr_write = 0;
 +      }
 +
@@ -2128,8 +2128,8 @@ index 0000000..54bc425
 +              videobuf_dma_free(dma);
 +      }
 +
-+      ispmmu_unmap(fh->isp_addr_read);
-+      ispmmu_unmap(fh->isp_addr_write);
++      ispmmu_vunmap(fh->isp_addr_read);
++      ispmmu_vunmap(fh->isp_addr_write);
 +      fh->isp_addr_read = 0;
 +      fh->isp_addr_write = 0;
 +      spin_lock(&fh->vbq_lock);
@@ -2231,7 +2231,7 @@ index 0000000..54bc425
 +      if (vb->state == VIDEOBUF_NEEDS_INIT) {
 +              err = videobuf_iolock(q, vb, NULL);
 +              if (!err) {
-+                      isp_addr = ispmmu_map_sg(dma->sglist, dma->sglen);
++                      isp_addr = ispmmu_vmap(dma->sglist, dma->sglen);
 +                      if (!isp_addr)
 +                              err = -EIO;
 +                      else {
index e14da99..631b05f 100644 (file)
@@ -125,11 +125,11 @@ index 54bc425..8059c70 100644
        }
  
 -      if (fh->isp_addr_read) {
--              ispmmu_unmap(fh->isp_addr_read);
+-              ispmmu_vunmap(fh->isp_addr_read);
 -              fh->isp_addr_read = 0;
 -      }
 -      if (fh->isp_addr_write) {
--              ispmmu_unmap(fh->isp_addr_write);
+-              ispmmu_vunmap(fh->isp_addr_write);
 -              fh->isp_addr_write = 0;
 -      }
 -
@@ -270,11 +270,11 @@ index 54bc425..8059c70 100644
 +      dma = videobuf_to_dma(q->bufs[vb->i]);
 +      videobuf_dma_unmap(q, dma);
 +      videobuf_dma_free(dma);
-+      ispmmu_unmap(fh->config->buf_address[vb->i]);
++      ispmmu_vunmap(fh->config->buf_address[vb->i]);
 +      fh->config->buf_address[vb->i] = 0;
  
--      ispmmu_unmap(fh->isp_addr_read);
--      ispmmu_unmap(fh->isp_addr_write);
+-      ispmmu_vunmap(fh->isp_addr_read);
+-      ispmmu_vunmap(fh->isp_addr_write);
 -      fh->isp_addr_read = 0;
 -      fh->isp_addr_write = 0;
        spin_lock(&fh->vbq_lock);
@@ -429,7 +429,7 @@ index 54bc425..8059c70 100644
        if (vb->state == VIDEOBUF_NEEDS_INIT) {
 -              err = videobuf_iolock(q, vb, NULL);
 -              if (!err) {
--                      isp_addr = ispmmu_map_sg(dma->sglist, dma->sglen);
+-                      isp_addr = ispmmu_vmap(dma->sglist, dma->sglen);
 -                      if (!isp_addr)
 -                              err = -EIO;
 -                      else {
@@ -491,7 +491,7 @@ index 54bc425..8059c70 100644
 +                              goto buf_release;
 +                      spin_unlock(&fh->vbq_lock);
 +              }
-+              isp_addr = ispmmu_map_sg(dma->sglist, dma->sglen);
++              isp_addr = ispmmu_vmap(dma->sglist, dma->sglen);
 +              if (!isp_addr)
 +                      err = -EIO;
 +              else {
index 6300e0d..2376869 100644 (file)
@@ -94,6 +94,7 @@ SRC_URI_append = " \
 #           file://isp/base/0001-omap3-Add-base-address-definitions-and-resources-fo.patch;patch=1 \
 #           file://isp/standalone/0001-Resizer-and-Previewer-driver-added-to-commit.patch;patch=1 \
 #           file://isp/standalone/0002-Resizer-bug-fixes-on-top-of-1.0.2-release.patch;patch=1 \
+           file://0124-leds-gpio-broken-with-current-git.patch;patch=1 \
 "