Thanks for pointing this out Chris… Kristen, can you please fix this within kernel-adaptionation-mrst and resubmit?
"Please remove fastinit from you kernel.spec.in for each kernel. %define kernel_prereq fileutils, module-init-tools, fastinit, mkinitrd >= 6.0.39-1 ./kernel-adaptation-medfield/kernel-adaptation-medfield.spec " rs From: Chris Ferron <[email protected]<mailto:[email protected]>> Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Date: Thu, 30 Jun 2011 14:21:38 -0700 To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Cc: kaccardi <[email protected]<mailto:[email protected]>>, "Accardi, Kristen C" <[email protected]<mailto:[email protected]>>, "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Subject: Re: [meego-packaging] [meego-commits] 22037: Changes to Trunk:Testing/kernel-adaptation-mrst Hi kernel-adaptation-mrst is unresolvable in Trunk-Testing due to BMC#20234<https://bugs.meego.com/show_bug.cgi?id=20235> It might be building on MeeGo1.2 but not in trunk. -Chris On 06/30/2011 01:45 PM, kaccardi wrote: Hi, I have made the following changes to kernel-adaptation-mrst in project Trunk:Testing. Please review and accept ASAP. Thank You, kaccardi [This message was auto-generated] --- Request #22037: submit: devel:kernel/kernel-adaptation-mrst(r190) -> Trunk:Testing/kernel-adaptation-mrst Message: * Thu Jun 30 2011 - Kristen Carlson Accardi <[email protected]><mailto:[email protected]> - 2.6.37.6 - audio - bypass enabling audio port & yield to i2s bus for bt (BZ 6776, 7056) - camera - reduce debug output (BZ 9826) - camera - skip frame when changing resolution (BZ 9947) State: new 2011-06-30T13:45:34 kaccardi Comment: None changes files: -------------- --- kernel.changes +++ kernel.changes @@ -0,0 +1,5 @@ +* Thu Jun 30 2011 - Kristen Carlson Accardi <[email protected]><mailto:[email protected]> - 2.6.37.6 +- audio - bypass enabling audio port & yield to i2s bus for bt (BZ 6776, 7056) +- camera - reduce debug output (BZ 9826) +- camera - skip frame when changing resolution (BZ 9947) + new: ---- linux-2.6.37-camera-ov5640-ov9740-version-0.957_to_0.958.patch linux-2.6.37-camera-ov5640-ov9740-version-0.958_to_0.959.patch linux-2.6.37-sst-add-a-new-ioctl-on-intel_sst-to-tristate-PMIC-dy.patch linux-2.6.37-sst-add-another-meaning-for-device_route-to-bypass-t.patch spec files: ----------- --- kernel-adaptation-mrst.spec +++ kernel-adaptation-mrst.spec @@ -338,39 +338,43 @@ Patch281: linux-2.6.37-camera-ov5640-ov9740-version-0.954_to_0.955.patch Patch282: linux-2.6.37-camera-ov5640-ov9740-version-0.955_to_0.956.patch Patch283: linux-2.6.37-camera-ov5640-ov9740-version-0.956_to_0.957.patch +Patch284: linux-2.6.37-camera-ov5640-ov9740-version-0.957_to_0.958.patch +Patch285: linux-2.6.37-camera-ov5640-ov9740-version-0.958_to_0.959.patch # ehci patches -Patch284: linux-2.6.37-ehci-runtime-pm.patch -Patch285: linux-2.6.37-ehci-wakeup.patch +Patch286: linux-2.6.37-ehci-runtime-pm.patch +Patch287: linux-2.6.37-ehci-wakeup.patch # otg patches #linux-2.6.37-otg-threaded-irq.patch -Patch286: linux-2.6.37-otg-ignore-data-pulse.patch -Patch287: linux-2.6.37-mrst-pci-mark-otg-runwake.patch -Patch288: linux-2.6.37-mrst-pci-assign-d3_delay-to-zero.patch -Patch289: linux-2.6.37-otg-balance-runtime-pm.patch +Patch288: linux-2.6.37-otg-ignore-data-pulse.patch +Patch289: linux-2.6.37-mrst-pci-mark-otg-runwake.patch +Patch290: linux-2.6.37-mrst-pci-assign-d3_delay-to-zero.patch +Patch291: linux-2.6.37-otg-balance-runtime-pm.patch # option (3g) patches -Patch290: linux-2.6.37-usb_wwan-fix-error-case-in-close.patch -Patch291: linux-2.6.37-usb_wwan-fix-error-in-marking-device-busy.patch -Patch292: linux-2.6.37-usb_wwan-fix-runtime-PM-in-error-case.patch +Patch292: linux-2.6.37-usb_wwan-fix-error-case-in-close.patch +Patch293: linux-2.6.37-usb_wwan-fix-error-in-marking-device-busy.patch +Patch294: linux-2.6.37-usb_wwan-fix-runtime-PM-in-error-case.patch # audio -Patch293: linux-2.6.37-sst-power-sequence.patch -Patch294: linux-2.6.37-sst-add-Master-Volume.patch -Patch295: linux-2.6.37-sst-fix-pop-sound-from-speaker-after-playback.patch+Patch295: linux-2.6.37-sst-power-sequence.patch +Patch296: linux-2.6.37-sst-add-Master-Volume.patch +Patch297: linux-2.6.37-sst-fix-pop-sound-from-speaker-after-playback.patch+Patch298: linux-2.6.37-sst-add-another-meaning-for-device_route-to-bypass-t.patch +Patch299: linux-2.6.37-sst-add-a-new-ioctl-on-intel_sst-to-tristate-PMIC-dy.patch # keys -Patch296: linux-2.6.37-gpio-keys-add-new-power-key.patch -Patch297: linux-2.6.37-mrst-add-sw-front-proxmity-key.patch +Patch300: linux-2.6.37-gpio-keys-add-new-power-key.patch +Patch301: linux-2.6.37-mrst-add-sw-front-proxmity-key.patch # sensor patches -Patch298: linux-2.6.37-pca953x-revert-to-handle-nested-irq.patch -Patch299: linux-2.6.37-ar1520.patch -Patch300: linux-2.6.37-mrst-add-bma023-platform-data-handler.patch +Patch302: linux-2.6.37-pca953x-revert-to-handle-nested-irq.patch +Patch303: linux-2.6.37-ar1520.patch +Patch304: linux-2.6.37-mrst-add-bma023-platform-data-handler.patch # serial -Patch301: linux-2.6.37-max3110-clean-prints.patch +Patch305: linux-2.6.37-max3110-clean-prints.patch # # End of the Moorsetown architecture patches @@ -794,57 +798,65 @@ %patch282 -p1 # linux-2.6.37-camera-ov5640-ov9740-version-0.956_to_0.957.patch %patch283 -p1 +# linux-2.6.37-camera-ov5640-ov9740-version-0.957_to_0.958.patch +%patch284 -p1 +# linux-2.6.37-camera-ov5640-ov9740-version-0.958_to_0.959.patch +%patch285 -p1 # ehci patches # linux-2.6.37-ehci-runtime-pm.patch -%patch284 -p1 +%patch286 -p1 # linux-2.6.37-ehci-wakeup.patch -%patch285 -p1 +%patch287 -p1 # otg patches #linux-2.6.37-otg-threaded-irq.patch # linux-2.6.37-otg-ignore-data-pulse.patch -%patch286 -p1 +%patch288 -p1 # linux-2.6.37-mrst-pci-mark-otg-runwake.patch -%patch287 -p1 +%patch289 -p1 # linux-2.6.37-mrst-pci-assign-d3_delay-to-zero.patch -%patch288 -p1 +%patch290 -p1 # linux-2.6.37-otg-balance-runtime-pm.patch -%patch289 -p1 +%patch291 -p1 # option (3g) patches # linux-2.6.37-usb_wwan-fix-error-case-in-close.patch -%patch290 -p1 +%patch292 -p1 # linux-2.6.37-usb_wwan-fix-error-in-marking-device-busy.patch -%patch291 -p1 +%patch293 -p1 # linux-2.6.37-usb_wwan-fix-runtime-PM-in-error-case.patch -%patch292 -p1 +%patch294 -p1 # audio # linux-2.6.37-sst-power-sequence.patch -%patch293 -p1 +%patch295 -p1 # linux-2.6.37-sst-add-Master-Volume.patch -%patch294 -p1 +%patch296 -p1 # linux-2.6.37-sst-fix-pop-sound-from-speaker-after-playback.patch -%patch295 -p1 +%patch297 -p1 +# linux-2.6.37-sst-add-another-meaning-for-device_route-to-bypass-t.patch +%patch298 -p1 +# linux-2.6.37-sst-add-a-new-ioctl-on-intel_sst-to-tristate-PMIC-dy.patch +%patch299 -p1 # keys # linux-2.6.37-gpio-keys-add-new-power-key.patch -%patch296 -p1 +%patch300 -p1 # linux-2.6.37-mrst-add-sw-front-proxmity-key.patch -%patch297 -p1 +%patch301 -p1 # sensor patches # linux-2.6.37-pca953x-revert-to-handle-nested-irq.patch -%patch298 -p1 +%patch302 -p1 # linux-2.6.37-ar1520.patch -%patch299 -p1 +%patch303 -p1 # linux-2.6.37-mrst-add-bma023-platform-data-handler.patch -%patch300 -p1 +%patch304 -p1 # serial # linux-2.6.37-max3110-clean-prints.patch -%patch301 -p1 +%patch305 -p1 # # End of the Moorsetown architecture patches other changes: -------------- ++++++ linux-2.6.37-camera-ov5640-ov9740-version-0.957_to_0.958.patch (new)--- linux-2.6.37-camera-ov5640-ov9740-version-0.957_to_0.958.patch +++ linux-2.6.37-camera-ov5640-ov9740-version-0.957_to_0.958.patch +From: Yong He <[email protected]><mailto:[email protected]> +Subject: [PATCH] MRST Tablet camera driver ver-0.958, fix 9826 + +Bug 9826 - camera driver is very noisy + +replace dprintk with sysfs interface debug + +Signed-off-by: Yong He <[email protected]><mailto:[email protected]> +Index: linux-2.6.37/drivers/staging/mrstci/mrstisp/include/mrstisp_stdinc.h +=================================================================== +--- linux-2.6.37/drivers/staging/mrstci/mrstisp/include/mrstisp_stdinc.h (revision 128) ++++ linux-2.6.37/drivers/staging/mrstci/mrstisp/include/mrstisp_stdinc.h (working copy) +@@ -108,9 +108,9 @@ + printk(KERN_ERR "mrstisp@%s" fmt "\n", \ + __func__, ## arg); + +-#define DBG_entering dprintk(1, "entering"); +-#define DBG_leaving dprintk(1, "leaving"); +-#define DBG_line dprintk(1, " line: %d", __LINE__); ++#define DBG_entering pr_debug("mrstisp@%s:entering\n", __func__); ++#define DBG_leaving pr_debug("mrstisp@%s:leaving\n", __func__); ++#define DBG_line pr_debug(" line: %d\n", __LINE__); + + #include "reg_access.h" + +Index: linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c +=================================================================== +--- linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c (revision 128) ++++ linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c (working copy) +@@ -32,7 +32,7 @@ + #define GPIO_STDBY2_PIN 49 + #define GPIO_RESET_PIN 50 + +-int mrstisp_debug = 3; ++int mrstisp_debug; + module_param(mrstisp_debug, int, 0644); + /* For some reason ISP needs some "extra syncs" with sensor mt9d113 */ + int isp_extra_sync_for_mt9d113; +@@ -220,30 +220,30 @@ + + static void print_snr_cfg(struct ci_sensor_config *cfg) + { +- dprintk(2, "bus width = %x", cfg->bus_width); +- dprintk(2, "mode = %x", cfg->mode); +- dprintk(2, "field_inv = %x", cfg->field_inv); +- dprintk(2, "field_sel = %x", cfg->field_sel); +- dprintk(2, "ycseq = %x", cfg->ycseq); +- dprintk(2, "conv422 = %x", cfg->conv422); +- dprintk(2, "bpat = %x", cfg->bpat); +- dprintk(2, "hpol = %x", cfg->hpol); +- dprintk(2, "vpol = %x", cfg->vpol); +- dprintk(2, "edge = %x", cfg->edge); +- dprintk(2, "bls = %x", cfg->bls); +- dprintk(2, "gamma = %x", cfg->gamma); +- dprintk(2, "cconv = %x", cfg->cconv); +- dprintk(2, "res = %x", cfg->res); +- dprintk(2, "blc = %x", cfg->blc); +- dprintk(2, "agc = %x", cfg->agc); +- dprintk(2, "awb = %x", cfg->awb); +- dprintk(2, "aec = %x", cfg->aec); +- dprintk(2, "cie_profile = %x", cfg->cie_profile); +- dprintk(2, "flicker_freq = %x", cfg->flicker_freq); +- dprintk(2, "smia_mode = %x", cfg->smia_mode); +- dprintk(2, "mipi_mode = %x", cfg->mipi_mode); +- dprintk(2, "type = %x", cfg->type); +- dprintk(2, "name = %s", cfg->name); ++ pr_debug("bus width = %x", cfg->bus_width); ++ pr_debug("mode = %x", cfg->mode); ++ pr_debug("field_inv = %x", cfg->field_inv); ++ pr_debug("field_sel = %x", cfg->field_sel); ++ pr_debug("ycseq = %x", cfg->ycseq); ++ pr_debug("conv422 = %x", cfg->conv422); ++ pr_debug("bpat = %x", cfg->bpat); ++ pr_debug("hpol = %x", cfg->hpol); ++ pr_debug("vpol = %x", cfg->vpol); ++ pr_debug("edge = %x", cfg->edge); ++ pr_debug("bls = %x", cfg->bls); ++ pr_debug("gamma = %x", cfg->gamma); ++ pr_debug("cconv = %x", cfg->cconv); ++ pr_debug("res = %x", cfg->res); ++ pr_debug("blc = %x", cfg->blc); ++ pr_debug("agc = %x", cfg->agc); ++ pr_debug("awb = %x", cfg->awb); ++ pr_debug("aec = %x", cfg->aec); ++ pr_debug("cie_profile = %x", cfg->cie_profile); ++ pr_debug("flicker_freq = %x", cfg->flicker_freq); ++ pr_debug("smia_mode = %x", cfg->smia_mode); ++ pr_debug("mipi_mode = %x", cfg->mipi_mode); ++ pr_debug("type = %x", cfg->type); ++ pr_debug("name = %s", cfg->name); + } + + static int mrst_isp_defcfg_all_load(struct ci_isp_config *isp_config) +@@ -424,21 +424,21 @@ + if (jpg_review->pix_fmt == V4L2_PIX_FMT_YUV420 + || jpg_review->pix_fmt == V4L2_PIX_FMT_YVU420) { + +- dprintk(3, "VF yuv420 fmt"); ++ dev_dbg(&isp->vdev->dev, "VF yuv420 fmt"); + isp_sf_mi_path_conf.ybuffer.size = bufsize; + isp_sf_mi_path_conf.cb_buffer.size = bufsize/4; + isp_sf_mi_path_conf.cr_buffer.size = bufsize/4; + + } else if (jpg_review->pix_fmt == V4L2_PIX_FMT_YUV422P) { + +- dprintk(3, "VF yuv422 fmt"); ++ dev_dbg(&isp->vdev->dev, "VF yuv422 fmt"); + isp_sf_mi_path_conf.ybuffer.size = bufsize; + isp_sf_mi_path_conf.cb_buffer.size = bufsize/2; + isp_sf_mi_path_conf.cr_buffer.size = bufsize/2; + + } else if (jpg_review->pix_fmt == V4L2_PIX_FMT_NV12) { + +- dprintk(3, "VF nv12 fmt"); ++ dev_dbg(&isp->vdev->dev, "VF nv12 fmt"); + isp_sf_mi_path_conf.ybuffer.size = bufsize; + isp_sf_mi_path_conf.cb_buffer.size = bufsize/2; + isp_sf_mi_path_conf.cr_buffer.size = 0; +@@ -489,25 +489,25 @@ + if (isp->pixelformat == V4L2_PIX_FMT_YUV420 + || isp->pixelformat == V4L2_PIX_FMT_YVU420) { + +- dprintk(3, "yuv420 fmt"); ++ dev_dbg(&isp->vdev->dev, "yuv420 fmt"); + isp_mi_path_conf.ybuffer.size = bufsize; + isp_mi_path_conf.cb_buffer.size = bufsize/4; + isp_mi_path_conf.cr_buffer.size = bufsize/4; + } else if (isp->pixelformat == V4L2_PIX_FMT_YUV422P) { + +- dprintk(3, "yuv422 fmt"); ++ dev_dbg(&isp->vdev->dev, "yuv422 fmt"); + isp_mi_path_conf.ybuffer.size = bufsize; + isp_mi_path_conf.cb_buffer.size = bufsize/2; + isp_mi_path_conf.cr_buffer.size = bufsize/2; + } else if (isp->pixelformat == V4L2_PIX_FMT_NV12) { + +- dprintk(3, "nv12 fmt"); ++ dev_dbg(&isp->vdev->dev, "nv12 fmt"); + isp_mi_path_conf.ybuffer.size = bufsize; + isp_mi_path_conf.cb_buffer.size = bufsize/2; + isp_mi_path_conf.cr_buffer.size = 0; + } else { + +- dprintk(3, "jpeg and rgb fmt"); ++ dev_dbg(&isp->vdev->dev, "jpeg and rgb fmt"); + isp_mi_path_conf.ybuffer.size = bufsize; + isp_mi_path_conf.cb_buffer.size = 0; + isp_mi_path_conf.cr_buffer.size = 0; +@@ -584,7 +584,7 @@ + + if (isp->pixelformat == V4L2_PIX_FMT_JPEG) { + +- dprintk(1, "jpeg fmt"); ++ dev_dbg(&isp->vdev->dev, "jpeg fmt"); + + dp_main.flags = CI_ISP_DPD_ENABLE | CI_ISP_DPD_MODE_ISPJPEG; + config->view_finder.flags |= VFFLAG_USE_MAINPATH; +@@ -594,7 +594,7 @@ + + if (isp->sys_conf.jpg_review_enable) { + +- dprintk(1, "jpg_review enabled in VF"); ++ dev_dbg(&isp->vdev->dev, "jpg_review enabled in VF"); + + self_rect.w = jpg_review->width; + self_rect.h = jpg_review->height; +@@ -613,7 +613,7 @@ + else if (jpg_review->pix_fmt == V4L2_PIX_FMT_YUYV) + dp_self.flags |= CI_ISP_DPD_YUV_YUYV; + +- dprintk(1, "dp_self.flags is 0x%x", dp_self.flags); ++ dev_dbg(&isp->vdev->dev, "dp_self.flags is 0x%x", dp_self.flags); + } + + } else if (isp->pixelformat == INTEL_PIX_FMT_RAW08) { +@@ -626,7 +626,7 @@ + (void)ci_sensor_res2size(isi_config->res, + &(dp_main.out_w), &(dp_main.out_h)); + +- dprintk(1, "RAW08 dp_main.flags is 0x%x", dp_main.flags); ++ dev_dbg(&isp->vdev->dev, "RAW08 dp_main.flags is 0x%x", dp_main.flags); + + } else if (isp->pixelformat == INTEL_PIX_FMT_RAW10 + || isp->pixelformat == INTEL_PIX_FMT_RAW12) { +@@ -640,7 +640,7 @@ + (void)ci_sensor_res2size(isi_config->res, + &(dp_main.out_w), &(dp_main.out_h)); + +- dprintk(1, "RAW10 dp_main.flags is 0x%x", dp_main.flags); ++ dev_dbg(&isp->vdev->dev, "RAW10 dp_main.flags is 0x%x", dp_main.flags); + + } /*else if (isp->bufwidth >= 640 && isp->bufheight >= 480) {*/ + else if (isp->bufwidth >= 32 && isp->bufheight >= 16) { +@@ -663,7 +663,7 @@ + } else if (isp->pixelformat == V4L2_PIX_FMT_YUYV) + dp_main.flags |= CI_ISP_DPD_YUV_YUYV; + +- dprintk(1, "YUV dp_main.flags is 0x%x", dp_main.flags); (614 more lines skipped) ++++++ linux-2.6.37-camera-ov5640-ov9740-version-0.958_to_0.959.patch (new)--- linux-2.6.37-camera-ov5640-ov9740-version-0.958_to_0.959.patch +++ linux-2.6.37-camera-ov5640-ov9740-version-0.958_to_0.959.patch +From: Yong He <[email protected]><mailto:[email protected]> +Subject: [PATCH] MRST Tablet camera driver ver-0.959, fix 9947 + +Bug 9947 - when switch to a new resolution, +Back camera need to skip first frame after turn on streaming + +move the delay to ISP for snapshot only (preview do not need delay) +and increase the total delay time to 450 (3 frame) in order to get +good picture quality + +Signed-off-by: Yong He <[email protected]><mailto:[email protected]> +Index: linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c +=================================================================== +--- linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c (revision 130) ++++ linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c (revision 132) +@@ -1090,6 +1090,10 @@ + if (isp->pixelformat == V4L2_PIX_FMT_JPEG) { + mrst_isp_disable_interrupt(isp); + v4l2_subdev_call(camera, video, s_stream, 1); ++ if ((!strcmp(to_sensor_config(camera)->name, "ov5640")) || ++ (!strcmp(to_sensor_config(camera)->name, "ov9740"))) { ++ msleep(400); ++ } + dev_dbg(&isp->vdev->dev, "init JPEG encoder"); + ci_isp_jpe_init_ex(isp->bufwidth, isp->bufheight, + isp->sys_conf.isp_cfg.jpeg_enc_ratio, +Index: linux-2.6.37/drivers/staging/mrstci/mrstov5640/mrstov5640.c +=================================================================== +--- linux-2.6.37/drivers/staging/mrstci/mrstov5640/mrstov5640.c (revision 130) ++++ linux-2.6.37/drivers/staging/mrstci/mrstov5640/mrstov5640.c (revision 132) +@@ -50,7 +50,7 @@ + #include "ci_sensor_common.h" + #include "ov5640.h" + +-#define DRIVER_VERSION "0.957" ++#define DRIVER_VERSION "0.959" + + #define GPIO_FLASH 45 + static int ov5640_flash=0; +@@ -2479,7 +2479,7 @@ + dev_dbg(sd->v4l2_dev->dev, "ov5640_af_init error - (%d)\n", + af_fw_status); + } +- msleep(300); ++ msleep(50); + } + } else { + ov5640_set_aec_agc(client, 0); +Index: linux-2.6.37/drivers/staging/mrstci/mrstov9740/mrstov9740.c +=================================================================== +--- linux-2.6.37/drivers/staging/mrstci/mrstov9740/mrstov9740.c (revision 130) ++++ linux-2.6.37/drivers/staging/mrstci/mrstov9740/mrstov9740.c (revision 132) +@@ -47,7 +47,7 @@ + #include "ci_sensor_common.h" + #include "ov9740.h" + +-#define DRIVER_VERSION "0.957" ++#define DRIVER_VERSION "0.959" + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + + #define DBG_entering pr_debug("%s entering", __func__); +@@ -1957,7 +1957,7 @@ + "set stream on, sleep 300 ms for sensor adjusting...\n"); + ov9740_write(client, 0x0100, 0x01); + ov9740_set_aec_agc(client, 1); +- msleep(300); ++ msleep(50); + } else if ((!enable) && (ov9740_status.stream_on == OV9740_STREAM_ON)) { + /* Turn off streaming if current status is on */ + ov9740_status.stream_on = OV9740_STREAM_OFF; ++++++ linux-2.6.37-sst-add-a-new-ioctl-on-intel_sst-to-tristate-PMIC-dy.patch (new) --- linux-2.6.37-sst-add-a-new-ioctl-on-intel_sst-to-tristate-PMIC-dy.patch+++ linux-2.6.37-sst-add-a-new-ioctl-on-intel_sst-to-tristate-PMIC-dy.patch+From 22ea27f036a3409843614fa3a9817ea4dda69d8f Mon Sep 17 00:00:00 2001 +From: Lu Guanqun <[email protected]><mailto:[email protected]> +Date: Wed, 22 Jun 2011 07:18:40 +0800 +Subject: [PATCH 2/2] sst: add a new ioctl on intel_sst to tristate PMIC dynamically + +This allows users to tristate PMIC dynamically so that the I2S bus connected +with PMIC will be tristated. This allows other devices (e.g. Bluetooth chip) +to drive the I2S bus. + +The PMIC register (AUDIOPORT1 - 0x102) is the register to control PCM2 port on +PMIC, setting it to 0x0 will make it slave, tristate on I2S bus. Setting it +to 0x98 will make it back to life. + +Signed-off-by: Lu Guanqun <[email protected]><mailto:[email protected]> +--- + drivers/staging/intel_sst/intel_sst.h | 1 + + .../staging/intel_sst/intel_sst_app_interface.c | 5 +++++ + drivers/staging/intel_sst/intel_sst_ioctl.h | 1 + + drivers/staging/intel_sst/intelmid_v2_control.c | 15 ++++++++++++++++ 4 files changed, 22 insertions(+), 0 deletions(-) + +diff --git a/drivers/staging/intel_sst/intel_sst.h b/drivers/staging/intel_sst/intel_sst.h +index d5886c7..58dcf9a 100644 +--- a/drivers/staging/intel_sst/intel_sst.h ++++ b/drivers/staging/intel_sst/intel_sst.h +@@ -116,6 +116,7 @@ struct snd_pmic_ops { + int (*pmic_jack_enable) (void); + int (*pmic_get_mic_bias)(void *intelmaddata); + int (*pmic_set_headset_state)(int state); ++ int (*tristate_pmic)(int tristate); + + unsigned int hw_dmic_map[MFLD_MAX_HW_CH]; + unsigned int available_dmics; +diff --git a/drivers/staging/intel_sst/intel_sst_app_interface.c b/drivers/staging/intel_sst/intel_sst_app_interface.c +index 3357c7d..21eb626 100644 +--- a/drivers/staging/intel_sst/intel_sst_app_interface.c ++++ b/drivers/staging/intel_sst/intel_sst_app_interface.c +@@ -1447,6 +1447,11 @@ free_iobufs: + retval = sst_ioctl_tuning_params(arg); + break; + ++ case _IOC_NR(SNDRV_SST_TRISTATE_PMIC): ++ if (sst_drv_ctx->scard_ops->tristate_pmic) ++ sst_drv_ctx->scard_ops->tristate_pmic(arg); ++ break; ++ + default: + retval = -EINVAL; + } +diff --git a/drivers/staging/intel_sst/intel_sst_ioctl.h b/drivers/staging/intel_sst/intel_sst_ioctl.h +index 5da5ee0..dec99df 100644 +--- a/drivers/staging/intel_sst/intel_sst_ioctl.h ++++ b/drivers/staging/intel_sst/intel_sst_ioctl.h +@@ -436,5 +436,6 @@ struct snd_sst_tuning_params { + #define SNDRV_SST_SET_ALGO _IOW('L', 0x30, struct snd_ppp_params *) + #define SNDRV_SST_GET_ALGO _IOWR('L', 0x31, struct snd_ppp_params *) + #define SNDRV_SST_TUNING_PARAMS _IOW('L', 0x32, struct snd_sst_tuning_params *) ++#define SNDRV_SST_TRISTATE_PMIC _IOW('L', 0x33, int) + + #endif /* __INTEL_SST_IOCTL_H__ */ +diff --git a/drivers/staging/intel_sst/intelmid_v2_control.c b/drivers/staging/intel_sst/intelmid_v2_control.c +index b47c887..ad9d494 100644 +--- a/drivers/staging/intel_sst/intelmid_v2_control.c ++++ b/drivers/staging/intel_sst/intelmid_v2_control.c +@@ -1146,6 +1146,20 @@ static int nc_jack_enable(void) + return 0; + } + ++static int nc_tristate_pmic(int tristate) ++{ ++ struct sc_reg_access sc_access; ++ ++ sc_access.reg_addr = AUDIOPORT1; ++ if (tristate) ++ sc_access.value = 0x0; ++ else ++ sc_access.value = 0x98; ++ sc_access.mask = 0x0; ++ ++ return sst_sc_reg_access(&sc_access, PMIC_WRITE, 1); ++} ++ + struct snd_pmic_ops snd_pmic_ops_nc = { + .input_dev_id = DMIC, + .output_dev_id = INTERNAL_SPKR, +@@ -1167,4 +1181,5 @@ struct snd_pmic_ops snd_pmic_ops_nc = { + .power_down_pmic = nc_power_down, + .pmic_irq_cb = nc_pmic_irq_cb, + .pmic_jack_enable = nc_jack_enable, ++ .tristate_pmic = nc_tristate_pmic, + }; +-- +1.7.2.3 + ++++++ linux-2.6.37-sst-add-another-meaning-for-device_route-to-bypass-t.patch (new) --- linux-2.6.37-sst-add-another-meaning-for-device_route-to-bypass-t.patch+++ linux-2.6.37-sst-add-another-meaning-for-device_route-to-bypass-t.patch+From b0064cf74706faca7acbd8dacfdd1037a83d7b7a Mon Sep 17 00:00:00 2001 +From: Lu Guanqun <[email protected]><mailto:[email protected]> +Date: Wed, 22 Jun 2011 07:01:18 +0800 +Subject: [PATCH 1/2] sst: add another meaning for device_route to bypass the preparation and activation + +When we call SNDRV_SST_SET_TARGET_DEVICE ioctl, sometimes we only need to +change the sample rate and leave other stuff untouched, we don't need PMIC to +do the preparation and activation. For these cases, we can pass number 3 +instead of number 0. I admit that's kind of hack. + +Signed-off-by: Lu Guanqun <[email protected]><mailto:[email protected]> +--- + .../staging/intel_sst/intel_sst_stream_encoded.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/drivers/staging/intel_sst/intel_sst_stream_encoded.c b/drivers/staging/intel_sst/intel_sst_stream_encoded.c +index 7db72cc..fab4973 100644 +--- a/drivers/staging/intel_sst/intel_sst_stream_encoded.c ++++ b/drivers/staging/intel_sst/intel_sst_stream_encoded.c +@@ -457,9 +457,13 @@ err: + int sst_target_device_select(struct snd_sst_target_device *target) + { + int retval, i, prepare_count = 0; ++ unsigned int orig_device_route = target->device_route; + + pr_debug("sst: Target Device Select\n"); + ++ if (target->device_route == 3) ++ target->device_route = 0; ++ + if (target->device_route < 0 || target->device_route > 2) { + pr_err("sst: device route is invalid\n"); + return -EINVAL; +@@ -476,6 +480,10 @@ int sst_target_device_select(struct snd_sst_target_device *target) + retval = sst_send_target(target); + if (retval) + return retval; ++ ++ if (orig_device_route == 3) ++ return retval; ++ + for (i = 0; i < SST_MAX_TARGET_DEVICES; i++) { + if (target->devices[i].action == SND_SST_PORT_ACTIVATE) { + pr_debug("sst: activate called in %d\n", i); +-- +1.7.2.3 + ++++++ series --- series +++ series @@ -188,6 +188,8 @@ linux-2.6.37-camera-ov5640-ov9740-version-0.954_to_0.955.patch linux-2.6.37-camera-ov5640-ov9740-version-0.955_to_0.956.patch linux-2.6.37-camera-ov5640-ov9740-version-0.956_to_0.957.patch +linux-2.6.37-camera-ov5640-ov9740-version-0.957_to_0.958.patch +linux-2.6.37-camera-ov5640-ov9740-version-0.958_to_0.959.patch # ehci patches linux-2.6.37-ehci-runtime-pm.patch @@ -209,6 +211,8 @@ linux-2.6.37-sst-power-sequence.patch linux-2.6.37-sst-add-Master-Volume.patch linux-2.6.37-sst-fix-pop-sound-from-speaker-after-playback.patch +linux-2.6.37-sst-add-another-meaning-for-device_route-to-bypass-t.patch +linux-2.6.37-sst-add-a-new-ioctl-on-intel_sst-to-tristate-PMIC-dy.patch # keys linux-2.6.37-gpio-keys-add-new-power-key.patch _______________________________________________ MeeGo-commits mailing list [email protected]<mailto:[email protected]>http://lists.meego.com/listinfo/meego-commits _______________________________________________ MeeGo-packaging mailing list [email protected] http://lists.meego.com/listinfo/meego-packaging
