linux-omap 2.6.29: update support for the ISP resizer
authorKoen Kooi <koen@openembedded.org>
Thu, 16 Jul 2009 14:06:44 +0000 (16:06 +0200)
committerKoen Kooi <koen@openembedded.org>
Thu, 16 Jul 2009 14:06:44 +0000 (16:06 +0200)
conf/machine/include/omap3.inc
recipes/linux/linux-omap-2.6.29/beagleboard/defconfig
recipes/linux/linux-omap-2.6.29/isp/base/0001-omap3-Add-base-address-definitions-and-resources-fo.patch [deleted file]
recipes/linux/linux-omap-2.6.29/isp/resizer/0023-OMAP-Resizer-Basic-Resizer-refreshed-with-latest-gi.patch [moved from recipes/linux/linux-omap-2.6.29/isp/standalone/0001-Resizer-and-Previewer-driver-added-to-commit.patch with 62% similarity]
recipes/linux/linux-omap-2.6.29/isp/resizer/0024-OMAP3-Resizer-V4L2-buf-layer-issues-fixed.patch [moved from recipes/linux/linux-omap-2.6.29/isp/standalone/0002-Resizer-bug-fixes-on-top-of-1.0.2-release.patch with 96% similarity]
recipes/linux/linux-omap-2.6.29/isp/resizer/0025-OMAP3-Resizer-Build-issues-fixed.patch [new file with mode: 0644]
recipes/linux/linux-omap_2.6.29.bb

index ea395b4..9c3c8f5 100644 (file)
@@ -1,7 +1,7 @@
 require conf/machine/include/tune-cortexa8.inc
 PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
 # Increase this everytime you change something in the kernel
-MACHINE_KERNEL_PR = "r39
+MACHINE_KERNEL_PR = "r40
 
 KERNEL_IMAGETYPE = "uImage"
 
index 1aa7cf5..99be524 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.29-omap1
-# Fri May 29 14:47:52 2009
+# Thu Jul 16 15:21:36 2009
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -32,6 +32,7 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 #
 CONFIG_EXPERIMENTAL=y
 CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
@@ -189,8 +190,7 @@ CONFIG_ARCH_OMAP3=y
 #
 # CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
 # CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
-CONFIG_OMAP_SMARTREFLEX=y
-# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
+# CONFIG_OMAP_SMARTREFLEX is not set
 CONFIG_OMAP_RESET_CLOCKS=y
 CONFIG_OMAP_BOOT_TAG=y
 CONFIG_OMAP_BOOT_REASON=y
@@ -199,7 +199,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_IOMMU=y
 # CONFIG_OMAP_MPU_TIMER is not set
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER_HZ=128
@@ -217,9 +217,9 @@ CONFIG_ARCH_OMAP3430=y
 # CONFIG_MACH_NOKIA_RX51 is not set
 # CONFIG_MACH_OMAP_LDP is not set
 # CONFIG_MACH_OMAP_3430SDP is not set
-# CONFIG_MACH_OMAP3EVM is not set
+CONFIG_MACH_OMAP3EVM=y
 CONFIG_MACH_OMAP3_BEAGLE=y
-# CONFIG_MACH_OVERO is not set
+CONFIG_MACH_OVERO=y
 # CONFIG_MACH_OMAP3_PANDORA is not set
 
 #
@@ -268,7 +268,7 @@ CONFIG_VMSPLIT_3G=y
 # CONFIG_VMSPLIT_2G is not set
 # CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT=y
 CONFIG_HZ=128
 CONFIG_AEABI=y
 # CONFIG_OABI_COMPAT is not set
@@ -1034,8 +1034,43 @@ CONFIG_MACVLAN=m
 CONFIG_EQUALIZER=m
 CONFIG_TUN=m
 CONFIG_VETH=m
-# CONFIG_NET_ETHERNET is not set
+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_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_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
 CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_ENC28J60 is not set
+CONFIG_SMC911X=y
+CONFIG_SMSC911X=y
+# 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_NETDEV_1000 is not set
 # CONFIG_NETDEV_10000 is not set
 
@@ -1471,6 +1506,7 @@ CONFIG_MEDIA_TUNER_MXL5005S=m
 CONFIG_VIDEO_V4L2=m
 CONFIG_VIDEO_V4L1=m
 CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
 CONFIG_VIDEOBUF_VMALLOC=m
 CONFIG_VIDEOBUF_DVB=m
 CONFIG_VIDEO_IR=m
@@ -1494,7 +1530,8 @@ CONFIG_VIDEO_VIVI=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_VIDEO_OMAP3=m
+CONFIG_VIDEO_OMAP34XX_ISP_RESIZER=m
 # CONFIG_SOC_CAMERA is not set
 CONFIG_V4L_USB_DRIVERS=y
 CONFIG_USB_VIDEO_CLASS=m
@@ -1818,6 +1855,7 @@ 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_OVERO is not set
 CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y
 CONFIG_SND_SOC_I2C_AND_SPI=y
 # CONFIG_SND_SOC_ALL_CODECS is not set
@@ -2514,6 +2552,7 @@ CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_DEBUG_SLAB 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
@@ -2551,6 +2590,7 @@ CONFIG_TRACING=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_CONTEXT_SWITCH_TRACER is not set
 # CONFIG_BOOT_TRACER is not set
