Back to home page

OSCL-LXR

 
 

    


0001 Some notes about the working of the atomisp drivers (learned while working
0002 on cleaning it up).
0003 
0004 The atomisp seems to be a generic DSP(ISP) like processor without a fixed
0005 pipeline. It does not have its own memory, but instead uses main memory.
0006 The ISP has its own address-space and main memory needs to be mapped into
0007 its address space through the ISP's MMU.
0008 
0009 Memory is allocated by the hmm code. hmm_alloc() returns an ISP virtual
0010 address. The hmm code keeps a list of all allocations and when necessary
0011 the hmm code finds the backing hmm-buffer-object (hmm_bo) by looking
0012 up the hmm_bo based on the ISP virtual address.
0013 
0014 The actual processing pipeline is made by loading one or more programs,
0015 called binaries. The shisp_240??0_v21.bin firmware file contains many
0016 different binaries. Binaries are picked by filling a ia_css_binary_descr
0017 struct with various input and output parameters and then calling
0018 ia_css_binary_find(). Some binaries support creating multiple outputs
0019 (preview + video frame?) at the same time.
0020 
0021 For example for the /dev/video0 preview node load_preview_binaries()
0022 from atomisp/pci/sh_css.c is called and then loads a preview and
0023 optionally a scalar binary. Note when digital zoom is disabled
0024 (it is enabled by default) only the preview binary is loaded.
0025 So in this case a single binary handles the entire pipeline.
0026 
0027 Since getting a picture requires multiple processing steps,
0028 this means that unlike in fixed pipelines the soft pipelines
0029 on the ISP can do multiple processing steps in a single pipeline
0030 element (in a single binary).