Got it - instead of V4L2_PIX_FMT_YUV422P, CSI format needs to be set to 
V4L2_PIX_FMT_NV16. Also display needs to set as:

format: DISP_FORMAT_YUV422
mode: DISP_MOD_NON_MB_UV_COMBINED
seq: DISP_SEQ_UVUV

works like a charm :)

On Thursday, March 20, 2014 10:08:15 AM UTC+1, Ivan Kozic wrote:
>
> This sunxi HW/SW/Docu combo is a complete mess. There's one more thing 
> specific to YUV422 16bit capture - memory alignment is a bit different than 
> when using 8bit capture. In fact, up to now, I've been using planar 
> capture, which in turn means that Y, U and V components are stored into 
> separate buffers (planes) => 3 addresses are generated, one for each 
> buffer. So for example memory would look like:
>
> 0x10: Frame 1 Y plane
> 0x20: Frame 1 U plane
> 0x30: Frame 1 V plane
> 0x40: Frame 2 Y plane
> ...
>
> However, for 16bit capture when using the same CSI setting, I get 
> UV_combined subcase - Y is stored in one buffer/plane, while U/V is stored 
> in the other (so one plane for both U and V) => 2 addresses are generated. 
> Memory:
>
> 0x10: Frame 1 Y plane
> 0x20: Frame 1 U/V plane
> 0x30: Frame 2 Y plane
> ...
>
> Admittedly, my fixes are quite dirty and some things might not really be 
> optimal in my kernel (V4L MBUS codes are completely wrong for instance), 
> but I still think that this alignment is one of the undocumented things by 
> Allwinner - this alignment is set via CSI_CONF register - OUTPUT_FMT bits, 
> but YUV422 16bit is not even mentioned here, so...
>
> Anyway, the reason that I'm mentioning this is that display driver needs 
> correct info about alignment to work properly - I'm still trying out stuff 
> here, since there is no SW user manual on how to properly use display 
> ioctls in case of UV combined mode, but I don't think it will be a big 
> issue to start it up correctly. Will post back when I get it right.
>
> On Tuesday, March 18, 2014 8:56:22 AM UTC+1, Ivan Kozic wrote:
>>
>> Cool, I was under the impression that VPU is quite messy to start on 
>> these Allwinners - I'll probably have a follow-up project where I would use 
>> VPU as well, so it's very good that someone's got it working.
>> Just wanted to say that it would be good to check the register settings 
>> for VPU, but in fact I cannot find any registers for VPU in the User 
>> Manual...
>>
>>
>> On Mon, Mar 17, 2014 at 6:36 PM, [email protected] 
>> <[email protected]>wrote:
>>
>>> Yes, the kernel source is inside the Android SDK downloads. I can send
>>> you files if you need them so that you don't have to install the 4.2GB
>>> thing.
>>>
>>> I was able to get my camera working. I then got stuck on the h.264
>>> encoder. The encoder works but it is not compressing enough. No matter
>>> what parameters I give it the output stream is still 5-10Mb/s. I need
>>> a stream less than 1Mb/s.
>>>
>>> On Mon, Mar 17, 2014 at 12:19 PM, Ivan Kozic <[email protected]> wrote:
>>> > One more update - it seems that the error comes from me :) - I've used 
>>> bad
>>> > multiplex options for d8..d15 pins (should be 5, but copy-paste from 
>>> CSI1
>>> > made it 3 - standard copy-paste mistake...).
>>> > Anyway, all the other fixes that I've posted should be implemented, as 
>>> it
>>> > will not work without them. Only the last one is my fault.
>>> >
>>> >
>>> > On Monday, March 17, 2014 4:53:46 PM UTC+1, Ivan Kozic wrote:
>>> >>
>>> >> Very happy to say that I've got it :)
>>> >>
>>> >> The solution is actually very simple - DMA seems to work just fine, 
>>> the
>>> >> problem is with GPIOs - even though we initialize fex file with
>>> >> csi_d0..csi_d15, it seems that only settings for d0..d7 are applied.
>>> >> For quick check, I've modified csi_probe function found in 
>>> sun4i_drv_csi.c
>>> >> like this:
>>> >>
>>> >> /*pin resource*/
>>> >>     dev->csi_pin_hd = gpio_request_ex("csi0_para",NULL);
>>> >>     if (dev->csi_pin_hd==-1) {
>>> >>         csi_err("csi0 pin request error!\n");
>>> >>         ret = -ENXIO;
>>> >>         goto err_irq;
>>> >>     }
>>> >>
>>> >>     // IKfix - override pin muxing just in case
>>> >>     writel(0x33333333, 0xf1c20800+0x90);    // this is really just in
>>> >> case, as PE PIO group works
>>> >>     writel(0x00003333, 0xf1c20800+0x94);    // this is really just in
>>> >> case, as PE PIO group works
>>> >>     writel(0x55553333, 0xf1c20800+0xd8);    // this is for PG PIO 
>>> group -
>>> >> configure PG gpios as CSI0
>>> >>     writel(0x00005555, 0xf1c20800+0xdc);    // this is for PG PIO 
>>> group -
>>> >> configure PG gpios as CSI0
>>> >>
>>> >> Basically, just after the gpio_request_ex() has finished its work (by 
>>> the
>>> >> way, this function should have already did this, but for some reason 
>>> it
>>> >> didn't), I added a few lines of just-in-case configuration. First two 
>>> are
>>> >> for lower 8 bits (d0..d7) - these are really just in case, as I've
>>> >> previously verified that it works. Second two are for upper 8 bits
>>> >> (d8..d15), and this is the culprit - gpio_request_ex should have 
>>> already did
>>> >> this, as it's in the fex file and a correct number of gpios is 
>>> reported (for
>>> >> my config - 22).
>>> >>
>>> >> One problem solved.
>>> >>
>>> >> I would have figured out gpios last week, but something in the kernel 
>>> is
>>> >> not letting me access PIO registers via /dev/mem from userland - I 
>>> always
>>> >> get seg faults when trying to access PIO base (0xf1c20800) and all the
>>> >> subsequent registers. As I thought DMA is the issue, I gave up on 
>>> finding
>>> >> the culprit for the seg fault. Maybe some protection mechanism in 
>>> action or
>>> >> similar.
>>> >>
>>> >> On Monday, March 17, 2014 3:44:48 PM UTC+1, Ivan Kozic wrote:
>>> >>>
>>> >>> It might be somewhere in the Android SDK on this download server (it
>>> >>> seems that only SDK has source files - everything else is either
>>> >>> documentation or binaries).
>>> >>> Either way, I'm very surprised that people from linux-sunxi git repo 
>>> are
>>> >>> ignoring this, as official git repo for sunxi still has the old 
>>> driver
>>> >>> (which is pretty much unusable).
>>> >>>
>>> >>> Also ov5640 driver is much better in the qubir link that I've sent 
>>> you -
>>> >>> not sure if it can be used for our stuff, as it seems that V4L2 
>>> integration
>>> >>> is a bit different. The same goes for CSI unfortunately, so I'll 
>>> probably
>>> >>> have to use heavily modified kernel from git.
>>> >>>
>>> >>> By the way - on the download server that you've sent there is a nice
>>> >>> document about A10's CSI unit - I'm just preparing to read it.
>>> >>>
>>> >>> Of course, if I find anything, I'll post back.
>>> >>>
>>> >>> On Monday, March 17, 2014 2:41:23 PM UTC+1, Jon Smirl wrote:
>>> >>>>
>>> >>>> On Mon, Mar 17, 2014 at 6:36 AM, Ivan Kozic <[email protected]> 
>>> wrote:
>>> >>>> > Hi John,
>>> >>>> >
>>> >>>> > I've only found it here:
>>> >>>> >
>>> >>>> >
>>> >>>> > 
>>> https://github.com/qubir/PhoenixA20_linux_sourcecode/tree/master/drivers/media/video/
>>> >>>>
>>> >>>> It is somewhere on the download server:
>>> >>>> http://dl.linux-sunxi.org/
>>> >>>>
>>> >>>>
>>> >>>> >
>>> >>>> > but this is not even forked from anywhere. Also it seems to be a
>>> >>>> > normal
>>> >>>> > linux source - although, as far as I can see, both android and 
>>> linux
>>> >>>> > kernels
>>> >>>> > are integrated into this source.
>>> >>>> > Although I have no experience with Android at all, so I might be
>>> >>>> > wrong.
>>> >>>> >
>>> >>>> > I will either try to build this one, or just update my own CSI 
>>> driver
>>> >>>> > with
>>> >>>> > the files from here, although that might not be a good idea, but 
>>> I'll
>>> >>>> > try
>>> >>>> > either way.
>>> >>>> >
>>> >>>> > If you remember where you've got the files from at some point, 
>>> please
>>> >>>> > post
>>> >>>> > back - I don't like forking unknown kernel sources, and this 
>>> qubir one
>>> >>>> > seems
>>> >>>> > half-legit somehow...
>>> >>>> >
>>> >>>> > On Monday, March 17, 2014 2:36:56 AM UTC+1, Jon Smirl wrote:
>>> >>>> >>
>>> >>>> >> On Sun, Mar 16, 2014 at 6:52 PM, Ivan Kozic <[email protected]>
>>> >>>> >> wrote:
>>> >>>> >> > Hi John - could you give me a link to this Android tree? I 
>>> seem to
>>> >>>> >> > have
>>> >>>> >> > difficulties finding it on GitHub...
>>> >>>> >>
>>> >>>> >> It is in one of the sunxi download directories. I forgot which 
>>> one I
>>> >>>> >> got it from. Maybe the Olimex directory.
>>> >>>> >>
>>> >>>> >> It is 4.2GB file.
>>> >>>> >>
>>> >>>> >> >
>>> >>>> >> >
>>> >>>> >> > On Sat, Mar 15, 2014 at 4:35 PM, [email protected]
>>> >>>> >> > <[email protected]>
>>> >>>> >> > wrote:
>>> >>>> >> >>
>>> >>>> >> >> On Sat, Mar 15, 2014 at 11:29 AM, Ivan Kozic <
>>> [email protected]>
>>> >>>> >> >> wrote:
>>> >>>> >> >> > Hi John,
>>> >>>> >> >> >
>>> >>>> >> >> > Wow thanks - this looks quite cool - it seems that they've
>>> >>>> >> >> > started
>>> >>>> >> >> > working
>>> >>>> >> >> > on YUV422 16bit and CCIR656 as well. May I ask where did you
>>> >>>> >> >> > find the
>>> >>>> >> >> > driver?
>>> >>>> >> >>
>>> >>>> >> >> It is from the current Allwinner Android tree. The CSI driver 
>>> in
>>> >>>> >> >> sunxi
>>> >>>> >> >> is about two years old.
>>> >>>> >> >>
>>> >>>> >> >> sunxi kernel needs to be updated to use this driver.
>>> >>>> >> >>
>>> >>>> >> >> > One crucial file is missing - sun4i_csi_core.h or
>>> >>>> >> >> > sunxi_csi_core.h I
>>> >>>> >> >> > guess,
>>> >>>> >> >> > as it's not for A10 anymore.
>>> >>>> >> >> >
>>> >>>> >> >> >
>>> >>>> >> >> > On Saturday, March 15, 2014 1:37:13 AM UTC+1, Jon Smirl 
>>> wrote:
>>> >>>> >> >> >>
>>> >>>> >> >> >> I copied from the A10 manual.
>>> >>>> >> >> >>
>>> >>>> >> >> >> Here's a more recent driver....
>>> >>>> >> >> >>
>>> >>>> >> >> >> On Fri, Mar 14, 2014 at 7:36 PM, Ivan Kozic <
>>> [email protected]>
>>> >>>> >> >> >> wrote:
>>> >>>> >> >> >> > Hi John - just saw your post. I think you're looking at a
>>> >>>> >> >> >> > wrong
>>> >>>> >> >> >> > document, as
>>> >>>> >> >> >> > for A20, the register setting 100 for bits 22:20 is 
>>> YUV422
>>> >>>> >> >> >> > 16bit -
>>> >>>> >> >> >> > it's
>>> >>>> >> >> >> > written in the A20 User Manual on page 371. The problem 
>>> is in
>>> >>>> >> >> >> > fact
>>> >>>> >> >> >> > this
>>> >>>> >> >> >> > very
>>> >>>> >> >> >> > vague information in the User Manual - it's almost 
>>> useless.
>>> >>>> >> >> >> > This
>>> >>>> >> >> >> > is
>>> >>>> >> >> >> > why
>>> >>>> >> >> >> > I'm
>>> >>>> >> >> >> > asking for help from someone who maybe knows the kernel 
>>> a bit
>>> >>>> >> >> >> > more
>>> >>>> >> >> >> > -
>>> >>>> >> >> >> > for
>>> >>>> >> >> >> > instance, I'm not even sure which DMA is used for 
>>> transfers
>>> >>>> >> >> >> > from
>>> >>>> >> >> >> > CSI
>>> >>>> >> >> >> > to
>>> >>>> >> >> >> > memory, because I have to figure it out from the driver.
>>> >>>> >> >> >> >
>>> >>>> >> >> >> > I'm also not sure where to search for the driver or more
>>> >>>> >> >> >> > help.
>>> >>>> >> >> >> > This
>>> >>>> >> >> >> > group
>>> >>>> >> >> >> > seems most professional of all by far - I have tried to
>>> >>>> >> >> >> > contact
>>> >>>> >> >> >> > Allwinner,
>>> >>>> >> >> >> > but to no avail so far. As for sunxi kernel and drivers, 
>>> I
>>> >>>> >> >> >> > only
>>> >>>> >> >> >> > know
>>> >>>> >> >> >> > of
>>> >>>> >> >> >> > the
>>> >>>> >> >> >> > Git branch, but noone there has touched CSI driver for 8
>>> >>>> >> >> >> > months.
>>> >>>> >> >> >> > Although I
>>> >>>> >> >> >> > did always look in the 3.4 branch, maybe I should check 
>>> out
>>> >>>> >> >> >> > mainline...
>>> >>>> >> >> >> >
>>> >>>> >> >> >> > Anyway, I'll search for the actual solution myself and 
>>> if I
>>> >>>> >> >> >> > find
>>> >>>> >> >> >> > it
>>> >>>> >> >> >> > post
>>> >>>> >> >> >> > back - If anyone can speed me up, I'll be most grateful.
>>> >>>> >> >> >> >
>>> >>>> >> >> >> >
>>> >>>> >> >> >> > On Saturday, March 15, 2014 12:01:41 AM UTC+1, Jon Smirl
>>> >>>> >> >> >> > wrote:
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> I haven't tried any of this...
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> Look like you would set the input format...
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> 22:20 R/W 3 INPUT_FMT
>>> >>>> >> >> >> >> Input data format
>>> >>>> >> >> >> >> 000: RAW stream
>>> >>>> >> >> >> >> 001: reserved
>>> >>>> >> >> >> >> 010: CCIR656(one channel)
>>> >>>> >> >> >> >> 011: YUV422
>>> >>>> >> >> >> >> 100: YUV444({R, B, G} or {Pr, Pb, Y})
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> When the input format is set YUV444
>>> >>>> >> >> >> >> 1100: field planar YUV 444
>>> >>>> >> >> >> >> 1101: field planar YUV 422 UV combined
>>> >>>> >> >> >> >> 1110: frame planar YUV 444
>>> >>>> >> >> >> >> 1111: frame planar YUV 422 UV combined
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> The the output format is always 24b, right?
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> You're going to have to read the user manual. I don't
>>> >>>> >> >> >> >> believe
>>> >>>> >> >> >> >> anyone
>>> >>>> >> >> >> >> has played with this before. But it looks like the 
>>> hardware
>>> >>>> >> >> >> >> supports
>>> >>>> >> >> >> >> it.
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> Also - the CSI driver in the sunxi tree is quite old. 
>>> First
>>> >>>> >> >> >> >> thing
>>> >>>> >> >> >> >> I'd
>>> >>>> >> >> >> >> do is update it using the most recent Allwinner CSI 
>>> driver
>>> >>>> >> >> >> >> we can
>>> >>>> >> >> >> >> locate. You might even get lucky and the newer Allwinner
>>> >>>> >> >> >> >> drivers
>>> >>>> >> >> >> >> could
>>> >>>> >> >> >> >> support 16b.
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> On Fri, Mar 14, 2014 at 3:57 PM, Martin Collins
>>> >>>> >> >> >> >> <[email protected]>
>>> >>>> >> >> >> >> wrote:
>>> >>>> >> >> >> >> > On 2014-03-14 10:42, Ivan Kozic wrote:
>>> >>>> >> >> >> >> >>
>>> >>>> >> >> >> >> >> If someone knows something, please share - if I had 
>>> some
>>> >>>> >> >> >> >> >> more
>>> >>>> >> >> >> >> >> documentation, I would have probably already made the
>>> >>>> >> >> >> >> >> whole
>>> >>>> >> >> >> >> >> thing
>>> >>>> >> >> >> >> >> work,
>>> >>>> >> >> >> >> >
>>> >>>> >> >> >> >> > I don't know anything, but by chance I was looking 
>>> here
>>> >>>> >> >> >> >> > today:
>>> >>>> >> >> >> >> > http://dl.linux-sunxi.org/A10/
>>> >>>> >> >> >> >> > My impression was that there is an 8 bit channel and 
>>> a 24
>>> >>>> >> >> >> >> > bit
>>> >>>> >> >> >> >> > channel.
>>> >>>> >> >> >> >> > So perhaps it won't do 16 bits?
>>> >>>> >> >> >> >> >
>>> >>>> >> >> >> >> > Martin
>>> >>>> >> >> >> >> >
>>> >>>> >> >> >> >> > --
>>> >>>> >> >> >> >> > You received this message because you are subscribed 
>>> to
>>> >>>> >> >> >> >> > the
>>> >>>> >> >> >> >> > Google
>>> >>>> >> >> >> >> > Groups "linux-sunxi" group.
>>> >>>> >> >> >> >> > To unsubscribe from this group and stop receiving 
>>> emails
>>> >>>> >> >> >> >> > from
>>> >>>> >> >> >> >> > it,
>>> >>>> >> >> >> >> > send
>>> >>>> >> >> >> >> > an email to [email protected].
>>> >>>> >> >> >> >> > For more options, visit
>>> >>>> >> >> >> >> > https://groups.google.com/d/optout.
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >>
>>> >>>> >> >> >> >> --
>>> >>>> >> >> >> >> Jon Smirl
>>> >>>> >> >> >> >> [email protected]
>>> >>>> >> >> >> >
>>> >>>> >> >> >> > --
>>> >>>> >> >> >> > You received this message because you are subscribed to 
>>> the
>>> >>>> >> >> >> > Google
>>> >>>> >> >> >> > Groups
>>> >>>> >> >> >> > "linux-sunxi" group.
>>> >>>> >> >> >> > To unsubscribe from this group and stop receiving emails 
>>> from
>>> >>>> >> >> >> > it,
>>> >>>> >> >> >> > send
>>> >>>> >> >> >> > an
>>> >>>> >> >> >> > email to [email protected].
>>> >>>> >> >> >> > For more options, visit 
>>> https://groups.google.com/d/optout.
>>> >>>> >> >> >>
>>> >>>> >> >> >>
>>> >>>> >> >> >>
>>> >>>> >> >> >> --
>>> >>>> >> >> >> Jon Smirl
>>> >>>> >> >> >> [email protected]
>>> >>>> >> >> >
>>> >>>> >> >> > --
>>> >>>> >> >> > You received this message because you are subscribed to the
>>> >>>> >> >> > Google
>>> >>>> >> >> > Groups
>>> >>>> >> >> > "linux-sunxi" group.
>>> >>>> >> >> > To unsubscribe from this group and stop receiving emails 
>>> from
>>> >>>> >> >> > it,
>>> >>>> >> >> > send
>>> >>>> >> >> > an
>>> >>>> >> >> > email to [email protected].
>>> >>>> >> >> > For more options, visit https://groups.google.com/d/optout.
>>> >>>> >> >>
>>> >>>> >> >>
>>> >>>> >> >>
>>> >>>> >> >> --
>>> >>>> >> >> Jon Smirl
>>> >>>> >> >> [email protected]
>>> >>>> >> >>
>>> >>>> >> >> --
>>> >>>> >> >> You received this message because you are subscribed to a 
>>> topic in
>>> >>>> >> >> the
>>> >>>> >> >> Google Groups "linux-sunxi" group.
>>> >>>> >> >> To unsubscribe from this topic, visit
>>> >>>> >> >>
>>> >>>> >> >> 
>>> https://groups.google.com/d/topic/linux-sunxi/vU5-3Pc3iOs/unsubscribe.
>>> >>>> >> >> To unsubscribe from this group and all its topics, send an 
>>> email
>>> >>>> >> >> to
>>> >>>> >> >> [email protected].
>>> >>>> >> >>
>>> >>>> >> >> For more options, visit https://groups.google.com/d/optout.
>>> >>>> >> >
>>> >>>> >> >
>>> >>>> >> > --
>>> >>>> >> > You received this message because you are subscribed to the 
>>> Google
>>> >>>> >> > Groups
>>> >>>> >> > "linux-sunxi" group.
>>> >>>> >> > To unsubscribe from this group and stop receiving emails from 
>>> it,
>>> >>>> >> > send
>>> >>>> >> > an
>>> >>>> >> > email to [email protected].
>>> >>>> >> > For more options, visit https://groups.google.com/d/optout.
>>> >>>> >>
>>> >>>> >>
>>> >>>> >>
>>> >>>> >> --
>>> >>>> >> Jon Smirl
>>> >>>> >> [email protected]
>>> >>>> >
>>> >>>> > --
>>> >>>> > You received this message because you are subscribed to the Google
>>> >>>> > Groups
>>> >>>> > "linux-sunxi" group.
>>> >>>> > To unsubscribe from this group and stop receiving emails from it, 
>>> send
>>> >>>> > an
>>> >>>> > email to [email protected].
>>> >>>> > For more options, visit https://groups.google.com/d/optout.
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> --
>>> >>>> Jon Smirl
>>> >>>> [email protected]
>>> >
>>> > --
>>> > You received this message because you are subscribed to the Google 
>>> Groups
>>> > "linux-sunxi" group.
>>> > To unsubscribe from this group and stop receiving emails from it, send 
>>> an
>>> > email to [email protected].
>>> > For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>
>>> --
>>> Jon Smirl
>>> [email protected]
>>>
>>> --
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "linux-sunxi" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/linux-sunxi/vU5-3Pc3iOs/unsubscribe.
>>> To unsubscribe from this group and all of its topics, send an email to 
>>> [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to