Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Aug 2010 14:36:57 +0200
From:      Guillaume Ballet <gballet@gmail.com>
To:        freebsd-arm@freebsd.org, ben.r.gray@gmail.com
Subject:   Re: OMAP3530 - Beagleboard and I2C problems
Message-ID:  <AANLkTimXvb4C_=ekd4hfXJ89-jPqyPhYy6E8kXVL9o%2BO@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hey Ben,

I have been working for a port myself, at
http://code.google.com/p/beagleboard-freebsd/ Haven't had the time to
work on it lately, though.

> Message: 2
> Date: Mon, 09 Aug 2010 22:42:17 +0100
> From: Ben Gray <ben.r.gray@gmail.com>
> Subject: OMAP3530 - Beagleboard and I2C problems
> To: freebsd-arm@freebsd.org
> Message-ID: <4C607639.9050506@gmail.com>
> Content-Type: text/plain; charset=3DISO-8859-1; format=3Dflowed
>
> Hi,
>
> =A0 =A0I've been working on a port of FreeBSD to Texas Instruments OMAP35=
30
> for a while now. I have the basic drivers, Clocks, MMC, DMA, GPIO's,
> etc. The kernel is coming up, however it crashes with a seg fault when
> starting the init process, this is probably caused by the hacks I had to
> put in the pmap code to get it to work with ARMv7 MMU's, but that's an
> email for another day.
>
> =A0 =A0The problem I'm currently having is with the I2C code and it is
> perhaps highlighting a more fundamental problem with my port so far.
> Currently I have an 'omap3' bus device, which is the parent for all the
> other peripheral drivers (I2C, MMC, DMA, etc). =A0These child bus drivers
> are added during the attach call of the parent, but at that time IRQ's
> are not enabled and nor is the system clocking code. So the problem I
> have is that during the attach phase of the I2C device driver I want to
> be able to send messages over the I2C bus, but my bus driver doesn't
> work because IRQ's are still disabled. =A0So what is the correct solution
> for this? =A0How do I delay device initialisation to after this?

I had some basic intc controller that I tested with the timer. I also
have an even more basic interrupt allocation support in the form of a
bus. I also have some changes for the pmap you might be interested in.
I can check at what I have tonight that you don't have and send it to
you. I will help you with the merge of what you don't already have.

>
> =A0 =A0Is there documentation anyone can point me at that describes the
> startup phases? or alternatively examples in the existing code base?
> I've looked at the current ARM ports, and on the face of it they seem to
> suffer the same problem.
>
I only took a quick look at your code (once again, will take a closer
look at it tonight), and I didn't find the part where you are
inserting the devices. As far as I recall (possibly incorrectly), you
can specify in which order you insert devices. What I did was to
insert the intc device first, so that it would be ready when inserting
other drivers.

>
> =A0 =A0In case anyone is interested some of my work to date is available =
on
> googlecode here <http://code.google.com/p/beagleboard-freebsd/>. At the
> moment it can't just be pulled into the tree, partially because it's
> missing the patches needed for the pmap code, but mostly because large
> parts of it don't work properly :-)

I'll try it with my own pmap changes :)

>
> =A0 =A0And thanks to to the author of the freebsd-bgb googlecode project,
> without that I probably wouldn't have got started.

You are welcome. I'm still interested in the port even if I have less
time to work on it for the moment - still I'm available for doing some
work, though :)

Guillaume



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTimXvb4C_=ekd4hfXJ89-jPqyPhYy6E8kXVL9o%2BO>