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 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