diff --git a/recipes/linux/linux-omap-2.6.29/isp/base/0001-omap3-Add-base-address-definitions-and-resources-fo.patch b/recipes/linux/linux-omap-2.6.29/isp/base/0001-omap3-Add-base-address-definitions-and-resources-fo.patch
deleted file mode 100644 (file)
index 902f879..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-From 742cc1e62f0d04333c51630f3020da000aeb6de1 Mon Sep 17 00:00:00 2001
-From: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
-Date: Mon, 2 Mar 2009 19:36:26 +0200
-Subject: [PATCH] omap3: Add base address definitions and resources for OMAP 3 ISP
-
-This replaces earlier patch from Sergio Aguirre titled "[REVIEW PATCH 03/14]
-OMAP34XX: CAM: Resources fixes".
-
-Signed-off-by: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
----
- arch/arm/mach-omap2/devices.c              |   66 ++++++++++++++++++++++++---
- arch/arm/plat-omap/include/mach/omap34xx.h |   28 +++++++++++-
- 2 files changed, 85 insertions(+), 9 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
-index dad4528..2568b0c 100644
---- a/arch/arm/mach-omap2/devices.c
-+++ b/arch/arm/mach-omap2/devices.c
-@@ -56,10 +56,60 @@ static inline void omap_init_camera(void)
- #elif defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE)
--static struct resource cam_resources[] = {
-+static struct resource omap3isp_resources[] = {
-+      {
-+              .start          = OMAP3430_ISP_BASE,
-+              .end            = OMAP3430_ISP_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_CBUFF_BASE,
-+              .end            = OMAP3430_ISP_CBUFF_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_CCP2_BASE,
-+              .end            = OMAP3430_ISP_CCP2_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-       {
--              .start          = OMAP34XX_CAMERA_BASE,
--              .end            = OMAP34XX_CAMERA_BASE + 0x1B70,
-+              .start          = OMAP3430_ISP_CCDC_BASE,
-+              .end            = OMAP3430_ISP_CCDC_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_HIST_BASE,
-+              .end            = OMAP3430_ISP_HIST_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_H3A_BASE,
-+              .end            = OMAP3430_ISP_H3A_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_PREV_BASE,
-+              .end            = OMAP3430_ISP_PREV_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_RESZ_BASE,
-+              .end            = OMAP3430_ISP_RESZ_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_SBL_BASE,
-+              .end            = OMAP3430_ISP_SBL_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_CSI2A_BASE,
-+              .end            = OMAP3430_ISP_CSI2A_END,
-+              .flags          = IORESOURCE_MEM,
-+      },
-+      {
-+              .start          = OMAP3430_ISP_CSI2PHY_BASE,
-+              .end            = OMAP3430_ISP_CSI2PHY_END,
-               .flags          = IORESOURCE_MEM,
-       },
-       {
-@@ -68,16 +118,16 @@ static struct resource cam_resources[] = {
-       }
- };
--static struct platform_device omap_cam_device = {
--      .name           = "omap34xxcam",
-+static struct platform_device omap3isp_device = {
-+      .name           = "omap3isp",
-       .id             = -1,
--      .num_resources  = ARRAY_SIZE(cam_resources),
--      .resource       = cam_resources,
-+      .num_resources  = ARRAY_SIZE(omap3isp_resources),
-+      .resource       = omap3isp_resources,
- };
- static inline void omap_init_camera(void)
- {
--      platform_device_register(&omap_cam_device);
-+      platform_device_register(&omap3isp_device);
- }
- #else
- static inline void omap_init_camera(void)
-diff --git a/arch/arm/plat-omap/include/mach/omap34xx.h b/arch/arm/plat-omap/include/mach/omap34xx.h
-index 27a1e45..3bfbdf7 100644
---- a/arch/arm/plat-omap/include/mach/omap34xx.h
-+++ b/arch/arm/plat-omap/include/mach/omap34xx.h
-@@ -49,6 +49,33 @@
- #define OMAP343X_CTRL_BASE    OMAP343X_SCM_BASE
- #define OMAP34XX_IC_BASE      0x48200000
-+
-+#define OMAP3430_ISP_BASE             (L4_34XX_BASE + 0xBC000)
-+#define OMAP3430_ISP_CBUFF_BASE               (OMAP3430_ISP_BASE + 0x0100)
-+#define OMAP3430_ISP_CCP2_BASE                (OMAP3430_ISP_BASE + 0x0400)
-+#define OMAP3430_ISP_CCDC_BASE                (OMAP3430_ISP_BASE + 0x0600)
-+#define OMAP3430_ISP_HIST_BASE                (OMAP3430_ISP_BASE + 0x0A00)
-+#define OMAP3430_ISP_H3A_BASE         (OMAP3430_ISP_BASE + 0x0C00)
-+#define OMAP3430_ISP_PREV_BASE                (OMAP3430_ISP_BASE + 0x0E00)
-+#define OMAP3430_ISP_RESZ_BASE                (OMAP3430_ISP_BASE + 0x1000)
-+#define OMAP3430_ISP_SBL_BASE         (OMAP3430_ISP_BASE + 0x1200)
-+#define OMAP3430_ISP_MMU_BASE         (OMAP3430_ISP_BASE + 0x1400)
-+#define OMAP3430_ISP_CSI2A_BASE               (OMAP3430_ISP_BASE + 0x1800)
-+#define OMAP3430_ISP_CSI2PHY_BASE     (OMAP3430_ISP_BASE + 0x1970)
-+
-+#define OMAP3430_ISP_END              (OMAP3430_ISP_BASE         + 0x06F)
-+#define OMAP3430_ISP_CBUFF_END                (OMAP3430_ISP_CBUFF_BASE   + 0x077)
-+#define OMAP3430_ISP_CCP2_END         (OMAP3430_ISP_CCP2_BASE    + 0x1EF)
-+#define OMAP3430_ISP_CCDC_END         (OMAP3430_ISP_CCDC_BASE    + 0x0A7)
-+#define OMAP3430_ISP_HIST_END         (OMAP3430_ISP_HIST_BASE    + 0x047)
-+#define OMAP3430_ISP_H3A_END          (OMAP3430_ISP_H3A_BASE     + 0x05F)
-+#define OMAP3430_ISP_PREV_END         (OMAP3430_ISP_PREV_BASE    + 0x09F)
-+#define OMAP3430_ISP_RESZ_END         (OMAP3430_ISP_RESZ_BASE    + 0x0AB)
-+#define OMAP3430_ISP_SBL_END          (OMAP3430_ISP_SBL_BASE     + 0x0FB)
-+#define OMAP3430_ISP_MMU_END          (OMAP3430_ISP_MMU_BASE     + 0x06F)
-+#define OMAP3430_ISP_CSI2A_END                (OMAP3430_ISP_CSI2A_BASE   + 0x16F)
-+#define OMAP3430_ISP_CSI2PHY_END      (OMAP3430_ISP_CSI2PHY_BASE + 0x007)
-+
- #define OMAP34XX_IVA_INTC_BASE        0x40000000
- #define OMAP34XX_HSUSB_OTG_BASE       (L4_34XX_BASE + 0xAB000)
- #define OMAP34XX_HSUSB_HOST_BASE      (L4_34XX_BASE + 0x64000)
-@@ -56,7 +83,6 @@
- #define OMAP34XX_SR1_BASE     0x480C9000
- #define OMAP34XX_SR2_BASE     0x480CB000
--#define OMAP34XX_CAMERA_BASE          (L4_34XX_BASE + 0xBC000)
- #define OMAP34XX_MAILBOX_BASE         (L4_34XX_BASE + 0x94000)
--- 
-1.5.6.5
-
@@ -1,99 +1,97 @@
-From 3041daa54b49bcb6ab444c7b9e14bc6a1ade6236 Mon Sep 17 00:00:00 2001
-From: Vaibhav Hiremath <hvaibhav@ti.com>
-Date: Fri, 13 Feb 2009 14:44:20 +0530
-Subject: [PATCH 1/2] Resizer and Previewer driver added to commit
+From 38f3cd5564a466e5251fc2ff47e0504148922304 Mon Sep 17 00:00:00 2001
+From: Vaibhav Hiremath <vaibhav@psp-nfs-02.india.ti.com>
+Date: Wed, 29 Apr 2009 17:18:56 +0530
+Subject: [PATCH 23/26] OMAP-Resizer: Basic Resizer refreshed with latest gitorious tree
 
-The Resizer and Previewer driver added to the commit
-from the patch submitted by Sergio on 12 Dec 2008.
+This is same resizer driver patch posted by Sergio onto
+mailing list quite a some time back. This commit refreshes
+the same patch on top of latest gitorious.org tree.
 
-The new WTBU code base and Nokia fixes package doesn't contain
-standalone resizer driver support.
+List of New/Modified files:
+ modified:   drivers/media/video/Kconfig
+ modified:   drivers/media/video/isp/Makefile
+ modified:   drivers/media/video/isp/isp.c
+ modified:   drivers/media/video/isp/ispreg.h
+ new file:   drivers/media/video/isp/omap_resizer.c
+ new file:   include/linux/omap_resizer.h
 
-Following major changes done -
-
-       - Added stand-alone resizer driver support
-         in isp.c file.
-       - Seperate Kconfig file created
-       - hardware access of resizer module fixed as per new
-         isp.c
-
-Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
+TODO:
+ - Resizer driver needs to be independent from camera and ISP
+ - Custom patches implemented ontop of PSP1.0.2 release
+   to fix some V4L2-buf layer issues.
+ -
 ---
- drivers/media/video/Kconfig              |    5 +-
- drivers/media/video/isp/Kconfig          |   16 +
- drivers/media/video/isp/Makefile         |    7 +
- drivers/media/video/isp/isp.c            |   12 +
- drivers/media/video/isp/ispmmu.c         |    1 +
- drivers/media/video/isp/omap_previewer.c |  825 +++++++++++++++
- drivers/media/video/isp/omap_previewer.h |  162 +++
- drivers/media/video/isp/omap_resizer.c   | 1634 ++++++++++++++++++++++++++++++
- include/linux/omap_resizer.h             |  136 +++
- 9 files changed, 2794 insertions(+), 4 deletions(-)
- create mode 100644 drivers/media/video/isp/Kconfig
- create mode 100644 drivers/media/video/isp/omap_previewer.c
- create mode 100644 drivers/media/video/isp/omap_previewer.h
+ drivers/media/video/Kconfig            |    7 +
+ drivers/media/video/isp/Makefile       |    4 +
+ drivers/media/video/isp/isp.c          |   15 +
+ drivers/media/video/isp/omap_resizer.c | 1634 ++++++++++++++++++++++++++++++++
+ include/linux/omap_resizer.h           |  136 +++
+ 5 files changed, 1796 insertions(+), 0 deletions(-)
  create mode 100644 drivers/media/video/isp/omap_resizer.c
  create mode 100644 include/linux/omap_resizer.h
 
-diff --git a/drivers/media/video/isp/Kconfig b/drivers/media/video/isp/Kconfig
-new file mode 100644
-index 0000000..acda63b
---- /dev/null
-+++ b/drivers/media/video/isp/Kconfig
-@@ -0,0 +1,16 @@
-+# Kconfig for OMAP3 ISP driver
-+
-+config VIDEO_OMAP3_ISP
-+      tristate
+diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
+index 3cdb5a4..d2b4ae1 100644
+--- a/drivers/media/video/Kconfig
++++ b/drivers/media/video/Kconfig
+@@ -720,6 +720,13 @@ config VIDEO_OMAP3
+       ---help---
+         Driver for an OMAP 3 camera controller.
++config VIDEO_OMAP34XX_ISP_RESIZER
++      tristate "OMAP ISP Resizer"
++      depends on VIDEO_V4L2 && ARCH_OMAP34XX
 +      select VIDEOBUF_GEN
 +      select VIDEOBUF_DMA_SG
++      select OMAP_IOMMU
 +
-+config VIDEO_OMAP34XX_ISP_PREVIEWER
-+      tristate "OMAP ISP Previewer"
-+      depends on !ARCH_OMAP3410
-+      select VIDEO_OMAP3_ISP
-+
-+config VIDEO_OMAP34XX_ISP_RESIZER
-+      tristate "OMAP ISP Resizer"
-+      depends on !ARCH_OMAP3410
-+      select VIDEO_OMAP3_ISP
+ config SOC_CAMERA
+       tristate "SoC camera support"
+       depends on VIDEO_V4L2 && HAS_DMA
 diff --git a/drivers/media/video/isp/Makefile b/drivers/media/video/isp/Makefile
-index 0f9301c..ed10a51 100644
+index f14d617..d171fb9 100644
 --- a/drivers/media/video/isp/Makefile
 +++ b/drivers/media/video/isp/Makefile
-@@ -7,6 +7,13 @@ else
+@@ -7,6 +7,10 @@ else
  isp-mod-objs += \
        isp.o ispccdc.o ispmmu.o \
        isppreview.o ispresizer.o isph3a.o isphist.o isp_af.o ispcsi2.o
 +
-+obj-$(CONFIG_VIDEO_OMAP34XX_ISP_PREVIEWER) += \
-+      omap_previewer.o
-+
 +obj-$(CONFIG_VIDEO_OMAP34XX_ISP_RESIZER) += \
 +      omap_resizer.o
 +
  endif
  
- obj-$(CONFIG_VIDEO_OMAP3_ISP) += isp-mod.o
+ obj-$(CONFIG_VIDEO_OMAP3) += isp-mod.o
 diff --git a/drivers/media/video/isp/isp.c b/drivers/media/video/isp/isp.c
-index 6034a56..09a1792 100644
+index 54c839b..f1f92b4 100644
 --- a/drivers/media/video/isp/isp.c
 +++ b/drivers/media/video/isp/isp.c
-@@ -521,6 +521,13 @@ int isp_set_callback(enum isp_callback_type type, isp_callback_t callback,
-                                       OMAP3_ISP_IOMEM_MAIN,
-                                       ISP_IRQ0ENABLE);
+@@ -505,6 +505,12 @@ int isp_set_callback(enum isp_callback_type type, isp_callback_t callback,
+               isp_reg_or(OMAP3_ISP_IOMEM_MAIN, ISP_IRQ0ENABLE,
+                          IRQ0ENABLE_PRV_DONE_IRQ);
                break;
 +      case CBK_RESZ_DONE:
-+              isp_reg_writel(IRQ0ENABLE_RSZ_DONE_IRQ, OMAP3_ISP_IOMEM_MAIN,
-+                              ISP_IRQ0STATUS);
-+              isp_reg_writel(isp_reg_readl(OMAP3_ISP_IOMEM_MAIN, ISP_IRQ0ENABLE) |
-+                              IRQ0ENABLE_RSZ_DONE_IRQ, OMAP3_ISP_IOMEM_MAIN,
-+                              ISP_IRQ0ENABLE);
++              isp_reg_writel(IRQ0ENABLE_RSZ_DONE_IRQ,
++                              OMAP3_ISP_IOMEM_MAIN, ISP_IRQ0STATUS);
++              isp_reg_or(OMAP3_ISP_IOMEM_MAIN, ISP_IRQ0ENABLE,
++                              IRQ0ENABLE_RSZ_DONE_IRQ);
 +              break;
        default:
                break;
        }
-@@ -996,6 +1003,11 @@ static irqreturn_t omap34xx_isp_isr(int irq, void *_isp)
+@@ -556,6 +562,10 @@ int isp_unset_callback(enum isp_callback_type type)
+               isp_reg_and(OMAP3_ISP_IOMEM_MAIN, ISP_IRQ0ENABLE,
+                           ~IRQ0ENABLE_PRV_DONE_IRQ);
+               break;
++      case CBK_RESZ_DONE:
++              isp_reg_and(OMAP3_ISP_IOMEM_MAIN, ISP_IRQ0ENABLE,
++                              ~IRQ0ENABLE_RSZ_DONE_IRQ);
++              break;
+       default:
+               break;
+       }
+@@ -938,6 +948,11 @@ static irqreturn_t omap34xx_isp_isr(int irq, void *_isp)
                        if (!ispresizer_busy())
                                ispresizer_config_shadow_registers();
                        isp_buf_process(bufs);
@@ -105,1017 +103,6 @@ index 6034a56..09a1792 100644
                }
        }
  
-diff --git a/drivers/media/video/isp/ispmmu.c b/drivers/media/video/isp/ispmmu.c
-index 076aea1..b943d5b 100644
---- a/drivers/media/video/isp/ispmmu.c
-+++ b/drivers/media/video/isp/ispmmu.c
-@@ -289,6 +289,7 @@ int ispmmu_get_mapeable_space(void)
-       return (L2P_TABLE_NR - no_of_l2p_alloted) * ISPMMU_TTB_ENTRIES_NR *
-                                                       ISPMMU_L2D_ENTRIES_NR;
- }
-+EXPORT_SYMBOL_GPL(ispmmu_get_mapeable_space);
- /**
-  * ispmmu_map - Map a physically contiguous buffer to ISP space.
-diff --git a/drivers/media/video/isp/omap_previewer.c b/drivers/media/video/isp/omap_previewer.c
-new file mode 100644
-index 0000000..634a056
---- /dev/null
-+++ b/drivers/media/video/isp/omap_previewer.c
-@@ -0,0 +1,825 @@
-+/*
-+ * drivers/media/video/isp/omap_previewer.c
-+ *
-+ * Wrapper for Preview module in TI's OMAP3430 ISP
-+ *
-+ * Copyright (C) 2008 Texas Instruments, Inc.
-+ *
-+ * Contributors:
-+ *    Leonides Martinez <leonides.martinez@ti.com>
-+ *    Sergio Aguirre <saaguirre@ti.com>
-+ *
-+ * This package is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-+ */
-+
-+#include <linux/mutex.h>
-+#include <linux/cdev.h>
-+#include <linux/device.h>
-+#include <linux/delay.h>
-+#include <linux/fs.h>
-+#include <linux/mm.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/uaccess.h>
-+#include <linux/io.h>
-+#include <media/v4l2-dev.h>
-+#include <asm/cacheflush.h>
-+
-+#include "isp.h"
-+#include "ispmmu.h"
-+#include "ispreg.h"
-+#include "omap_previewer.h"
-+
-+#define OMAP_PREV_NAME                "omap-previewer"
-+
-+static int prev_major = -1;
-+static struct device *prev_dev;
-+static struct class *prev_class;
-+static struct prev_device *prevdevice;
-+static struct platform_driver omap_previewer_driver;
-+
-+static u32 prev_bufsize;
-+
-+/**
-+ * prev_calculate_crop - Calculate crop size according to device parameters
-+ * @device: Structure containing ISP preview wrapper global information
-+ * @crop: Structure containing crop size
-+ *
-+ * This function is used to calculate frame size reduction depending on
-+ * the features enabled by the application.
-+ **/
-+static void prev_calculate_crop(struct prev_device *device,
-+                                              struct prev_cropsize *crop)
-+{
-+      dev_dbg(prev_dev, "prev_calculate_crop E\n");
-+
-+      if (!device || !crop) {
-+              dev_err(prev_dev, "\nErron in argument");
-+              return;
-+      }
-+
-+      isppreview_try_size(device->params->size_params.hsize,
-+                                      device->params->size_params.vsize,
-+                                      &crop->hcrop, &crop->vcrop);
-+      crop->hcrop &= PREV_16PIX_ALIGN_MASK;
-+      dev_dbg(prev_dev, "prev_calculate_crop L\n");
-+}
-+
-+/**
-+ * prev_get_status - Get status of ISP preview module
-+ * @status: Structure containing the busy state.
-+ *
-+ * Checks if the ISP preview module is busy.
-+ *
-+ * Returns 0 if successful, or -EINVAL if the status parameter is invalid.
-+ **/
-+static int prev_get_status(struct prev_status *status)
-+{
-+      if (!status) {
-+              dev_err(prev_dev, "get_status: invalid parameter\n");
-+              return -EINVAL;
-+      }
-+      status->hw_busy = (char)isppreview_busy();
-+      return 0;
-+}
-+
-+/**
-+ * prev_hw_setup - Stores the desired configuration in the proper HW registers
-+ * @config: Structure containing the desired configuration for ISP preview
-+ *          module.
-+ *
-+ * Reads the structure sent, and modifies the desired registers.
-+ *
-+ * Always returns 0.
-+ **/
-+static int prev_hw_setup(struct prev_params *config)
-+{
-+      dev_dbg(prev_dev, "prev_hw_setup E\n");
-+
-+      if (config->features & PREV_AVERAGER)
-+              isppreview_config_averager(config->average);
-+      else
-+              isppreview_config_averager(0);
-+
-+      if (config->features & PREV_INVERSE_ALAW)
-+              isppreview_enable_invalaw(1);
-+      else
-+              isppreview_enable_invalaw(0);
-+
-+      if (config->features & PREV_HORZ_MEDIAN_FILTER) {
-+              isppreview_config_hmed(config->hmf_params);
-+              isppreview_enable_hmed(1);
-+      } else
-+              isppreview_enable_hmed(0);
-+
-+      if (config->features & PREV_DARK_FRAME_SUBTRACT) {
-+              isppreview_set_darkaddr(config->drkf_params.addr);
-+              isppreview_config_darklineoffset(config->drkf_params.offset);
-+              isppreview_enable_drkframe(1);
-+      } else
-+              isppreview_enable_drkframe(0);
-+
-+      if (config->features & PREV_LENS_SHADING) {
-+              isppreview_config_drkf_shadcomp(config->lens_shading_shift);
-+              isppreview_enable_shadcomp(1);
-+      } else
-+              isppreview_enable_shadcomp(0);
-+
-+      dev_dbg(prev_dev, "prev_hw_setup L\n");
-+      return 0;
-+}
-+
-+/**
-+ * prev_validate_params - Validate configuration parameters for Preview Wrapper
-+ * @params: Structure containing configuration parameters
-+ *
-+ * Validate configuration parameters for Preview Wrapper
-+ *
-+ * Returns 0 if successful, or -EINVAL if a parameter value is invalid.
-+ **/
-+static int prev_validate_params(struct prev_params *params)
-+{
-+      if (!params) {
-+              dev_err(prev_dev, "validate_params: error in argument");
-+              goto err_einval;
-+      }
-+
-+      if ((params->features & PREV_AVERAGER) == PREV_AVERAGER) {
-+              if ((params->average != NO_AVE)
-+                                      && (params->average != AVE_2_PIX)
-+                                      && (params->average != AVE_4_PIX)
-+                                      && (params->average != AVE_8_PIX)) {
-+                      dev_err(prev_dev, "validate_params: wrong pix "
-+                                                              "average\n");
-+                      goto err_einval;
-+              } else if (((params->average == AVE_2_PIX)
-+                                      && (params->size_params.hsize % 2))
-+                                      || ((params->average == AVE_4_PIX)
-+                                      && (params->size_params.hsize % 4))
-+                                      || ((params->average == AVE_8_PIX)
-+                                      && (params->size_params.hsize % 8))) {
-+                      dev_err(prev_dev, "validate_params: "
-+                                      "wrong pix average for input size\n");
-+                      goto err_einval;
-+              }
-+      }
-+
-+      if ((params->size_params.pixsize != PREV_INWIDTH_8BIT)
-+                                      && (params->size_params.pixsize
-+                                      != PREV_INWIDTH_10BIT)) {
-+              dev_err(prev_dev, "validate_params: wrong pixsize\n");
-+              goto err_einval;
-+      }
-+
-+      if (params->size_params.hsize > MAX_IMAGE_WIDTH
-+                                      || params->size_params.hsize < 0) {
-+              dev_err(prev_dev, "validate_params: wrong hsize\n");
-+              goto err_einval;
-+      }
-+
-+      if ((params->pix_fmt != YCPOS_YCrYCb)
-+                                      && (YCPOS_YCbYCr != params->pix_fmt)
-+                                      && (YCPOS_CbYCrY != params->pix_fmt)
-+                                      && (YCPOS_CrYCbY != params->pix_fmt)) {
-+              dev_err(prev_dev, "validate_params: wrong pix_fmt");
-+              goto err_einval;
-+      }
-+
-+      if ((params->features & PREV_DARK_FRAME_SUBTRACT)
-+                                              && (params->features
-+                                              & PREV_DARK_FRAME_CAPTURE)) {
-+              dev_err(prev_dev, "validate_params: DARK FRAME CAPTURE and "
-+                                              "SUBSTRACT cannot be enabled "
-+                                              "at same time\n");
-+              goto err_einval;
-+      }
-+
-+      if (params->features & PREV_DARK_FRAME_SUBTRACT)
-+              if (!params->drkf_params.addr
-+                                      || (params->drkf_params.offset % 32)) {
-+                      dev_err(prev_dev, "validate_params: dark frame "
-+                                                              "address\n");
-+                      goto err_einval;
-+              }
-+
-+      if (params->features & PREV_LENS_SHADING)
-+              if ((params->lens_shading_shift > 7)
-+                                      || !params->drkf_params.addr
-+                                      || (params->drkf_params.offset % 32)) {
-+                      dev_err(prev_dev, "validate_params: lens shading "
-+                                                              "shift\n");
-+                      goto err_einval;
-+              }
-+
-+      if ((params->size_params.in_pitch <= 0)
-+                              || (params->size_params.in_pitch % 32)) {
-+              params->size_params.in_pitch =
-+                              (params->size_params.hsize * 2) & 0xFFE0;
-+              dev_err(prev_dev, "\nError in in_pitch; new value = %d",
-+                                              params->size_params.in_pitch);
-+      }
-+
-+      return 0;
-+err_einval:
-+      return -EINVAL;
-+}
-+
-+/**
-+ * preview_isr - Callback from ISP driver for ISP Preview Interrupt
-+ * @status: ISP IRQ0STATUS register value
-+ * @arg1: Structure containing ISP preview wrapper global information
-+ * @arg2: Currently not used
-+ **/
-+static void preview_isr(unsigned long status, isp_vbq_callback_ptr arg1,
-+                                                              void *arg2)
-+{
-+      struct prev_device *device = (struct prev_device *)arg1;
-+
-+      if ((status & PREV_DONE) != PREV_DONE)
-+              return;
-+
-+      if (device)
-+              complete(&device->wfc);
-+}
-+
-+/**
-+ * prev_do_preview - Performs the Preview process
-+ * @device: Structure containing ISP preview wrapper global information
-+ * @arg: Currently not used
-+ *
-+ * Returns 0 if successful, or -EINVAL if the sent parameters are invalid.
-+ **/
-+static int prev_do_preview(struct prev_device *device, int *arg)
-+{
-+      int bpp, size;
-+      int ret = 0;
-+      u32 out_hsize, out_vsize, out_line_offset;
-+
-+      dev_dbg(prev_dev, "prev_do_preview E\n");
-+
-+      if (!device) {
-+              dev_err(prev_dev, "preview: invalid parameters\n");
-+              return -EINVAL;
-+      }
-+
-+      if (device->params->size_params.pixsize == PREV_INWIDTH_8BIT)
-+              bpp = 1;
-+      else
-+              bpp = 2;
-+
-+      size = device->params->size_params.hsize *
-+              device->params->size_params.vsize * bpp;
-+
-+      ret = isppreview_set_inaddr(device->isp_addr_read);
-+      if (ret)
-+              goto out;
-+
-+      ret = isppreview_set_outaddr(device->isp_addr_read);
-+      if (ret)
-+              goto out;
-+
-+      isppreview_try_size(device->params->size_params.hsize,
-+                                      device->params->size_params.vsize,
-+                                      &out_hsize, &out_vsize);
-+
-+      ret = isppreview_config_inlineoffset(device->params->size_params.hsize
-+                                              * bpp);
-+      if (ret)
-+              goto out;
-+
-+      out_line_offset = (out_hsize * bpp) & PREV_32BYTES_ALIGN_MASK;
-+
-+      ret = isppreview_config_outlineoffset(out_line_offset);
-+      if (ret)
-+              goto out;
-+
-+      ret = isppreview_config_size(device->params->size_params.hsize,
-+                                      device->params->size_params.vsize,
-+                                      out_hsize, out_vsize);
-+      if (ret)
-+              goto out;
-+
-+      isppreview_config_datapath(PRV_RAW_MEM, PREVIEW_MEM);
-+
-+      ret = isp_set_callback(CBK_PREV_DONE, preview_isr, (void *)device,
-+                                                              (void *)NULL);
-+      if (ret) {
-+              dev_err(prev_dev, "ERROR while setting Previewer callback!\n");
-+              goto out;
-+      }
-+      isppreview_enable(1);
-+
-+      wait_for_completion_interruptible(&device->wfc);
-+
-+      if (device->isp_addr_read) {
-+              ispmmu_vunmap(device->isp_addr_read);
-+              device->isp_addr_read = 0;
-+      }
-+
-+      ret = isp_unset_callback(CBK_PREV_DONE);
-+
-+      dev_dbg(prev_dev, "prev_do_preview L\n");
-+out:
-+      return ret;
-+}
-+
-+/**
-+ * previewer_vbq_release - Videobuffer queue release
-+ * @q: Structure containing the videobuffer queue.
-+ * @vb: Structure containing the videobuffer used for previewer processing.
-+ **/
-+static void previewer_vbq_release(struct videobuf_queue *q,
-+                                              struct videobuf_buffer *vb)
-+{
-+      struct prev_fh *fh = q->priv_data;
-+      struct prev_device *device = fh->device;
-+
-+      ispmmu_vunmap(device->isp_addr_read);
-+      device->isp_addr_read = 0;
-+      spin_lock(&device->vbq_lock);
-+      vb->state = VIDEOBUF_NEEDS_INIT;
-+      spin_unlock(&device->vbq_lock);
-+      dev_dbg(prev_dev, "previewer_vbq_release\n");
-+}
-+
-+/**
-+ * previewer_vbq_setup - Sets up the videobuffer size and validates count.
-+ * @q: Structure containing the videobuffer queue.
-+ * @cnt: Number of buffers requested
-+ * @size: Size in bytes of the buffer used for previewing
-+ *
-+ * Always returns 0.
-+ **/
-+static int previewer_vbq_setup(struct videobuf_queue *q,
-+                                                      unsigned int *cnt,
-+                                                      unsigned int *size)
-+{
-+      struct prev_fh *fh = q->priv_data;
-+      struct prev_device *device = fh->device;
-+      u32 bpp = 1;
-+
-+      spin_lock(&device->vbq_lock);
-+      if (*cnt <= 0)
-+              *cnt = VIDEO_MAX_FRAME;
-+
-+      if (*cnt > VIDEO_MAX_FRAME)
-+              *cnt = VIDEO_MAX_FRAME;
-+
-+      if (!device->params->size_params.hsize ||
-+              !device->params->size_params.vsize) {
-+              dev_err(prev_dev, "Can't setup buffer size\n");
-+              spin_unlock(&device->vbq_lock);
-+              return -EINVAL;
-+      }
-+
-+      if (device->params->size_params.pixsize == PREV_INWIDTH_10BIT)
-+              bpp = 2;
-+      *size = prev_bufsize = bpp * device->params->size_params.hsize
-+                                      * device->params->size_params.vsize;
-+      spin_unlock(&device->vbq_lock);
-+      dev_dbg(prev_dev, "previewer_vbq_setup\n");
-+      return 0;
-+}
-+
-+/**
-+ * previewer_vbq_prepare - Videobuffer is prepared and mmapped.
-+ * @q: Structure containing the videobuffer queue.
-+ * @vb: Structure containing the videobuffer used for previewer processing.
-+ * @field: Type of field to set in videobuffer device.
-+ *
-+ * Returns 0 if successful, or -EINVAL if buffer couldn't get allocated, or
-+ * -EIO if the ISP MMU mapping fails
-+ **/
-+static int previewer_vbq_prepare(struct videobuf_queue *q,
-+                                              struct videobuf_buffer *vb,
-+                                              enum v4l2_field field)
-+{
-+      struct prev_fh *fh = q->priv_data;
-+      struct prev_device *device = fh->device;
-+      int err = -EINVAL;
-+      unsigned int isp_addr;
-+      struct videobuf_dmabuf *dma = videobuf_to_dma(vb);
-+
-+      dev_dbg(prev_dev, "previewer_vbq_prepare E\n");
-+      spin_lock(&device->vbq_lock);
-+      if (vb->baddr) {
-+              vb->size = prev_bufsize;
-+              vb->bsize = prev_bufsize;
-+      } else {
-+              spin_unlock(&device->vbq_lock);
-+              dev_err(prev_dev, "No user buffer allocated\n");
-+              goto out;
-+      }
-+
-+      vb->width = device->params->size_params.hsize;
-+      vb->height = device->params->size_params.vsize;
-+      vb->field = field;
-+      spin_unlock(&device->vbq_lock);
-+
-+      if (vb->state == VIDEOBUF_NEEDS_INIT) {
-+              err = videobuf_iolock(q, vb, NULL);
-+              if (!err) {
-+                      isp_addr = ispmmu_vmap(dma->sglist, dma->sglen);
-+                      if (!isp_addr)
-+                              err = -EIO;
-+                      else
-+                              device->isp_addr_read = isp_addr;
-+              }
-+      }
-+
-+      if (!err) {
-+              vb->state = VIDEOBUF_PREPARED;
-+              flush_cache_user_range(NULL, vb->baddr,
-+                                      (vb->baddr + vb->bsize));
-+      } else
-+              previewer_vbq_release(q, vb);
-+
-+      dev_dbg(prev_dev, "previewer_vbq_prepare L\n");
-+out:
-+      return err;
-+}
-+
-+static void previewer_vbq_queue(struct videobuf_queue *q,
-+                                              struct videobuf_buffer *vb)
-+{
-+      return;
-+}
-+
-+/**
-+ * previewer_open - Initializes and opens the Preview Wrapper
-+ * @inode: Inode structure associated with the Preview Wrapper
-+ * @filp: File structure associated with the Preview Wrapper
-+ *
-+ * Returns 0 if successful, -EACCES if its unable to initialize default config,
-+ * -EBUSY if its already opened or the ISP module is not available, or -ENOMEM
-+ * if its unable to allocate the device in kernel space memory.
-+ **/
-+static int previewer_open(struct inode *inode, struct file *filp)
-+{
-+      int ret = 0;
-+      struct prev_device *device = prevdevice;
-+      struct prev_params *config = isppreview_get_config();
-+      struct prev_fh *fh;
-+
-+      if (config == NULL) {
-+              dev_err(prev_dev, "Unable to initialize default config "
-+                      "from isppreviewer\n\n");
-+              return -EACCES;
-+      }
-+
-+      if (device->opened || (filp->f_flags & O_NONBLOCK)) {
-+              dev_err(prev_dev, "previewer_open: device is already "
-+                                                              "opened\n");
-+              return -EBUSY;
-+      }
-+
-+      fh = kzalloc(sizeof(struct prev_fh), GFP_KERNEL);
-+      if (NULL == fh)
-+              return -ENOMEM;
-+
-+      isp_get();
-+      ret = isppreview_request();
-+      if (ret) {
-+              isp_put();
-+              dev_err(prev_dev, "Can't acquire isppreview\n");
-+              return ret;
-+      }
-+
-+      device->params = config;
-+      device->opened = 1;
-+
-+      filp->private_data = fh;
-+      fh->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-+      fh->device = device;
-+
-+      videobuf_queue_sg_init(&fh->vbq, &device->vbq_ops, NULL,
-+                                      &device->vbq_lock, fh->type,
-+                                      V4L2_FIELD_NONE,
-+                                      sizeof(struct videobuf_buffer), fh);
-+
-+      init_completion(&device->wfc);
-+      device->wfc.done = 0;
-+      mutex_init(&device->prevwrap_mutex);
-+
-+      return 0;
-+}
-+
-+/**
-+ * previewer_release - Releases Preview Wrapper and frees up allocated memory
-+ * @inode: Inode structure associated with the Preview Wrapper
-+ * @filp: File structure associated with the Preview Wrapper
-+ *
-+ * Always returns 0.
-+ **/
-+static int previewer_release(struct inode *inode, struct file *filp)
-+{
-+      struct prev_fh *fh = filp->private_data;
-+      struct prev_device *device = fh->device;
-+      struct videobuf_queue *q = &fh->vbq;
-+
-+      device->opened = 0;
-+      device->params = NULL;
-+      isppreview_free();
-+      videobuf_mmap_free(q);
-+      isp_put();
-+      prev_bufsize = 0;
-+      filp->private_data = NULL;
-+      kfree(fh);
-+
-+      dev_dbg(prev_dev, "previewer_release\n");
-+      return 0;
-+}
-+
-+/**
-+ * previewer_mmap - Memory maps the Preview Wrapper module.
-+ * @file: File structure associated with the Preview Wrapper
-+ * @vma: Virtual memory area structure.
-+ *
-+ * Returns 0 if successful, or returned value by the videobuf_mmap_mapper()
-+ * function.
-+ **/
-+static int previewer_mmap(struct file *file, struct vm_area_struct *vma)
-+{
-+      struct prev_fh *fh = file->private_data;
-+      dev_dbg(prev_dev, "previewer_mmap\n");
-+
-+      return videobuf_mmap_mapper(&fh->vbq, vma);
-+}
-+
-+/**
-+ * previewer_ioctl - I/O control function for Preview Wrapper
-+ * @inode: Inode structure associated with the Preview Wrapper.
-+ * @file: File structure associated with the Preview Wrapper.
-+ * @cmd: Type of command to execute.
-+ * @arg: Argument to send to requested command.
-+ *
-+ * Returns 0 if successful, -1 if bad command passed or access is denied,
-+ * -EFAULT if copy_from_user() or copy_to_user() fails, -EINVAL if parameter
-+ * validation fails or parameter structure is not present
-+ **/
-+static int previewer_ioctl(struct inode *inode, struct file *file,
-+                                      unsigned int cmd, unsigned long arg)
-+{
-+      int ret = 0;
-+      struct prev_params params;
-+      struct prev_fh *fh = file->private_data;
-+      struct prev_device *device = fh->device;
-+
-+      dev_dbg(prev_dev, "Entering previewer_ioctl()\n");
-+
-+      if ((_IOC_TYPE(cmd) != PREV_IOC_BASE)
-+                                      || (_IOC_NR(cmd) > PREV_IOC_MAXNR)) {
-+              dev_err(prev_dev, "Bad command Value \n");
-+              goto err_minusone;
-+      }
-+
-+      if (_IOC_DIR(cmd) & _IOC_READ)
-+              ret = !access_ok(VERIFY_WRITE, (void *)arg, _IOC_SIZE(cmd));
-+      else if (_IOC_DIR(cmd) & _IOC_WRITE)
-+              ret = !access_ok(VERIFY_READ, (void *)arg, _IOC_SIZE(cmd));
-+      if (ret) {
-+              dev_err(prev_dev, "access denied\n");
-+              goto err_minusone;
-+      }
-+
-+      switch (cmd) {
-+      case PREV_REQBUF:
-+              if (mutex_lock_interruptible(&device->prevwrap_mutex))
-+                      goto err_eintr;
-+              ret = videobuf_reqbufs(&fh->vbq, (void *)arg);
-+              mutex_unlock(&device->prevwrap_mutex);
-+              break;
-+
-+      case PREV_QUERYBUF:
-+              if (mutex_lock_interruptible(&device->prevwrap_mutex))
-+                      goto err_eintr;
-+              ret = videobuf_querybuf(&fh->vbq, (void *)arg);
-+              mutex_unlock(&device->prevwrap_mutex);
-+              break;
-+
-+      case PREV_QUEUEBUF:
-+              if (mutex_lock_interruptible(&device->prevwrap_mutex))
-+                      goto err_eintr;
-+              ret = videobuf_qbuf(&fh->vbq, (void *)arg);
-+              mutex_unlock(&device->prevwrap_mutex);
-+              break;
-+
-+      case PREV_SET_PARAM:
-+              if (mutex_lock_interruptible(&device->prevwrap_mutex))
-+                      goto err_eintr;
-+              if (copy_from_user(&params, (struct prev_params *)arg,
-+                                              sizeof(struct prev_params))) {
-+                      mutex_unlock(&device->prevwrap_mutex);
-+                      return -EFAULT;
-+              }
-+              ret = prev_validate_params(&params);
-+              if (ret < 0) {
-+                      dev_err(prev_dev, "Error validating parameters!\n");
-+                      mutex_unlock(&device->prevwrap_mutex);
-+                      goto out;
-+              }
-+              if (device->params)
-+                      memcpy(device->params, &params,
-+                                              sizeof(struct prev_params));
-+              else {
-+                      mutex_unlock(&device->prevwrap_mutex);
-+                      return -EINVAL;
-+              }
-+
-+              ret = prev_hw_setup(device->params);
-+              mutex_unlock(&device->prevwrap_mutex);
-+              break;
-+
-+      case PREV_GET_PARAM:
-+              if (copy_to_user((struct prev_params *)arg, device->params,
-+                                              sizeof(struct prev_params)))
-+                      ret = -EFAULT;
-+              break;
-+
-+      case PREV_GET_STATUS:
-+              ret = prev_get_status((struct prev_status *)arg);
-+              break;
-+
-+      case PREV_PREVIEW:
-+              if (mutex_lock_interruptible(&device->prevwrap_mutex))
-+                      goto err_eintr;
-+              ret = prev_do_preview(device, (int *)arg);
-+              mutex_unlock(&device->prevwrap_mutex);
-+              break;
-+
-+      case PREV_GET_CROPSIZE:
-+              {
-+              struct prev_cropsize outputsize;
-+              prev_calculate_crop(device, &outputsize);
-+              if (copy_to_user((struct prev_cropsize *)arg, &outputsize,
-+                                              sizeof(struct prev_cropsize)))
-+                      ret = -EFAULT;
-+              }
-+              break;
-+
-+      default:
-+              dev_err(prev_dev, "previewer_ioctl: Invalid Command Value\n");
-+              ret = -EINVAL;
-+      }
-+out:
-+      return ret;
-+err_minusone:
-+      return -1;
-+err_eintr:
-+      return -EINTR;
-+}
-+
-+/**
-+ * previewer_platform_release - Acts when Reference count is zero
-+ * @device: Structure containing ISP preview wrapper global information
-+ *
-+ * This is called when the reference count goes to zero
-+ **/
-+static void previewer_platform_release(struct device *device)
-+{
-+      dev_dbg(prev_dev, "previewer_platform_release()\n");
-+}
-+
-+static struct file_operations prev_fops = {
-+      .owner = THIS_MODULE,
-+      .open = previewer_open,
-+      .release = previewer_release,
-+      .mmap = previewer_mmap,
-+      .ioctl = previewer_ioctl,
-+};
-+
-+static struct platform_device omap_previewer_device = {
-+      .name = OMAP_PREV_NAME,
-+      .id = -1,
-+      .dev = {
-+              .release = previewer_platform_release,
-+      }
-+};
-+
-+/**
-+ * previewer_probe - Checks for device presence
-+ * @pdev: Structure containing details of the current device.
-+ *
-+ * Always returns 0
-+ **/
-+static int __init previewer_probe(struct platform_device *pdev)
-+{
-+      return 0;
-+}
-+
-+/**
-+ * previewer_remove - Handles the removal of the driver
-+ * @pdev: Structure containing details of the current device.
-+ *
-+ * Always returns 0.
-+ **/
-+static int previewer_remove(struct platform_device *pdev)
-+{
-+      dev_dbg(prev_dev, "previewer_remove()\n");
-+
-+      platform_device_unregister(&omap_previewer_device);
-+      platform_driver_unregister(&omap_previewer_driver);
-+      unregister_chrdev(prev_major, OMAP_PREV_NAME);
-+      return 0;
-+}
-+
-+static struct platform_driver omap_previewer_driver = {
-+      .probe = previewer_probe,
-+      .remove = previewer_remove,
-+      .driver = {
-+              .owner = THIS_MODULE,
-+              .name = OMAP_PREV_NAME,
-+      },
-+};
-+
-+/**
-+ * omap_previewer_init - Initialization of Preview Wrapper
-+ *
-+ * Returns 0 if successful, -ENOMEM if could not allocate memory, -ENODEV if
-+ * could not register the wrapper as a character device, or other errors if the
-+ * device or driver can't register.
-+ **/
-+static int __init omap_previewer_init(void)
-+{
-+      int ret;
-+      struct prev_device *device;
-+
-+      device = kzalloc(sizeof(struct prev_device), GFP_KERNEL);
-+      if (!device) {
-+              dev_err(prev_dev, OMAP_PREV_NAME ": could not allocate"
-+                                                              " memory\n");
-+              return -ENOMEM;
-+      }
-+      prev_major = register_chrdev(0, OMAP_PREV_NAME, &prev_fops);
-+
-+      if (prev_major < 0) {
-+              dev_err(prev_dev, OMAP_PREV_NAME ": initialization "
-+                              "failed. could not register character "
-+                              "device\n");
-+              return -ENODEV;
-+      }
-+
-+      ret = platform_driver_register(&omap_previewer_driver);
-+      if (ret) {
-+              dev_err(prev_dev, OMAP_PREV_NAME
-+                      ": failed to register platform driver!\n");
-+              goto fail2;
-+      }
-+      ret = platform_device_register(&omap_previewer_device);
-+      if (ret) {
-+              dev_err(prev_dev, OMAP_PREV_NAME
-+                      ": failed to register platform device!\n");
-+              goto fail3;
-+      }
-+
-+      prev_class = class_create(THIS_MODULE, OMAP_PREV_NAME);
-+      if (!prev_class)
-+              goto fail4;
-+
-+      prev_dev = device_create(prev_class, prev_dev,
-+                                              (MKDEV(prev_major, 0)), NULL,
-+                                              OMAP_PREV_NAME);
-+      dev_dbg(prev_dev, OMAP_PREV_NAME ": Registered Previewer Wrapper\n");
-+      device->opened = 0;
-+
-+      device->vbq_ops.buf_setup = previewer_vbq_setup;
-+      device->vbq_ops.buf_prepare = previewer_vbq_prepare;
-+      device->vbq_ops.buf_release = previewer_vbq_release;
-+      device->vbq_ops.buf_queue = previewer_vbq_queue;
-+      spin_lock_init(&device->vbq_lock);
-+
-+      prevdevice = device;
-+      return 0;
-+
-+fail4:
-+      platform_device_unregister(&omap_previewer_device);
-+fail3:
-+      platform_driver_unregister(&omap_previewer_driver);
-+fail2:
-+      unregister_chrdev(prev_major, OMAP_PREV_NAME);
-+
-+      return ret;
-+}
-+
-+/**
-+ * omap_previewer_exit - Close of Preview Wrapper
-+ **/
-+static void __exit omap_previewer_exit(void)
-+{
-+      previewer_remove(&omap_previewer_device);
-+      kfree(prevdevice);
-+      prev_major = -1;
-+}
-+
-+module_init(omap_previewer_init);
-+module_exit(omap_previewer_exit);
-+
-+MODULE_AUTHOR("Texas Instruments");
-+MODULE_DESCRIPTION("OMAP ISP Previewer");
-+MODULE_LICENSE("GPL");
-diff --git a/drivers/media/video/isp/omap_previewer.h b/drivers/media/video/isp/omap_previewer.h
-new file mode 100644
-index 0000000..0bb31cd
---- /dev/null
-+++ b/drivers/media/video/isp/omap_previewer.h
-@@ -0,0 +1,162 @@
-+/*
-+ * drivers/media/video/isp/omap_previewer.h
-+ *
-+ * Header file for Preview module wrapper in TI's OMAP3430 ISP
-+ *
-+ * Copyright (C) 2008 Texas Instruments, Inc.
-+ *
-+ * Contributors:
-+ *    Leonides Martinez <leonides.martinez@ti.com>
-+ *    Sergio Aguirre <saaguirre@ti.com>
-+ *
-+ * This package is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-+ */
-+
-+#include "isppreview.h"
-+
-+#ifndef OMAP_ISP_PREVIEW_WRAP_H
-+#define OMAP_ISP_PREVIEW_WRAP_H
-+
-+#define PREV_IOC_BASE                 'P'
-+#define PREV_REQBUF                   _IOWR(PREV_IOC_BASE, 1,\
-+                                              struct v4l2_requestbuffers)
-+#define PREV_QUERYBUF                 _IOWR(PREV_IOC_BASE, 2,\
-+                                                      struct v4l2_buffer)
-+#define PREV_SET_PARAM                        _IOW(PREV_IOC_BASE, 3,\
-+                                                      struct prev_params)
-+#define PREV_GET_PARAM                        _IOWR(PREV_IOC_BASE, 4,\
-+                                                      struct prev_params)
-+#define PREV_PREVIEW                  _IOR(PREV_IOC_BASE, 5, int)
-+#define PREV_GET_STATUS                       _IOR(PREV_IOC_BASE, 6, char)
-+#define PREV_GET_CROPSIZE             _IOR(PREV_IOC_BASE, 7,\
-+                                                      struct prev_cropsize)
-+#define PREV_QUEUEBUF                 _IOWR(PREV_IOC_BASE, 8,\
-+                                                      struct v4l2_buffer)
-+#define PREV_IOC_MAXNR                        8
-+
-+#define LUMA_TABLE_SIZE                       128
-+#define GAMMA_TABLE_SIZE              1024
-+#define CFA_COEFF_TABLE_SIZE          576
-+#define NOISE_FILTER_TABLE_SIZE               256
-+
-+#define MAX_IMAGE_WIDTH                       3300
-+
-+#define PREV_INWIDTH_8BIT             0       /* pixel width of 8 bits */
-+#define PREV_INWIDTH_10BIT            1       /* pixel width of 10 bits */
-+
-+#define PREV_32BYTES_ALIGN_MASK               0xFFFFFFE0
-+#define PREV_16PIX_ALIGN_MASK         0xFFFFFFF0
-+
-+/**
-+ * struct prev_rgbblending - Structure for RGB2RGB blending parameters
-+ * @blending: Color correlation 3x3 matrix.
-+ * @offset: Color correlation offsets.
-+ */
-+struct prev_rgbblending {
-+      short blending[RGB_MAX][RGB_MAX];       /* color correlation 3x3
-+                                               * matrix.
-+                                               */
-+      short offset[RGB_MAX];                  /* color correlation offsets */
-+};
-+
-+/**
-+ * struct prev_cfa_coeffs - Structure for CFA coefficients
-+ * @hthreshold: Horizontal threshold.
-+ * @vthreshold: Vertical threshold.
-+ * @coeffs: CFA coefficients
-+ */
-+struct prev_cfa_coeffs {
-+      char hthreshold, vthreshold;
-+      int coeffs[CFA_COEFF_TABLE_SIZE];
-+};
-+
-+/**
-+ * struct prev_gamma_coeffs - Structure for Gamma Coefficients
-+ * @red: Table of gamma correction values for red color.
-+ * @green: Table of gamma correction values for green color.
-+ * @blue: Table of gamma correction values for blue color.
-+ */
-+struct prev_gamma_coeffs {
-+      unsigned char red[GAMMA_TABLE_SIZE];
-+      unsigned char green[GAMMA_TABLE_SIZE];
-+      unsigned char blue[GAMMA_TABLE_SIZE];
-+};
-+
-+/**
-+ * struct prev_noiseflt_coeffs - Structure for Noise Filter Coefficients.
-+ * @noise: Noise filter table.
-+ * @strength: Used to find out weighted average.
-+ */
-+struct prev_noiseflt_coeffs {
-+      unsigned char noise[NOISE_FILTER_TABLE_SIZE];
-+      unsigned char strength;
-+};
-+
-+/**
-+ * struct prev_chroma_spr - Structure for Chroma Suppression.
-+ * @hpfy: High passed version of Y or normal Y.
-+ * @threshold: Threshold for chroma suppress.
-+ * @gain: Chroma suppression gain
-+ */
-+struct prev_chroma_spr {
-+      unsigned char hpfy;
-+      char threshold;
-+      unsigned char gain;
-+};
-+
-+/**
-+ * struct prev_status - Structure to know status of the hardware
-+ * @hw_busy: Flag to indicate if Hardware is Busy.
-+ */
-+struct prev_status {
-+      char hw_busy;
-+};
-+
-+/**
-+ * struct prev_cropsize - Structure to know crop size.
-+ * @hcrop: Horizontal size of crop window.
-+ * @vcrop: Vertical size of crop window.
-+ */
-+struct prev_cropsize {
-+      int hcrop;
-+      int vcrop;
-+};
-+
-+/**
-+ * struct prev_device - Global device information structure.
-+ * @params: Pointer to structure containing preview parameters.
-+ * @opened: State of the device.
-+ * @wfc: Wait for completion. Used for locking operations.
-+ * @prevwrap_mutex: Mutex for preview wrapper use.
-+ * @vbq_lock: Spinlock for videobuf queues.
-+ * @vbq_ops: Videobuf queue operations
-+ * @isp_addr_read: Input/Output address
-+ */
-+struct prev_device {
-+      struct prev_params *params;
-+      unsigned char opened;
-+      struct completion wfc;
-+      struct mutex prevwrap_mutex; /* For generic internal use */
-+      spinlock_t vbq_lock;    /* For videobuffer queue handling */
-+      struct videobuf_queue_ops vbq_ops;
-+      dma_addr_t isp_addr_read;
-+};
-+
-+/**
-+ * struct prev_fh - Per-filehandle data structure
-+ * @type: Used buffer type.
-+ * @vbq: Videobuffer queue.
-+ * @device: Pointer to device information structure.
-+ */
-+struct prev_fh {
-+      enum v4l2_buf_type type;
-+      struct videobuf_queue vbq;
-+      struct prev_device *device;
-+};
-+#endif
 diff --git a/drivers/media/video/isp/omap_resizer.c b/drivers/media/video/isp/omap_resizer.c
 new file mode 100644
 index 0000000..54bc425
