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.