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.
