lpbb broken in 6.x?

John Baldwin jhb at freebsd.org
Mon Mar 24 11:09:23 PDT 2008


On Monday 24 March 2008 12:00:03 pm Bruce M Simpson wrote:
> Hi,
> 
> Just for giggles, I decided to solder up the circuit in lpbb(4) and try 
> to use it to talk to a 24LC64 EEPROM with its i2c address set to 0. 
> (Yes, I am using 74LS05s specifically for this circuit.)
> 
> Imagine my surprise and dismay, when I try to test out the i2c bus using 
> this tool:
>     http://www.ricin.com/freebsd/kbtv/kbtv-1.1.3/saa/saa/support/scan_i2c.c
> 
> ...and keep seeing this on the console, presumably whenever scan_i2c 
> issues an iic(4) ioctl:
>     lpbb0: can't allocate ppbus
> 
> I made sure that no other devices were attached to ppbus0. Voltages on 
> the port and the bus looked sane... SCL and SDA stable below 0.1V, 
> nothing floating, good solid +5V on the supply rail using a 7805 
> regulator on a 9V battery to avoid any nasty current surprises -- I 
> haven't fried my laptop's LPT port.
> 
> Initially I had ppi loaded as well, I booted a clean kernel and loaded 
> lpbb from the loader:
> 
> Mar 24 15:40:39 empiric kernel: lpbb0: <Parallel I2C bit-banging 
> interface> on ppbus0
> Mar 24 15:40:39 empiric kernel: iicbb0: <I2C bit-banging driver> on lpbb0
> Mar 24 15:40:39 empiric kernel: iicbus0: <Philips I2C bus> on iicbb0 
> master-only
> Mar 24 15:41:10 empiric kernel: iic0: <I2C generic I/O> on iicbus0
> Mar 24 15:41:10 empiric kernel: iic1: <I2C generic I/O> on iicbus0
> 
> Not sure why iic attaches twice to the iicbus created by lpbb.
> 
> However, I still got the same message when I re-ran scan_i2c:
> 
> Mar 24 15:41:19 empiric kernel: lpbb0: can't allocate ppbus
> Mar 24 15:41:55 empiric last message repeated 1020 times
> 
> There are real uses for this code, so I'm wondering, what's wrong with lpbb?
> 
> Does lpbb explicitly require hints to be told where to attach?
> IMO it shouldn't, it already seems to attach to the first ppbus instance 
> in the system.
> 
> If I get free time otherwise, I'll try to investigate further.

What other devices do you have on your ppbus?  Do you have lpt0, etc.?  Are 
your running lpd?  The way that ppbus works is that only one child driver 
(ppi0, lpt0, etc.) can "own" the actual ppc device at a time, so when a child 
driver wants to do something, it requests ownership of the bus first.  You 
need to find out which other child driver owns the bus.

-- 
John Baldwin


More information about the freebsd-stable mailing list