On Thu, Jun 6, 2019 at 3:59 AM Andrzej Hajda <a.hajda@xxxxxxxxxxx> wrote: > > On 05.06.2019 09:04, Andrey Smirnov wrote: > > Simplify AUX data read by removing index arithmetic and shifting with > > a helper functions that does three things: > > > > 1. Fetch data from up to 4 32-bit registers from the chip > > 2. Optionally fix data endianness (not needed on LE hosts) > > 3. Copy read data into user provided array. > > > > Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> > > Cc: Archit Taneja <architt@xxxxxxxxxxxxxx> > > Cc: Andrzej Hajda <a.hajda@xxxxxxxxxxx> > > Cc: Laurent Pinchart <Laurent.pinchart@xxxxxxxxxxxxxxxx> > > Cc: Tomi Valkeinen <tomi.valkeinen@xxxxxx> > > Cc: Andrey Gusakov <andrey.gusakov@xxxxxxxxxxxxxxxxxx> > > Cc: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> > > Cc: Cory Tusar <cory.tusar@xxxxxxxx> > > Cc: Chris Healy <cphealy@xxxxxxxxx> > > Cc: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx > > Cc: linux-kernel@xxxxxxxxxxxxxxx > > --- > > drivers/gpu/drm/bridge/tc358767.c | 40 +++++++++++++++++++++---------- > > 1 file changed, 27 insertions(+), 13 deletions(-) > > > > diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c > > index e197ce0fb166..da47d81e7109 100644 > > --- a/drivers/gpu/drm/bridge/tc358767.c > > +++ b/drivers/gpu/drm/bridge/tc358767.c > > @@ -321,6 +321,29 @@ static int tc_aux_get_status(struct tc_data *tc, u8 *reply) > > return 0; > > } > > > > +static int tc_aux_read_data(struct tc_data *tc, void *data, size_t size) > > +{ > > + u32 auxrdata[DP_AUX_MAX_PAYLOAD_BYTES / sizeof(u32)]; > > + int ret, i, count = DIV_ROUND_UP(size, sizeof(u32)); > > + > > + ret = regmap_bulk_read(tc->regmap, DP0_AUXRDATA(0), auxrdata, count); > > + if (ret) > > + return ret; > > + > > + for (i = 0; i < count; i++) { > > + /* > > + * Our regmap is configured as LE for register data, > > + * so we need undo any byte swapping that might have > > + * happened to preserve original byte order. > > + */ > > + le32_to_cpus(&auxrdata[i]); > > + } > > + > > + memcpy(data, auxrdata, size); > > + > > + return size; > > +} > > + > > > Hmm, cannot we just use regmap_raw_read? I'll give it a try in v4. Thanks, Andrey Smirnov _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel