Message ID | 20230825031826.31599-6-Linhua.xu@unisoc.com |
---|---|
State | New |
Headers | show |
Series | pinctrl: sprd: Modification of UNIOC Platform pinctrl Driver | expand |
On Fri, Aug 25, 2023 at 11:18:25AM +0800, Linhua Xu wrote: > From: Linhua Xu <Linhua.Xu@unisoc.com> > > As the UNISOC pin controller version iterates, more registers are required > to meet new functional requirements. Thus modify them. ... + bits.h and... > +#define NUM_OFFSET (22) > +#define TYPE_OFFSET (18) > +#define BIT_OFFSET (10) > +#define WIDTH_OFFSET (6) Why do you need parentheses? Also what do these represent (since they are decimal numbers)? ... > #define SPRD_PIN_INFO(num, type, offset, width, reg) \ > (((num) & 0xFFF) << NUM_OFFSET | \ > ((type) & 0xF) << TYPE_OFFSET | \ > ((offset) & 0xFF) << BIT_OFFSET | \ > ((width) & 0xF) << WIDTH_OFFSET | \ > - ((reg) & 0xF)) > + ((reg) & 0x1F)) ...use GENMASK() everywhere above. ... > .type = (((a) >> TYPE_OFFSET) & 0xf), \ > .bit_offset = (((a) >> BIT_OFFSET) & 0xff), \ > .bit_width = ((a) >> WIDTH_OFFSET & 0xf), \ > - .reg = ((a) & 0xf) \ > + .reg = ((a) & 0x1f) \ Ditto.
diff --git a/drivers/pinctrl/sprd/pinctrl-sprd.h b/drivers/pinctrl/sprd/pinctrl-sprd.h index a696f81ce663..43b920f27bf9 100644 --- a/drivers/pinctrl/sprd/pinctrl-sprd.h +++ b/drivers/pinctrl/sprd/pinctrl-sprd.h @@ -9,17 +9,17 @@ struct platform_device; -#define NUM_OFFSET (20) -#define TYPE_OFFSET (16) -#define BIT_OFFSET (8) -#define WIDTH_OFFSET (4) +#define NUM_OFFSET (22) +#define TYPE_OFFSET (18) +#define BIT_OFFSET (10) +#define WIDTH_OFFSET (6) #define SPRD_PIN_INFO(num, type, offset, width, reg) \ (((num) & 0xFFF) << NUM_OFFSET | \ ((type) & 0xF) << TYPE_OFFSET | \ ((offset) & 0xFF) << BIT_OFFSET | \ ((width) & 0xF) << WIDTH_OFFSET | \ - ((reg) & 0xF)) + ((reg) & 0x1F)) #define SPRD_PINCTRL_PIN(pin) SPRD_PINCTRL_PIN_DATA(pin, #pin) @@ -30,7 +30,7 @@ struct platform_device; .type = (((a) >> TYPE_OFFSET) & 0xf), \ .bit_offset = (((a) >> BIT_OFFSET) & 0xff), \ .bit_width = ((a) >> WIDTH_OFFSET & 0xf), \ - .reg = ((a) & 0xf) \ + .reg = ((a) & 0x1f) \ } enum pin_type {