Re: [PATCH v3 35/36] platform/x86: intel_pmc_ipc: Convert to MFD

From: Mika Westerberg
Date: Mon Jan 20 2020 - 04:26:59 EST


On Fri, Jan 17, 2020 at 11:32:02AM +0000, Lee Jones wrote:
> [...]
>
> > > Looks like Regmap could save you the trouble here.
> >
> > Agreed.
>
> Great.

I started to implement regmap for this driver but I run into some
problems. The registers we read/write are all 64-bit and accessed trough
readq/writeq accessors. However, the regmap API takes unsigned int:

int regmap_write(struct regmap *map, unsigned int reg, unsigned int val);
int regmap_read(struct regmap *map, unsigned int reg, unsigned int *val);

I'm not sure how we can take advantage of this API with the 64-bit
registers. There are "raw" versions of the functions that take void
pointer like:

int regmap_raw_read(struct regmap *map, unsigned int reg,
void *val, size_t val_len);

but looking at the implementation if the register gets cached it
internally does reads in unsigned int sized chunks (if I understand it
right).

Any ideas how this can be done?

Thanks!