Re: [PATCH 11/20] regmap: _regmap_raw_read: Add handling of busses without bus->read()

From: Markus Pargmann
Date: Wed Aug 12 2015 - 08:34:23 EST


On Wed, Aug 12, 2015 at 12:27:07PM +0100, Mark Brown wrote:
> On Wed, Aug 12, 2015 at 12:12:36PM +0200, Markus Pargmann wrote:
>
> > + /*
> > + * There are busses that do not have a read function as it is optional.
> > + * Use their reg_read function instead if the requested number of bytes
> > + * is correct.
> > + */
> > + if (!map->bus->read) {
> > + /*
> > + * bus_reg_read() does not support reading values that are not
> > + * exactly the size of format.val_bytes
> > + */
> > + if (val_len != map->format.val_bytes)
> > + return -EINVAL;
> > + return _regmap_bus_reg_read(map, reg, val);
> > + }
>
> No, this makes no sense - if the device doesn't have a read operation
> then it doesn't support a raw data stream and hence can't support raw
> access sensibly. Callers that want to access a lot of registers at once
> without knowing what the wire format for the device is should be using
> the bulk or multi interfaces.

Yes okay. Then I will reduce this patch to the following and put it
into regmap_read() instead?
if (!map->bus->read) {
return -EINVAL;

Is -EINVAL the right thing to return or would you prefer -ENOTSUPP?

Thanks,

Markus

--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |

Attachment: signature.asc
Description: Digital signature