This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM3730: Dark Frame Subtraction example for DM3730

Part Number: DM3730

Hello,

I am currently using the DM3730's camera ISP Preview block to perform some image de-noising, specifically with the use of PRV_NF and NFEN mode.  While this mode has proven effective in reducing the spacial image noise, it does negatively impact image sharpness.

Given that the image noise resembles fixed pattern noise, I've tried as an alternative to utilize the DM3730's dark frame subtraction feature in the ISP previewer, but get the following stream of errors after having set up the PRV_DSDR_ADDR and PRV_DRKF_OFFSET registers, then enable the DRKFEN bit of PVR_PCR:

[  127.827667] omap-iommu omap-iommu.0: omap2_iommu_fault_isr:  da:00000000 translation fault
[  127.836090] omap-iommu omap-iommu.0: iommu_fault_handler: da:00000000 pgd:df964000 *pgd:9ccf1c01 pte:dccf1c00 *pte:00000000
...

In my LInux 2.6.32 kernel's isp_preview_init() function I've added the following:

...

        fpn_corr_ptr = kzalloc(400*400*2, GFP_ATOMIC);  /* also tried GFP_KERNEL w/o success */
        isppreview_set_darkaddr(isp_prev, (u32)fpn_corr_ptr);  /* also tried phys addr w/o success */
        isppreview_config_darklineoffset(isp_prev, 400);

        printk("%s, fpn_corr_ptr: 0x%x\n", __FUNCTION__, (u32)fpn_corr_ptr);
        fpn_corr_pa_ptr = virt_to_phys(fpn_corr_ptr);
        printk("%s, fpn_corr_pa_ptr: 0x%x\n", __FUNCTION__, (u32)fpn_corr_pa_ptr);
...

[   10.710937] isp_preview_init, fpn_corr_ptr: 0xdfa80000
[   10.716125] isp_preview_init, fpn_corr_pa_ptr: 0x9fa80000
...

I've looked thru various TIE2E post on Dark Frame Subtraction as well as the DM3730 TRM's ISP VPBE Preview section but haven't been able to find more details on DF buffer requirements other than keeping the DF address 32-byte aligned.

So I'm wondering if anyone has a working example of how to create a DF buffer that won't cause iommu faults when DF mode is enabled.

Thanks,

Sam Porter