[coreboot] v3 smbus device structure

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Sat Feb 23 00:27:25 CET 2008

On 22.02.2008 22:02, Marc Jones wrote:
> We need to discuss v3 smbus operations. Someone has done a lot of work 
> to make smbus_ops.c and smbus.h. The code treats smbus as a bus, like 
> the pci bus, with a device structure and all.
> This approach seems nice and maybe the right way to do it, but it is 
> somewhat overkill. I think that the complexity is one reason why the 
> structure is in place in v2 but never used. Instead, simpler 
> chipset/mainboard specific functions are used. The other reason is that 
> the smbus is accessed in ROMCC/CAR code and not in the main coreboot bus 
> enumeration code. My observation is that the SPD is the only device on 
> smbus used by most mainboards in coreboot.
> So, what do we want to do for v3? If we go with the bus/device structure 
> every mainboard in v2 will need to have the smbus functions ported. 
> Also, someone will have to figure out how to describe the smbus devices 
> in the dts and the entire thing might need to use a simpler bus/device 
> structure. Or, we can do as was done in v2 and leave it to the 
> chipset/mainboard code.

This is a bit more complicated than visible at first glance. We have two 
different smbus_read_byte() functions in v3:
int smbus_read_byte(u16 device, u8 address);
int smbus_read_byte(struct device *dev, u8 addr);

The confusion arises because these two clearly different functions have 
the same name. I'd suggest to rename the first smbus_read_byte to 
smbus_read_byte_early to make it clear that it does not care about the 
device tree. All  initram stuff just uses the first function.



More information about the coreboot mailing list