Adding "host as slave" support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Mark,

On Wed, 17 Nov 2004 20:56:44 -0500, Mark Studebaker <mds4 at verizon.net> wrote:
> The SMBus host is generally the 'ARP Master' if ARP is used (see the SMBus 2.0 spec for details...),
> so host-as-slave must be implemented to support the 'Notify ARP Master' function.

Ahhh. I see I have some more reading to do :) My original intention
was just adding support for i2c. I knew that smbus tied in there
somewhere, but my impression was that it was just a simplified
physical layer with a more defined protocol layer. I will research
more before continuing.

> What chip are you considering implementing this on?

The PXA255 (which is the ARM XScale processor used in the gumstix).

Ok - I've downloaded and read through most of the SMBus 2.0 spec. It
seems that to implement an arp capable SMBus device requires being
able to respond to two addresses, the slave address and the SMBus ARP
Address (1100 001).

So far all of the i2c hardware support that I've seen (including the
AVR ATmega series and the PXA255) can only respond to the general call
address and the slave address. The PCF8584 has a monitor mode which
allows it to detect any slave address, but I haven't seen any other
i2c hardware that can support this (which isn't to say that it doesn't
exist, I just haven't found anything).

So am I missing something? Has anybody come up with a way of
implementing an SMBus device using hardware i2c support? Obviously,
this could be done using bit banging.

> > - Loss of arbitration on a send would need to try sending again when
> > the bus isn't busy.
> 
> All SMBus drivers check for busy busses and wait for the bus to be free already;
> SMBus is inherently mulit-master;
> no code changes necessary.

Well if I can use the smbus code/drivers then that might make the
Linux side of things easier (well it might actually make it work such
that I don't even need to make any driver changes - we'll see).

> > - The adapter would need to know it's address so it can detect if an
> > incoming request is for it.
> > - The dev interface would need an ioctl to set the adapter address
> > - The dev interface would need an ioctl to get the data from another
> > master. This would need to include the address used (in the event that
> > the general call address is supported or multiple addresses are
> > assigned to the host)
> 
> sounds right to me.

Thanks for the thought provocation...

-- 
Dave Hylands
Vancouver, BC, Canada
http://www.DaveHylands.com/



[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux