Message ID | 20220222163158.1666-3-pali@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | PCI: mvebu: Slot support | expand |
On Tue, Feb 22, 2022 at 05:31:54PM +0100, Pali Rohár wrote: > These macros allows to easily compose and extract Slot Power Limit and > Physical Slot Number values from Slot Capability Register. > > Signed-off-by: Pali Rohár <pali@kernel.org> > Signed-off-by: Marek Behún <kabel@kernel.org> > --- > include/uapi/linux/pci_regs.h | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h > index 108f8523fa04..3fc9a4cac630 100644 > --- a/include/uapi/linux/pci_regs.h > +++ b/include/uapi/linux/pci_regs.h > @@ -591,10 +591,13 @@ > #define PCI_EXP_SLTCAP_HPS 0x00000020 /* Hot-Plug Surprise */ > #define PCI_EXP_SLTCAP_HPC 0x00000040 /* Hot-Plug Capable */ > #define PCI_EXP_SLTCAP_SPLV 0x00007f80 /* Slot Power Limit Value */ > +#define PCI_EXP_SLTCAP_SPLV_SHIFT 7 /* Slot Power Limit Value shift */ Is there a way to use FIELD_PREP() and FIELD_GET() instead? It seems like that's what the cool kids are doing now. At first I didn't really like them, but they do remove the need for adding _SHIFT macros that have to be manually related to the other. > #define PCI_EXP_SLTCAP_SPLS 0x00018000 /* Slot Power Limit Scale */ > +#define PCI_EXP_SLTCAP_SPLS_SHIFT 15 /* Slot Power Limit Scale shift */ > #define PCI_EXP_SLTCAP_EIP 0x00020000 /* Electromechanical Interlock Present */ > #define PCI_EXP_SLTCAP_NCCS 0x00040000 /* No Command Completed Support */ > #define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ > +#define PCI_EXP_SLTCAP_PSN_SHIFT 19 /* Physical Slot Number shift */ > #define PCI_EXP_SLTCTL 0x18 /* Slot Control */ > #define PCI_EXP_SLTCTL_ABPE 0x0001 /* Attention Button Pressed Enable */ > #define PCI_EXP_SLTCTL_PFDE 0x0002 /* Power Fault Detected Enable */ > -- > 2.20.1 >
On Thursday 24 February 2022 14:28:43 Bjorn Helgaas wrote: > On Tue, Feb 22, 2022 at 05:31:54PM +0100, Pali Rohár wrote: > > These macros allows to easily compose and extract Slot Power Limit and > > Physical Slot Number values from Slot Capability Register. > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > Signed-off-by: Marek Behún <kabel@kernel.org> > > --- > > include/uapi/linux/pci_regs.h | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h > > index 108f8523fa04..3fc9a4cac630 100644 > > --- a/include/uapi/linux/pci_regs.h > > +++ b/include/uapi/linux/pci_regs.h > > @@ -591,10 +591,13 @@ > > #define PCI_EXP_SLTCAP_HPS 0x00000020 /* Hot-Plug Surprise */ > > #define PCI_EXP_SLTCAP_HPC 0x00000040 /* Hot-Plug Capable */ > > #define PCI_EXP_SLTCAP_SPLV 0x00007f80 /* Slot Power Limit Value */ > > +#define PCI_EXP_SLTCAP_SPLV_SHIFT 7 /* Slot Power Limit Value shift */ > > Is there a way to use FIELD_PREP() and FIELD_GET() instead? It seems > like that's what the cool kids are doing now. This is possible too. I have proposed a patch with _SHIFT macros as this is the way how are other macros in this file defined and used. > At first I didn't really like them, but they do remove the need for > adding _SHIFT macros that have to be manually related to the other. > > > #define PCI_EXP_SLTCAP_SPLS 0x00018000 /* Slot Power Limit Scale */ > > +#define PCI_EXP_SLTCAP_SPLS_SHIFT 15 /* Slot Power Limit Scale shift */ > > #define PCI_EXP_SLTCAP_EIP 0x00020000 /* Electromechanical Interlock Present */ > > #define PCI_EXP_SLTCAP_NCCS 0x00040000 /* No Command Completed Support */ > > #define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ > > +#define PCI_EXP_SLTCAP_PSN_SHIFT 19 /* Physical Slot Number shift */ > > #define PCI_EXP_SLTCTL 0x18 /* Slot Control */ > > #define PCI_EXP_SLTCTL_ABPE 0x0001 /* Attention Button Pressed Enable */ > > #define PCI_EXP_SLTCTL_PFDE 0x0002 /* Power Fault Detected Enable */ > > -- > > 2.20.1 > >
On Fri, Feb 25, 2022 at 01:24:51PM +0100, Pali Rohár wrote: > On Thursday 24 February 2022 14:28:43 Bjorn Helgaas wrote: > > On Tue, Feb 22, 2022 at 05:31:54PM +0100, Pali Rohár wrote: > > > These macros allows to easily compose and extract Slot Power Limit and > > > Physical Slot Number values from Slot Capability Register. > > > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > > Signed-off-by: Marek Behún <kabel@kernel.org> > > > --- > > > include/uapi/linux/pci_regs.h | 3 +++ > > > 1 file changed, 3 insertions(+) > > > > > > diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h > > > index 108f8523fa04..3fc9a4cac630 100644 > > > --- a/include/uapi/linux/pci_regs.h > > > +++ b/include/uapi/linux/pci_regs.h > > > @@ -591,10 +591,13 @@ > > > #define PCI_EXP_SLTCAP_HPS 0x00000020 /* Hot-Plug Surprise */ > > > #define PCI_EXP_SLTCAP_HPC 0x00000040 /* Hot-Plug Capable */ > > > #define PCI_EXP_SLTCAP_SPLV 0x00007f80 /* Slot Power Limit Value */ > > > +#define PCI_EXP_SLTCAP_SPLV_SHIFT 7 /* Slot Power Limit Value shift */ > > > > Is there a way to use FIELD_PREP() and FIELD_GET() instead? It seems > > like that's what the cool kids are doing now. > > This is possible too. > > I have proposed a patch with _SHIFT macros as this is the way how are > other macros in this file defined and used. Yes, it's a mix. For some recent additions, I've resisted adding the _SHIFT macros on the theory that they clutter the file, they never change, and the main point of the #defines is readability and so grep/tags/etc can find things. There are a *few* users of FIELD_PREP() and FIELD_GET(): git grep -E "FIELD_(GET|PREP)\(PCI_EXP" and I'm inclined to go that direction in the future. What do you think? Bjorn
On Fri, 25 Feb 2022 09:37:56 -0600 Bjorn Helgaas <helgaas@kernel.org> wrote: > On Fri, Feb 25, 2022 at 01:24:51PM +0100, Pali Rohár wrote: > > On Thursday 24 February 2022 14:28:43 Bjorn Helgaas wrote: > > > On Tue, Feb 22, 2022 at 05:31:54PM +0100, Pali Rohár wrote: > > > > These macros allows to easily compose and extract Slot Power Limit and > > > > Physical Slot Number values from Slot Capability Register. > > > > > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > > > Signed-off-by: Marek Behún <kabel@kernel.org> > > > > --- > > > > include/uapi/linux/pci_regs.h | 3 +++ > > > > 1 file changed, 3 insertions(+) > > > > > > > > diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h > > > > index 108f8523fa04..3fc9a4cac630 100644 > > > > --- a/include/uapi/linux/pci_regs.h > > > > +++ b/include/uapi/linux/pci_regs.h > > > > @@ -591,10 +591,13 @@ > > > > #define PCI_EXP_SLTCAP_HPS 0x00000020 /* Hot-Plug Surprise */ > > > > #define PCI_EXP_SLTCAP_HPC 0x00000040 /* Hot-Plug Capable */ > > > > #define PCI_EXP_SLTCAP_SPLV 0x00007f80 /* Slot Power Limit Value */ > > > > +#define PCI_EXP_SLTCAP_SPLV_SHIFT 7 /* Slot Power Limit Value shift */ > > > > > > Is there a way to use FIELD_PREP() and FIELD_GET() instead? It seems > > > like that's what the cool kids are doing now. > > > > This is possible too. > > > > I have proposed a patch with _SHIFT macros as this is the way how are > > other macros in this file defined and used. > > Yes, it's a mix. For some recent additions, I've resisted adding the > _SHIFT macros on the theory that they clutter the file, they never > change, and the main point of the #defines is readability and so > grep/tags/etc can find things. > > There are a *few* users of FIELD_PREP() and FIELD_GET(): > > git grep -E "FIELD_(GET|PREP)\(PCI_EXP" > > and I'm inclined to go that direction in the future. What do you > think? I am also pro that direction. Would you also like to convert current usages in the .c driver files? We can't remove the existing macros since they are in UAPI, but we can convert drivers so that they don't use _SHIFT macros. Marek
On Fri, Feb 25, 2022 at 06:22:16PM +0100, Marek Behún wrote: > On Fri, 25 Feb 2022 09:37:56 -0600 > Bjorn Helgaas <helgaas@kernel.org> wrote: > > Yes, it's a mix. For some recent additions, I've resisted adding the > > _SHIFT macros on the theory that they clutter the file, they never > > change, and the main point of the #defines is readability and so > > grep/tags/etc can find things. > > > > There are a *few* users of FIELD_PREP() and FIELD_GET(): > > > > git grep -E "FIELD_(GET|PREP)\(PCI_EXP" > > > > and I'm inclined to go that direction in the future. What do you > > think? > > I am also pro that direction. > > Would you also like to convert current usages in the .c driver files? > > We can't remove the existing macros since they are in UAPI, but we can > convert drivers so that they don't use _SHIFT macros. Certainly not a high priority, but it actually looks like there aren't *that* many uses in drivers/pci/, so I'd be OK with converting them. Bjorn
diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index 108f8523fa04..3fc9a4cac630 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -591,10 +591,13 @@ #define PCI_EXP_SLTCAP_HPS 0x00000020 /* Hot-Plug Surprise */ #define PCI_EXP_SLTCAP_HPC 0x00000040 /* Hot-Plug Capable */ #define PCI_EXP_SLTCAP_SPLV 0x00007f80 /* Slot Power Limit Value */ +#define PCI_EXP_SLTCAP_SPLV_SHIFT 7 /* Slot Power Limit Value shift */ #define PCI_EXP_SLTCAP_SPLS 0x00018000 /* Slot Power Limit Scale */ +#define PCI_EXP_SLTCAP_SPLS_SHIFT 15 /* Slot Power Limit Scale shift */ #define PCI_EXP_SLTCAP_EIP 0x00020000 /* Electromechanical Interlock Present */ #define PCI_EXP_SLTCAP_NCCS 0x00040000 /* No Command Completed Support */ #define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ +#define PCI_EXP_SLTCAP_PSN_SHIFT 19 /* Physical Slot Number shift */ #define PCI_EXP_SLTCTL 0x18 /* Slot Control */ #define PCI_EXP_SLTCTL_ABPE 0x0001 /* Attention Button Pressed Enable */ #define PCI_EXP_SLTCTL_PFDE 0x0002 /* Power Fault Detected Enable */