Geode integrated peripherals support?

Bernd Walter ticso at cicely12.cicely.de
Fri Jan 21 07:26:16 PST 2005


On Fri, Jan 21, 2005 at 06:52:41AM +0100, Milan Obuch wrote:
> On Friday 21 January 2005 00:51, John-Mark Gurney wrote:
> > Milan Obuch wrote this message on Wed, Jan 19, 2005 at 10:00 +0100:
> > >
> [skip]
> > > Great, could we cooperate?
> >
> > Sure, though Joerg Wunsch has been doing work w/ I2C more recently than
> > me, so you might want to drop him an email.
> >
> 
> Is he on this list? I have no other idea how coould I reach him.
> 
> > > I know there are two modes - bit banging software i2c bus and real
> > > hardware controller. Which one would be easier to begin with? With geode,
> > > both are possible. Pins designed for ACCESS.bus (at least the second,
> > > there are two buses integrated) can be used as GPIO pins.
> >
> > The hardware I worked on was bit banging only, so I used that interface
> > and it was surprisingly easy, since you just define an interface that
> > will get called by the i2c bus to do the necessary toggling... Of course
> > this is more cpu intensive since it requires timing and other things
> > like that..
> >
> 
> Maybe I will try to make bit banged version first. Just when I find all the 
> subtle details necessary to toggle pins...

You just need to know 3 things:
- how to drive the line low
- how to toggle the line into high impedance
- how to ask line status

> > Take a look at sys/dev/iicbus/iic*_if.m.  Those are the two different
> > programming interfaces.  You of course just need to do one of the two...
> >
> 
> I did. Actually first I must figure how this all contributes to total 
> picture... I am on my way. I must first know the hardware part, which is not 
> that easy on the first stage, but I am reading through specs, some examples, 
> mostly in assembly. I am doing my homework :)
> 
> [skip]
> >
> > You can take a look at lpbb for a simple example of the bit banging
> > interface... sys/dev/ppbus/lpbb.c  The other controllers also implement
> > iicbus directly..  You can look at the modules/i2c/contollers/*/Makefile
> > to see who uses iicbus_if.h to see examples that implement it..
> >
> 
> On the other side - what is sys/dev/pcf directory for? I do not see those 
> files referenced elsewhere... Other than that, device pcf looks like the best 
> candidate to work with. I would like to use integrated controller, naturally.

pcf(4) ist the driver for Philips PCF8584 i2c controller chips.
Those or compatible of them are often used on non i386 hardware or add
on cards - they are also often used in european consumer hardware such
as video recordes and TVs.
x86 chipsets usually do bit bang on GPIO or implement smbus controllers.
smbbus is a special variant of i2c with specified command cycles.
While smbus controllers can do more for you than i2c it is less generic
when talking to plain i2c hardware.
It is largely preferable to support hardware controllers if you have
one - not only for performance and efficiency reason, but also because
it is almost impossible to get the timming correct for doing multi
master support.
FreeBSD bit bang driver also doesn't support multi master for that
reason, but it just requires you to implement line toggling functions.

-- 
B.Walter                   BWCT                http://www.bwct.de
bernd at bwct.de                                  info at bwct.de



More information about the freebsd-hackers mailing list