@@ -1450,11 +437,11 @@ index 0000000..54bc425
 +      }
 +
 +      if (fh->isp_addr_read) {
-+              ispmmu_vunmap(fh->isp_addr_read);
++              ispmmu_unmap(fh->isp_addr_read);
 +              fh->isp_addr_read = 0;
 +      }
 +      if (fh->isp_addr_write) {
-+              ispmmu_vunmap(fh->isp_addr_write);
++              ispmmu_unmap(fh->isp_addr_write);
 +              fh->isp_addr_write = 0;
 +      }
 +
@@ -2128,8 +1115,8 @@ index 0000000..54bc425
 +              videobuf_dma_free(dma);
 +      }
 +
-+      ispmmu_vunmap(fh->isp_addr_read);
-+      ispmmu_vunmap(fh->isp_addr_write);
++      ispmmu_unmap(fh->isp_addr_read);
++      ispmmu_unmap(fh->isp_addr_write);
 +      fh->isp_addr_read = 0;
 +      fh->isp_addr_write = 0;
 +      spin_lock(&fh->vbq_lock);
@@ -2231,7 +1218,7 @@ index 0000000..54bc425
 +      if (vb->state == VIDEOBUF_NEEDS_INIT) {
 +              err = videobuf_iolock(q, vb, NULL);
 +              if (!err) {
-+                      isp_addr = ispmmu_vmap(dma->sglist, dma->sglen);
++                      isp_addr = ispmmu_map_sg(dma->sglist, dma->sglen);
 +                      if (!isp_addr)
 +                              err = -EIO;
 +                      else {
@@ -2899,17 +1886,5 @@ index 0000000..5ac0c88
 +
 +#endif
 -- 
-1.6.0.3
+1.6.2.4
 
---- /tmp/Kconfig       2009-04-06 10:56:27.000000000 +0200
-+++ git/drivers/media/video/Kconfig    2009-04-06 10:57:25.000000000 +0200
-@@ -711,6 +711,9 @@
-         CMOS camera controller.  This is the controller found on first-
-         generation OLPC systems.
-+
-+source "drivers/media/video/isp/Kconfig"
-+
- config VIDEO_OMAP3
-         tristate "OMAP 3 Camera support"
-       select VIDEOBUF_GEN
@@ -1,15 +1,14 @@
-From 20d79137ecaa6c7dad007d9ea1d7be5550db4839 Mon Sep 17 00:00:00 2001
-From: Vaibhav Hiremath <hvaibhav@ti.com>
-Date: Fri, 13 Feb 2009 15:40:25 +0530
-Subject: [PATCH 2/2] Resizer bug fixes on top of 1.0.2 release
+From ad3bbadb7fc39a946dfd0cdac19e2ec8647b2c2c Mon Sep 17 00:00:00 2001
+From: Vaibhav Hiremath <vaibhav@psp-nfs-02.india.ti.com>
+Date: Wed, 29 Apr 2009 17:20:27 +0530
+Subject: [PATCH 24/26] OMAP3-Resizer: V4L2-buf layer issues fixed
 
-This commit contains resizer bug fixes on top of
-    PSP1.0.2 release -
-       - 4096 aligned address constraint
-       - workaround for extra page allocation for page aligned
-         size buffers
+V4L2-Buffer layer issues fixed under this commit.
+This patch is same as available with PSP1.0.2 release
 
-Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
+The discussion is initiated on this with V4L2 mailing list.
+
+Please note that this patch is not being tested.
 ---
  drivers/media/video/isp/omap_resizer.c |  417 ++++++++++++++++++++++++--------
  include/linux/omap_resizer.h           |    3 +-
@@ -125,11 +124,11 @@ index 54bc425..8059c70 100644
        }
  
 -      if (fh->isp_addr_read) {
--              ispmmu_vunmap(fh->isp_addr_read);
+-              ispmmu_unmap(fh->isp_addr_read);
 -              fh->isp_addr_read = 0;
 -      }
 -      if (fh->isp_addr_write) {
--              ispmmu_vunmap(fh->isp_addr_write);
+-              ispmmu_unmap(fh->isp_addr_write);
 -              fh->isp_addr_write = 0;
 -      }
 -
@@ -270,11 +269,11 @@ index 54bc425..8059c70 100644
 +      dma = videobuf_to_dma(q->bufs[vb->i]);
 +      videobuf_dma_unmap(q, dma);
 +      videobuf_dma_free(dma);
-+      ispmmu_vunmap(fh->config->buf_address[vb->i]);
++      ispmmu_unmap(fh->config->buf_address[vb->i]);
 +      fh->config->buf_address[vb->i] = 0;
  
--      ispmmu_vunmap(fh->isp_addr_read);
--      ispmmu_vunmap(fh->isp_addr_write);
+-      ispmmu_unmap(fh->isp_addr_read);
+-      ispmmu_unmap(fh->isp_addr_write);
 -      fh->isp_addr_read = 0;
 -      fh->isp_addr_write = 0;
        spin_lock(&fh->vbq_lock);
@@ -429,7 +428,7 @@ index 54bc425..8059c70 100644
        if (vb->state == VIDEOBUF_NEEDS_INIT) {
 -              err = videobuf_iolock(q, vb, NULL);
 -              if (!err) {
--                      isp_addr = ispmmu_vmap(dma->sglist, dma->sglen);
+-                      isp_addr = ispmmu_map_sg(dma->sglist, dma->sglen);
 -                      if (!isp_addr)
 -                              err = -EIO;
 -                      else {
@@ -491,7 +490,7 @@ index 54bc425..8059c70 100644
 +                              goto buf_release;
 +                      spin_unlock(&fh->vbq_lock);
 +              }
-+              isp_addr = ispmmu_vmap(dma->sglist, dma->sglen);
++              isp_addr = ispmmu_map_sg(dma->sglist, dma->sglen);
 +              if (!isp_addr)
 +                      err = -EIO;
 +              else {
@@ -726,5 +725,5 @@ index 5ac0c88..47b8dd8 100644
  #define RSZ_INTYPE_YCBCR422_16BIT     0
  #define RSZ_INTYPE_PLANAR_8BIT                1
 -- 
-1.6.0.3
+1.6.2.4
 
diff --git a/recipes/linux/linux-omap-2.6.29/isp/resizer/0025-OMAP3-Resizer-Build-issues-fixed.patch b/recipes/linux/linux-omap-2.6.29/isp/resizer/0025-OMAP3-Resizer-Build-issues-fixed.patch
new file mode 100644 (file)
index 0000000..143a846
--- /dev/null
@@ -0,0 +1,36 @@
+From 9fec955e98b4ef7922f629e3a81d2d1af216e028 Mon Sep 17 00:00:00 2001
+From: Vaibhav Hiremath <vaibhav@psp-nfs-02.india.ti.com>
+Date: Wed, 29 Apr 2009 18:12:42 +0530
+Subject: [PATCH 25/26] OMAP3-Resizer: Build issues fixed
+
+There were some building issues with latest gitorious tree,
+fixed them.
+---
+ drivers/media/video/isp/omap_resizer.c |    4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/media/video/isp/omap_resizer.c b/drivers/media/video/isp/omap_resizer.c
+index 8059c70..dd90b24 100644
+--- a/drivers/media/video/isp/omap_resizer.c
++++ b/drivers/media/video/isp/omap_resizer.c
+@@ -1033,7 +1033,7 @@ static void rsz_vbq_release(struct videobuf_queue *q,
+       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;
+       spin_lock(&fh->vbq_lock);
+@@ -1293,7 +1293,7 @@ static int rsz_vbq_prepare(struct videobuf_queue *q,
+                               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 {
+-- 
+1.6.2.4
+
index 32ad025..e40daa0 100644 (file)
@@ -151,9 +151,9 @@ SRC_URI_append = " \
            file://isp/omap3camera/0007-omap3isp-Add-CSI2-interface-support.patch;patch=1 \
            file://isp/omap3camera/0008-omap3isp-Add-ISP-tables.patch;patch=1 \
            file://isp/omap3camera/0009-omap34xxcam-Add-camera-driver.patch;patch=1 \
-#           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://isp/resizer/0023-OMAP-Resizer-Basic-Resizer-refreshed-with-latest-gi.patch;patch=1 \
+           file://isp/resizer/0024-OMAP3-Resizer-V4L2-buf-layer-issues-fixed.patch;patch=1 \
+           file://isp/resizer/0025-OMAP3-Resizer-Build-issues-fixed.patch;patch=1 \
            file://0124-leds-gpio-broken-with-current-git.patch;patch=1 \
            file://modedb-hd720.patch;patch=1 \
            file://0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch;patch=1 \