diff options
6 files changed, 105 insertions, 19 deletions
diff --git a/conf/machine/include/omap3.inc b/conf/machine/include/omap3.inc index f6cf895c52..4e95fb15e4 100644 --- a/conf/machine/include/omap3.inc +++ b/conf/machine/include/omap3.inc @@ -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 index 0000000000..dc6e190e89 --- /dev/null +++ b/recipes/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch @@ -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 + diff --git a/recipes/linux/linux-omap-2.6.29/beagleboard/defconfig b/recipes/linux/linux-omap-2.6.29/beagleboard/defconfig index eb36c0d481..fcbe27c803 100644 --- a/recipes/linux/linux-omap-2.6.29/beagleboard/defconfig +++ b/recipes/linux/linux-omap-2.6.29/beagleboard/defconfig @@ -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 diff --git a/recipes/linux/linux-omap-2.6.29/isp/standalone/0001-Resizer-and-Previewer-driver-added-to-commit.patch b/recipes/linux/linux-omap-2.6.29/isp/standalone/0001-Resizer-and-Previewer-driver-added-to-commit.patch index 77b273c789..f796ce8346 100644 --- a/recipes/linux/linux-omap-2.6.29/isp/standalone/0001-Resizer-and-Previewer-driver-added-to-commit.patch +++ b/recipes/linux/linux-omap-2.6.29/isp/standalone/0001-Resizer-and-Previewer-driver-added-to-commit.patch @@ -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 { diff --git a/recipes/linux/linux-omap-2.6.29/isp/standalone/0002-Resizer-bug-fixes-on-top-of-1.0.2-release.patch b/recipes/linux/linux-omap-2.6.29/isp/standalone/0002-Resizer-bug-fixes-on-top-of-1.0.2-release.patch index e14da9986a..631b05f417 100644 --- a/recipes/linux/linux-omap-2.6.29/isp/standalone/0002-Resizer-bug-fixes-on-top-of-1.0.2-release.patch +++ b/recipes/linux/linux-omap-2.6.29/isp/standalone/0002-Resizer-bug-fixes-on-top-of-1.0.2-release.patch @@ -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 { diff --git a/recipes/linux/linux-omap_2.6.29.bb b/recipes/linux/linux-omap_2.6.29.bb index 6300e0d708..23768690c6 100644 --- a/recipes/linux/linux-omap_2.6.29.bb +++ b/recipes/linux/linux-omap_2.6.29.bb @@ -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 \ " |