Re: [PATCH 3/5] hwmon: (pmbus/core) Add mapping function to pmbus_read_block_data()

Nuno Sá <[email protected]> Fri, 31 Jul 2026 16:42:53 +0100
Newsgroups org.kernel.vger.linux-hwmon,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-doc
Message-ID <amzB2aw_4y6ji9zs@nsa>
On Thu, Jul 30, 2026 at 08:54:25AM -0700, Guenter Roeck wrote:
> On 7/30/26 08:19, Nuno Sá wrote:
> > On Thu, Jul 30, 2026 at 07:47:37AM -0700, Guenter Roeck wrote:
> > > On 7/30/26 07:27, Nuno Sá wrote:
> > > > On Tue, Jul 28, 2026 at 02:05:53PM -0700, Guenter Roeck wrote:
> > > > > On 7/28/26 09:03, Nuno Sá via B4 Relay wrote:
> > > > > > From: Nuno Sá <[email protected]>
> > > > > > 
> > > > > > This is in preparation for adding support to a device which needs to
> > > > > > use it's own read_block implementation.
> > > > > > 
> > > > > 
> > > > > The chip-specific implementation calls i2c_smbus_read_i2c_block_data().
> > > > > I'll need to know if this is a chip limit or a controller limit.
> > > > > If it is a controller limit, a chip specific override would be
> > > > > inappropriate.
> > > > 
> > > > I'll reply from top of my head (did not looked at the driver again).
> > > > IIRC, the biggest reason we need the chip-specific implementation is because of
> > > > the RAIL selection logic (mainly when not in page mode).
> > > > 
> > > 
> > > Yes, I have seen that. Question is why you use i2c_smbus_read_i2c_block_data()
> > > instead of i2c_smbus_read_block_data(). The rail selection logic would not
> > > require that.
> > 
> > IIRC the reason was because the i2c controller on the raspberry pie does not
> > support i2c_smbus_read_block_data(). So I guess this:
> > 
> > https://elixir.bootlin.com/linux/v7.1.4/source/drivers/i2c/i2c-core-smbus.c#L220
> > 
> 
> Hmm, I think we really need a common solution for that problem. Not all
> controllers support i2c_smbus_read_i2c_block_data(), so you are just moving
> the problem from one controller to another.

Yikes. I actually though i2c_smbus_read_i2c_block_data(9 was more widely
supported (if not always). Not sure if you have something in mind but
one straight way would be to choose different implementations (for
read_block) depending on i2c_check_functionality()

> 
> One key example is the PIIX4 driver. Your new driver does not support the
> majority of PC style systems with AMD CPUs.
> 

I see!

- Nuno Sá