Re: [PATCH v28 2/4] dt-bindings: i2c: ast2600-i2c.yaml: Add global-regs and enable-dma properties

Rob Herring
2026-04-07T20:44:18Z

On Tue, Mar 31, 2026 at 07:30:58AM +0000, Ryan Chen wrote:
> > Subject: Re: [PATCH v28 2/4] dt-bindings: i2c: ast2600-i2c.yaml: Add global-regs
> > and enable-dma properties
> >
> > Hi Ryan,
> >
> > > > Sounds reasonable, but before you do so, how are you planning to
> > > > manage the allocation of DMA channels across multiple i2c peripherals?
> > > >
> > > The AST2600 I2C hardware has only one can use DMA at a time.
> > > To avoid the complexity of managing DMA channel contention, I plan to
> > > use buffer mode by default for all controllers, which still provides
> > > better performance than byte mode without requiring DMA channel
> > allocation.
> >
> > OK, but your wording there ("by default") implies that DMA is still selectable
> > for one controller peripheral. In which case: you still have the problem of
> > managing DMA channel contention, but now it's at runtime instead.
> >
> > So my question still stands: how are you planning to enforce that DMA is only
> > enabled for one controller?
> >
> > Or are you planning to disable I2C DMA entirely on AST2600?
> Yes, This is my intent to do.
> Disable I2C DMA entirely on AST2600.
> If I remove DMA, should can I keep byte and buffer for sysfs?

28 versions and it's still not clear when you need what mode. Sigh. The
only thing better about sysfs then it's not my problem, but that really
doesn't sound much better.

DMA is only going to be useful for transfers above a certain size. If
you are doing the typical SMBus style register accesses, then DMA is
completely useless. The setup DMA overhead is going to be greater than
just directly reading/writing the I2C controller FIFOs. What's the size
that makes DMA useful? 16, 32, 64 bytes? Something greater than the max
size in buffer mode probably. Really, provide some data that DMA gives
better performance and/or less CPU usage. If you set some minimum size
and request DMA only above that size, is there really that much
contention? If there's some specific device that really needs DMA, then
make that device's driver request it and reserve it.

For byte mode, there's not a clear need nor description of why. Someone
once long ago asked for it... Who cares, if they really want it, then
the issue needs to be described. If a certain device requires certain
timing that byte mode provides, then that should be some property the
driver for the device communicates to the controller. No need for DT
nor sysfs in that case.

Rob