* [PATCH 0/2] fpga: Xilinx LogiCore PR Decoupler @ 2017-03-24 15:33 Alan Tull 2017-03-24 15:33 ` [PATCH 1/2] doc: Add bindings document for " Alan Tull 2017-03-24 15:33 ` Alan Tull 0 siblings, 2 replies; 13+ messages in thread From: Alan Tull @ 2017-03-24 15:33 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: Moritz Fischer, Alan Tull, linux-kernel, linux-fpga Hi Greg, Please take these two patches for Xilinx LogiCore PR Decouper for the FPGA bridge framework. Thanks, Alan Moritz Fischer (2): doc: Add bindings document for Xilinx LogiCore PR Decoupler fpga: Add support for Xilinx LogiCORE PR Decoupler .../bindings/fpga/xilinx-pr-decoupler.txt | 35 +++++ drivers/fpga/Kconfig | 10 ++ drivers/fpga/Makefile | 1 + drivers/fpga/xilinx-pr-decoupler.c | 161 +++++++++++++++++++++ 4 files changed, 207 insertions(+) create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt create mode 100644 drivers/fpga/xilinx-pr-decoupler.c -- 2.11.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler 2017-03-24 15:33 [PATCH 0/2] fpga: Xilinx LogiCore PR Decoupler Alan Tull @ 2017-03-24 15:33 ` Alan Tull 2017-03-30 22:44 ` Rob Herring 2017-03-24 15:33 ` Alan Tull 1 sibling, 1 reply; 13+ messages in thread From: Alan Tull @ 2017-03-24 15:33 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Moritz Fischer, Alan Tull, linux-kernel, linux-fpga, Moritz Fischer, Michal Simek, Sören Brinkmann, devicetree From: Moritz Fischer <mdf@kernel.org> This adds the binding documentation for the Xilinx LogiCORE PR Decoupler soft core. Signed-off-by: Moritz Fischer <mdf@kernel.org> Signed-off-by: Michal Simek <michal.simek@xilinx.com> Acked-by: Alan Tull <atull@kernel.org> Cc: Sören Brinkmann <soren.brinkmann@xilinx.com> Cc: linux-kernel@vger.kernel.org Cc: devicetree@vger.kernel.org --- .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt new file mode 100644 index 000000000000..2c527ac30398 --- /dev/null +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt @@ -0,0 +1,35 @@ +Xilinx LogiCORE Partial Reconfig Decoupler Softcore + +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more +decouplers / fpga bridges. +The controller can decouple/disable the bridges which prevents signal +changes from passing through the bridge. The controller can also +couple / enable the bridges which allows traffic to pass through the +bridge normally. + +The Driver supports only MMIO handling. A PR region can have multiple +PR Decouplers which can be handled independently or chained via decouple/ +decouple_status signals. + +Required properties: +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" +- regs : base address and size for decoupler module +- clocks : input clock to IP +- clock-names : should contain "aclk" + +Optional properties: +- bridge-enable : 0 if driver should disable bridge at startup + 1 if driver should enable bridge at startup + Default is to leave bridge in current state. + +See Documentation/devicetree/bindings/fpga/fpga-region.txt for generic bindings. + +Example: + fpga-bridge@100000450 { + compatible = "xlnx,pr-decoupler-1.00", + "xlnx-pr-decoupler"; + regs = <0x10000045 0x10>; + clocks = <&clkc 15>; + clock-names = "aclk"; + bridge-enable = <0>; + }; -- 2.11.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler @ 2017-03-30 22:44 ` Rob Herring 0 siblings, 0 replies; 13+ messages in thread From: Rob Herring @ 2017-03-30 22:44 UTC (permalink / raw) To: Alan Tull Cc: Greg Kroah-Hartman, Moritz Fischer, linux-kernel, linux-fpga, Moritz Fischer, Michal Simek, Sören Brinkmann, devicetree On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: > From: Moritz Fischer <mdf@kernel.org> Please use "dt-bindings: fpga: ..." for the subject. > > This adds the binding documentation for the Xilinx LogiCORE PR > Decoupler soft core. > > Signed-off-by: Moritz Fischer <mdf@kernel.org> > Signed-off-by: Michal Simek <michal.simek@xilinx.com> > Acked-by: Alan Tull <atull@kernel.org> I'm confused why you are sending these instead of Moritz? If it goes through you, then it should have your S-o-B too. > Cc: Sören Brinkmann <soren.brinkmann@xilinx.com> > Cc: linux-kernel@vger.kernel.org > Cc: devicetree@vger.kernel.org > --- > .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > new file mode 100644 > index 000000000000..2c527ac30398 > --- /dev/null > +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > @@ -0,0 +1,35 @@ > +Xilinx LogiCORE Partial Reconfig Decoupler Softcore > + > +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more > +decouplers / fpga bridges. > +The controller can decouple/disable the bridges which prevents signal > +changes from passing through the bridge. The controller can also > +couple / enable the bridges which allows traffic to pass through the > +bridge normally. > + > +The Driver supports only MMIO handling. A PR region can have multiple > +PR Decouplers which can be handled independently or chained via decouple/ > +decouple_status signals. > + > +Required properties: > +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather "followed by". Plus the example has both. > +- regs : base address and size for decoupler module > +- clocks : input clock to IP > +- clock-names : should contain "aclk" > + > +Optional properties: > +- bridge-enable : 0 if driver should disable bridge at startup > + 1 if driver should enable bridge at startup > + Default is to leave bridge in current state. > + > +See Documentation/devicetree/bindings/fpga/fpga-region.txt for generic bindings. > + > +Example: > + fpga-bridge@100000450 { > + compatible = "xlnx,pr-decoupler-1.00", > + "xlnx-pr-decoupler"; > + regs = <0x10000045 0x10>; > + clocks = <&clkc 15>; > + clock-names = "aclk"; > + bridge-enable = <0>; > + }; > -- > 2.11.0 > > -- > To unsubscribe from this list: send the line "unsubscribe devicetree" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler @ 2017-03-30 22:44 ` Rob Herring 0 siblings, 0 replies; 13+ messages in thread From: Rob Herring @ 2017-03-30 22:44 UTC (permalink / raw) To: Alan Tull Cc: Greg Kroah-Hartman, Moritz Fischer, linux-kernel, linux-fpga, Moritz Fischer, Michal Simek, Sören Brinkmann, devicetree On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: > From: Moritz Fischer <mdf@kernel.org> Please use "dt-bindings: fpga: ..." for the subject. > > This adds the binding documentation for the Xilinx LogiCORE PR > Decoupler soft core. > > Signed-off-by: Moritz Fischer <mdf@kernel.org> > Signed-off-by: Michal Simek <michal.simek@xilinx.com> > Acked-by: Alan Tull <atull@kernel.org> I'm confused why you are sending these instead of Moritz? If it goes through you, then it should have your S-o-B too. > Cc: S�ren Brinkmann <soren.brinkmann@xilinx.com> > Cc: linux-kernel@vger.kernel.org > Cc: devicetree@vger.kernel.org > --- > .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > new file mode 100644 > index 000000000000..2c527ac30398 > --- /dev/null > +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > @@ -0,0 +1,35 @@ > +Xilinx LogiCORE Partial Reconfig Decoupler Softcore > + > +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more > +decouplers / fpga bridges. > +The controller can decouple/disable the bridges which prevents signal > +changes from passing through the bridge. The controller can also > +couple / enable the bridges which allows traffic to pass through the > +bridge normally. > + > +The Driver supports only MMIO handling. A PR region can have multiple > +PR Decouplers which can be handled independently or chained via decouple/ > +decouple_status signals. > + > +Required properties: > +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather "followed by". Plus the example has both. > +- regs : base address and size for decoupler module > +- clocks : input clock to IP > +- clock-names : should contain "aclk" > + > +Optional properties: > +- bridge-enable : 0 if driver should disable bridge at startup > + 1 if driver should enable bridge at startup > + Default is to leave bridge in current state. > + > +See Documentation/devicetree/bindings/fpga/fpga-region.txt for generic bindings. > + > +Example: > + fpga-bridge@100000450 { > + compatible = "xlnx,pr-decoupler-1.00", > + "xlnx-pr-decoupler"; > + regs = <0x10000045 0x10>; > + clocks = <&clkc 15>; > + clock-names = "aclk"; > + bridge-enable = <0>; > + }; > -- > 2.11.0 > > -- > To unsubscribe from this list: send the line "unsubscribe devicetree" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler @ 2017-03-30 22:44 ` Rob Herring 0 siblings, 0 replies; 13+ messages in thread From: Rob Herring @ 2017-03-30 22:44 UTC (permalink / raw) To: Alan Tull Cc: Greg Kroah-Hartman, Moritz Fischer, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-fpga-u79uwXL29TY76Z2rM5mHXA, Moritz Fischer, Michal Simek, Sören Brinkmann, devicetree-u79uwXL29TY76Z2rM5mHXA On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: > From: Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Please use "dt-bindings: fpga: ..." for the subject. > > This adds the binding documentation for the Xilinx LogiCORE PR > Decoupler soft core. > > Signed-off-by: Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > Signed-off-by: Michal Simek <michal.simek-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> > Acked-by: Alan Tull <atull-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> I'm confused why you are sending these instead of Moritz? If it goes through you, then it should have your S-o-B too. > Cc: Sören Brinkmann <soren.brinkmann-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> > Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > --- > .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > new file mode 100644 > index 000000000000..2c527ac30398 > --- /dev/null > +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > @@ -0,0 +1,35 @@ > +Xilinx LogiCORE Partial Reconfig Decoupler Softcore > + > +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more > +decouplers / fpga bridges. > +The controller can decouple/disable the bridges which prevents signal > +changes from passing through the bridge. The controller can also > +couple / enable the bridges which allows traffic to pass through the > +bridge normally. > + > +The Driver supports only MMIO handling. A PR region can have multiple > +PR Decouplers which can be handled independently or chained via decouple/ > +decouple_status signals. > + > +Required properties: > +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather "followed by". Plus the example has both. > +- regs : base address and size for decoupler module > +- clocks : input clock to IP > +- clock-names : should contain "aclk" > + > +Optional properties: > +- bridge-enable : 0 if driver should disable bridge at startup > + 1 if driver should enable bridge at startup > + Default is to leave bridge in current state. > + > +See Documentation/devicetree/bindings/fpga/fpga-region.txt for generic bindings. > + > +Example: > + fpga-bridge@100000450 { > + compatible = "xlnx,pr-decoupler-1.00", > + "xlnx-pr-decoupler"; > + regs = <0x10000045 0x10>; > + clocks = <&clkc 15>; > + clock-names = "aclk"; > + bridge-enable = <0>; > + }; > -- > 2.11.0 > > -- > To unsubscribe from this list: send the line "unsubscribe devicetree" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler 2017-03-30 22:44 ` Rob Herring @ 2017-04-04 23:36 ` Moritz Fischer -1 siblings, 0 replies; 13+ messages in thread From: Moritz Fischer @ 2017-04-04 23:36 UTC (permalink / raw) To: Rob Herring Cc: Alan Tull, Greg Kroah-Hartman, Linux Kernel Mailing List, linux-fpga, Moritz Fischer, Michal Simek, Sören Brinkmann, Devicetree List On Thu, Mar 30, 2017 at 05:44:29PM -0500, Rob Herring wrote: > On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: > > From: Moritz Fischer <mdf@kernel.org> > > Please use "dt-bindings: fpga: ..." for the subject. > > > > > > This adds the binding documentation for the Xilinx LogiCORE PR > > Decoupler soft core. > > > > Signed-off-by: Moritz Fischer <mdf@kernel.org> > > Signed-off-by: Michal Simek <michal.simek@xilinx.com> > > Acked-by: Alan Tull <atull@kernel.org> > > I'm confused why you are sending these instead of Moritz? If it goes > through you, then it should have your S-o-B too. Do you want me to resend this Alan (with Rob's suggestions)? > > > Cc: Sören Brinkmann <soren.brinkmann@xilinx.com> > > Cc: linux-kernel@vger.kernel.org > > Cc: devicetree@vger.kernel.org > > --- > > .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ > > 1 file changed, 35 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > > > diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > new file mode 100644 > > index 000000000000..2c527ac30398 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > @@ -0,0 +1,35 @@ > > +Xilinx LogiCORE Partial Reconfig Decoupler Softcore > > + > > +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more > > +decouplers / fpga bridges. > > +The controller can decouple/disable the bridges which prevents signal > > +changes from passing through the bridge. The controller can also > > +couple / enable the bridges which allows traffic to pass through the > > +bridge normally. > > + > > +The Driver supports only MMIO handling. A PR region can have multiple > > +PR Decouplers which can be handled independently or chained via decouple/ > > +decouple_status signals. > > + > > +Required properties: > > +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" > > I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather > "followed by". Plus the example has both. Michal wanted to have both, so I put both. Personally I don't care. I think they have some downstream stuff that relied on it. > > > +- regs : base address and size for decoupler module > > +- clocks : input clock to IP > > +- clock-names : should contain "aclk" > > + > > +Optional properties: > > +- bridge-enable : 0 if driver should disable bridge at startup > > + 1 if driver should enable bridge at startup > > + Default is to leave bridge in current state. > > + > > +See Documentation/devicetree/bindings/fpga/fpga-region.txt for generic bindings. > > + > > +Example: > > + fpga-bridge@100000450 { > > + compatible = "xlnx,pr-decoupler-1.00", > > + "xlnx-pr-decoupler"; > > + regs = <0x10000045 0x10>; > > + clocks = <&clkc 15>; > > + clock-names = "aclk"; > > + bridge-enable = <0>; > > + }; > > -- > > 2.11.0 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe devicetree" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html Thanks, Moritz ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler @ 2017-04-04 23:36 ` Moritz Fischer 0 siblings, 0 replies; 13+ messages in thread From: Moritz Fischer @ 2017-04-04 23:36 UTC (permalink / raw) To: Rob Herring Cc: Alan Tull, Greg Kroah-Hartman, Linux Kernel Mailing List, linux-fpga-u79uwXL29TY76Z2rM5mHXA, Moritz Fischer, Michal Simek, Sören Brinkmann, Devicetree List On Thu, Mar 30, 2017 at 05:44:29PM -0500, Rob Herring wrote: > On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: > > From: Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > > Please use "dt-bindings: fpga: ..." for the subject. > > > > > > This adds the binding documentation for the Xilinx LogiCORE PR > > Decoupler soft core. > > > > Signed-off-by: Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > > Signed-off-by: Michal Simek <michal.simek-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> > > Acked-by: Alan Tull <atull-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > > I'm confused why you are sending these instead of Moritz? If it goes > through you, then it should have your S-o-B too. Do you want me to resend this Alan (with Rob's suggestions)? > > > Cc: Sören Brinkmann <soren.brinkmann-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> > > Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > > Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > > --- > > .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ > > 1 file changed, 35 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > > > diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > new file mode 100644 > > index 000000000000..2c527ac30398 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt > > @@ -0,0 +1,35 @@ > > +Xilinx LogiCORE Partial Reconfig Decoupler Softcore > > + > > +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more > > +decouplers / fpga bridges. > > +The controller can decouple/disable the bridges which prevents signal > > +changes from passing through the bridge. The controller can also > > +couple / enable the bridges which allows traffic to pass through the > > +bridge normally. > > + > > +The Driver supports only MMIO handling. A PR region can have multiple > > +PR Decouplers which can be handled independently or chained via decouple/ > > +decouple_status signals. > > + > > +Required properties: > > +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" > > I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather > "followed by". Plus the example has both. Michal wanted to have both, so I put both. Personally I don't care. I think they have some downstream stuff that relied on it. > > > +- regs : base address and size for decoupler module > > +- clocks : input clock to IP > > +- clock-names : should contain "aclk" > > + > > +Optional properties: > > +- bridge-enable : 0 if driver should disable bridge at startup > > + 1 if driver should enable bridge at startup > > + Default is to leave bridge in current state. > > + > > +See Documentation/devicetree/bindings/fpga/fpga-region.txt for generic bindings. > > + > > +Example: > > + fpga-bridge@100000450 { > > + compatible = "xlnx,pr-decoupler-1.00", > > + "xlnx-pr-decoupler"; > > + regs = <0x10000045 0x10>; > > + clocks = <&clkc 15>; > > + clock-names = "aclk"; > > + bridge-enable = <0>; > > + }; > > -- > > 2.11.0 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe devicetree" in > > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html Thanks, Moritz -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler 2017-04-04 23:36 ` Moritz Fischer @ 2017-04-05 6:26 ` Michal Simek -1 siblings, 0 replies; 13+ messages in thread From: Michal Simek @ 2017-04-05 6:26 UTC (permalink / raw) To: Moritz Fischer, Rob Herring Cc: Alan Tull, Greg Kroah-Hartman, Linux Kernel Mailing List, linux-fpga, Moritz Fischer, Michal Simek, Sören Brinkmann, Devicetree List On 5.4.2017 01:36, Moritz Fischer wrote: > On Thu, Mar 30, 2017 at 05:44:29PM -0500, Rob Herring wrote: >> On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: >>> From: Moritz Fischer <mdf@kernel.org> >> >> Please use "dt-bindings: fpga: ..." for the subject. >> >> >>> >>> This adds the binding documentation for the Xilinx LogiCORE PR >>> Decoupler soft core. >>> >>> Signed-off-by: Moritz Fischer <mdf@kernel.org> >>> Signed-off-by: Michal Simek <michal.simek@xilinx.com> >>> Acked-by: Alan Tull <atull@kernel.org> >> >> I'm confused why you are sending these instead of Moritz? If it goes >> through you, then it should have your S-o-B too. > > Do you want me to resend this Alan (with Rob's suggestions)? >> >>> Cc: Sören Brinkmann <soren.brinkmann@xilinx.com> >>> Cc: linux-kernel@vger.kernel.org >>> Cc: devicetree@vger.kernel.org >>> --- >>> .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ >>> 1 file changed, 35 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >>> >>> diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >>> new file mode 100644 >>> index 000000000000..2c527ac30398 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >>> @@ -0,0 +1,35 @@ >>> +Xilinx LogiCORE Partial Reconfig Decoupler Softcore >>> + >>> +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more >>> +decouplers / fpga bridges. >>> +The controller can decouple/disable the bridges which prevents signal >>> +changes from passing through the bridge. The controller can also >>> +couple / enable the bridges which allows traffic to pass through the >>> +bridge normally. >>> + >>> +The Driver supports only MMIO handling. A PR region can have multiple >>> +PR Decouplers which can be handled independently or chained via decouple/ >>> +decouple_status signals. >>> + >>> +Required properties: >>> +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" >> >> I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather >> "followed by". Plus the example has both. > > Michal wanted to have both, so I put both. Personally I don't care. I > think they have some downstream stuff that relied on it. Agree with Rob with using "followed by" instead of or. M ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler @ 2017-04-05 6:26 ` Michal Simek 0 siblings, 0 replies; 13+ messages in thread From: Michal Simek @ 2017-04-05 6:26 UTC (permalink / raw) To: Moritz Fischer, Rob Herring Cc: Alan Tull, Greg Kroah-Hartman, Linux Kernel Mailing List, linux-fpga, Moritz Fischer, Michal Simek, Sören Brinkmann On 5.4.2017 01:36, Moritz Fischer wrote: > On Thu, Mar 30, 2017 at 05:44:29PM -0500, Rob Herring wrote: >> On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: >>> From: Moritz Fischer <mdf@kernel.org> >> >> Please use "dt-bindings: fpga: ..." for the subject. >> >> >>> >>> This adds the binding documentation for the Xilinx LogiCORE PR >>> Decoupler soft core. >>> >>> Signed-off-by: Moritz Fischer <mdf@kernel.org> >>> Signed-off-by: Michal Simek <michal.simek@xilinx.com> >>> Acked-by: Alan Tull <atull@kernel.org> >> >> I'm confused why you are sending these instead of Moritz? If it goes >> through you, then it should have your S-o-B too. > > Do you want me to resend this Alan (with Rob's suggestions)? >> >>> Cc: Sören Brinkmann <soren.brinkmann@xilinx.com> >>> Cc: linux-kernel@vger.kernel.org >>> Cc: devicetree@vger.kernel.org >>> --- >>> .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ >>> 1 file changed, 35 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >>> >>> diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >>> new file mode 100644 >>> index 000000000000..2c527ac30398 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >>> @@ -0,0 +1,35 @@ >>> +Xilinx LogiCORE Partial Reconfig Decoupler Softcore >>> + >>> +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more >>> +decouplers / fpga bridges. >>> +The controller can decouple/disable the bridges which prevents signal >>> +changes from passing through the bridge. The controller can also >>> +couple / enable the bridges which allows traffic to pass through the >>> +bridge normally. >>> + >>> +The Driver supports only MMIO handling. A PR region can have multiple >>> +PR Decouplers which can be handled independently or chained via decouple/ >>> +decouple_status signals. >>> + >>> +Required properties: >>> +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" >> >> I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather >> "followed by". Plus the example has both. > > Michal wanted to have both, so I put both. Personally I don't care. I > think they have some downstream stuff that relied on it. Agree with Rob with using "followed by" instead of or. M ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler @ 2017-04-05 14:24 ` Alan Tull 0 siblings, 0 replies; 13+ messages in thread From: Alan Tull @ 2017-04-05 14:24 UTC (permalink / raw) To: Moritz Fischer Cc: Rob Herring, Greg Kroah-Hartman, Linux Kernel Mailing List, linux-fpga, Moritz Fischer, Michal Simek, Sören Brinkmann, Devicetree List On Tue, Apr 4, 2017 at 6:36 PM, Moritz Fischer <moritz.fischer@ettus.com> wrote: > On Thu, Mar 30, 2017 at 05:44:29PM -0500, Rob Herring wrote: >> On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: >> > From: Moritz Fischer <mdf@kernel.org> >> >> Please use "dt-bindings: fpga: ..." for the subject. >> >> >> > >> > This adds the binding documentation for the Xilinx LogiCORE PR >> > Decoupler soft core. >> > >> > Signed-off-by: Moritz Fischer <mdf@kernel.org> >> > Signed-off-by: Michal Simek <michal.simek@xilinx.com> >> > Acked-by: Alan Tull <atull@kernel.org> >> >> I'm confused why you are sending these instead of Moritz? If it goes >> through you, then it should have your S-o-B too. Greg asked me to send patches to him. I should have started adding my signed-of-by at that point. > > Do you want me to resend this Alan (with Rob's suggestions)? I sent a set of patches to Greg on March 24. Looking back on that I realize that it didn't have Rob's ack yet (as well as having my ack where it should have been my signed-of-by). Yes, please resend this patchset with Rob's feedback. Thanks, ALan >> >> > Cc: Sören Brinkmann <soren.brinkmann@xilinx.com> >> > Cc: linux-kernel@vger.kernel.org >> > Cc: devicetree@vger.kernel.org >> > --- >> > .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ >> > 1 file changed, 35 insertions(+) >> > create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >> > >> > diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >> > new file mode 100644 >> > index 000000000000..2c527ac30398 >> > --- /dev/null >> > +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >> > @@ -0,0 +1,35 @@ >> > +Xilinx LogiCORE Partial Reconfig Decoupler Softcore >> > + >> > +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more >> > +decouplers / fpga bridges. >> > +The controller can decouple/disable the bridges which prevents signal >> > +changes from passing through the bridge. The controller can also >> > +couple / enable the bridges which allows traffic to pass through the >> > +bridge normally. >> > + >> > +The Driver supports only MMIO handling. A PR region can have multiple >> > +PR Decouplers which can be handled independently or chained via decouple/ >> > +decouple_status signals. >> > + >> > +Required properties: >> > +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" >> >> I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather >> "followed by". Plus the example has both. > > Michal wanted to have both, so I put both. Personally I don't care. I > think they have some downstream stuff that relied on it. > >> >> > +- regs : base address and size for decoupler module >> > +- clocks : input clock to IP >> > +- clock-names : should contain "aclk" >> > + >> > +Optional properties: >> > +- bridge-enable : 0 if driver should disable bridge at startup >> > + 1 if driver should enable bridge at startup >> > + Default is to leave bridge in current state. >> > + >> > +See Documentation/devicetree/bindings/fpga/fpga-region.txt for generic bindings. >> > + >> > +Example: >> > + fpga-bridge@100000450 { >> > + compatible = "xlnx,pr-decoupler-1.00", >> > + "xlnx-pr-decoupler"; >> > + regs = <0x10000045 0x10>; >> > + clocks = <&clkc 15>; >> > + clock-names = "aclk"; >> > + bridge-enable = <0>; >> > + }; >> > -- >> > 2.11.0 >> > >> > -- >> > To unsubscribe from this list: send the line "unsubscribe devicetree" in >> > the body of a message to majordomo@vger.kernel.org >> > More majordomo info at http://vger.kernel.org/majordomo-info.html > > Thanks, > Moritz ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] doc: Add bindings document for Xilinx LogiCore PR Decoupler @ 2017-04-05 14:24 ` Alan Tull 0 siblings, 0 replies; 13+ messages in thread From: Alan Tull @ 2017-04-05 14:24 UTC (permalink / raw) To: Moritz Fischer Cc: Rob Herring, Greg Kroah-Hartman, Linux Kernel Mailing List, linux-fpga-u79uwXL29TY76Z2rM5mHXA, Moritz Fischer, Michal Simek, Sören Brinkmann, Devicetree List On Tue, Apr 4, 2017 at 6:36 PM, Moritz Fischer <moritz.fischer-+aYTwkv1SeIAvxtiuMwx3w@public.gmane.org> wrote: > On Thu, Mar 30, 2017 at 05:44:29PM -0500, Rob Herring wrote: >> On Fri, Mar 24, 2017 at 10:33:20AM -0500, Alan Tull wrote: >> > From: Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> >> >> Please use "dt-bindings: fpga: ..." for the subject. >> >> >> > >> > This adds the binding documentation for the Xilinx LogiCORE PR >> > Decoupler soft core. >> > >> > Signed-off-by: Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> >> > Signed-off-by: Michal Simek <michal.simek-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> >> > Acked-by: Alan Tull <atull-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> >> >> I'm confused why you are sending these instead of Moritz? If it goes >> through you, then it should have your S-o-B too. Greg asked me to send patches to him. I should have started adding my signed-of-by at that point. > > Do you want me to resend this Alan (with Rob's suggestions)? I sent a set of patches to Greg on March 24. Looking back on that I realize that it didn't have Rob's ack yet (as well as having my ack where it should have been my signed-of-by). Yes, please resend this patchset with Rob's feedback. Thanks, ALan >> >> > Cc: Sören Brinkmann <soren.brinkmann-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> >> > Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org >> > Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org >> > --- >> > .../bindings/fpga/xilinx-pr-decoupler.txt | 35 ++++++++++++++++++++++ >> > 1 file changed, 35 insertions(+) >> > create mode 100644 Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >> > >> > diff --git a/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >> > new file mode 100644 >> > index 000000000000..2c527ac30398 >> > --- /dev/null >> > +++ b/Documentation/devicetree/bindings/fpga/xilinx-pr-decoupler.txt >> > @@ -0,0 +1,35 @@ >> > +Xilinx LogiCORE Partial Reconfig Decoupler Softcore >> > + >> > +The Xilinx LogiCORE Partial Reconfig Decoupler manages one or more >> > +decouplers / fpga bridges. >> > +The controller can decouple/disable the bridges which prevents signal >> > +changes from passing through the bridge. The controller can also >> > +couple / enable the bridges which allows traffic to pass through the >> > +bridge normally. >> > + >> > +The Driver supports only MMIO handling. A PR region can have multiple >> > +PR Decouplers which can be handled independently or chained via decouple/ >> > +decouple_status signals. >> > + >> > +Required properties: >> > +- compatible : Should contain "xlnx,pr-decoupler-1.00" or "xlnx,pr-decoupler" >> >> I'd drop xlnx,pr-decoupler, but in any case, it should not be OR rather >> "followed by". Plus the example has both. > > Michal wanted to have both, so I put both. Personally I don't care. I > think they have some downstream stuff that relied on it. > >> >> > +- regs : base address and size for decoupler module >> > +- clocks : input clock to IP >> > +- clock-names : should contain "aclk" >> > + >> > +Optional properties: >> > +- bridge-enable : 0 if driver should disable bridge at startup >> > + 1 if driver should enable bridge at startup >> > + Default is to leave bridge in current state. >> > + >> > +See Documentation/devicetree/bindings/fpga/fpga-region.txt for generic bindings. >> > + >> > +Example: >> > + fpga-bridge@100000450 { >> > + compatible = "xlnx,pr-decoupler-1.00", >> > + "xlnx-pr-decoupler"; >> > + regs = <0x10000045 0x10>; >> > + clocks = <&clkc 15>; >> > + clock-names = "aclk"; >> > + bridge-enable = <0>; >> > + }; >> > -- >> > 2.11.0 >> > >> > -- >> > To unsubscribe from this list: send the line "unsubscribe devicetree" in >> > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org >> > More majordomo info at http://vger.kernel.org/majordomo-info.html > > Thanks, > Moritz -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/2] fpga: Add support for Xilinx LogiCORE PR Decoupler @ 2017-03-24 15:33 ` Alan Tull 0 siblings, 0 replies; 13+ messages in thread From: Alan Tull @ 2017-03-24 15:33 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Moritz Fischer, Alan Tull, linux-kernel, linux-fpga, Moritz Fischer, Michal Simek, Sören Brinkmann, devicetree From: Moritz Fischer <mdf@kernel.org> This adds support for the Xilinx LogiCORE PR Decoupler soft-ip that does decoupling of PR regions in the FPGA fabric during partial reconfiguration. Signed-off-by: Moritz Fischer <mdf@kernel.org> Signed-off-by: Michal Simek <michal.simek@xilinx.com> Cc: Sören Brinkmann <soren.brinkmann@xilinx.com> Cc: linux-kernel@vger.kernel.org Cc: devicetree@vger.kernel.org Acked-by: Alan Tull <atull@kernel.org> --- drivers/fpga/Kconfig | 10 +++ drivers/fpga/Makefile | 1 + drivers/fpga/xilinx-pr-decoupler.c | 161 +++++++++++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+) create mode 100644 drivers/fpga/xilinx-pr-decoupler.c diff --git a/drivers/fpga/Kconfig b/drivers/fpga/Kconfig index 116ee92fe034..161ba9dccede 100644 --- a/drivers/fpga/Kconfig +++ b/drivers/fpga/Kconfig @@ -95,6 +95,16 @@ config ALTERA_PR_IP_CORE_PLAT Platform driver support for Altera Partial Reconfiguration IP component +config XILINX_PR_DECOUPLER + tristate "Xilinx LogiCORE PR Decoupler" + depends on FPGA_BRIDGE + depends on HAS_IOMEM + help + Say Y to enable drivers for Xilinx LogiCORE PR Decoupler. + The PR Decoupler exists in the FPGA fabric to isolate one + region of the FPGA from the busses while that region is + being reprogrammed during partial reconfig. + endif # FPGA endmenu diff --git a/drivers/fpga/Makefile b/drivers/fpga/Makefile index 530cf9410dde..2a4f0218145c 100644 --- a/drivers/fpga/Makefile +++ b/drivers/fpga/Makefile @@ -19,6 +19,7 @@ obj-$(CONFIG_ALTERA_PR_IP_CORE_PLAT) += altera-pr-ip-core-plat.o obj-$(CONFIG_FPGA_BRIDGE) += fpga-bridge.o obj-$(CONFIG_SOCFPGA_FPGA_BRIDGE) += altera-hps2fpga.o altera-fpga2sdram.o obj-$(CONFIG_ALTERA_FREEZE_BRIDGE) += altera-freeze-bridge.o +obj-$(CONFIG_XILINX_PR_DECOUPLER) += xilinx-pr-decoupler.o # High Level Interfaces obj-$(CONFIG_FPGA_REGION) += fpga-region.o diff --git a/drivers/fpga/xilinx-pr-decoupler.c b/drivers/fpga/xilinx-pr-decoupler.c new file mode 100644 index 000000000000..e359930bebc8 --- /dev/null +++ b/drivers/fpga/xilinx-pr-decoupler.c @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2017, National Instruments Corp. + * Copyright (c) 2017, Xilix Inc + * + * FPGA Bridge Driver for the Xilinx LogiCORE Partial Reconfiguration + * Decoupler IP Core. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/kernel.h> +#include <linux/of_device.h> +#include <linux/module.h> +#include <linux/fpga/fpga-bridge.h> + +#define CTRL_CMD_DECOUPLE BIT(0) +#define CTRL_CMD_COUPLE 0 +#define CTRL_OFFSET 0 + +struct xlnx_pr_decoupler_data { + void __iomem *io_base; + struct clk *clk; +}; + +static inline void xlnx_pr_decoupler_write(struct xlnx_pr_decoupler_data *d, + u32 offset, u32 val) +{ + writel(val, d->io_base + offset); +} + +static inline u32 xlnx_pr_decouple_read(const struct xlnx_pr_decoupler_data *d, + u32 offset) +{ + return readl(d->io_base + offset); +} + +static int xlnx_pr_decoupler_enable_set(struct fpga_bridge *bridge, bool enable) +{ + int err; + struct xlnx_pr_decoupler_data *priv = bridge->priv; + + err = clk_enable(priv->clk); + if (err) + return err; + + if (enable) + xlnx_pr_decoupler_write(priv, CTRL_OFFSET, CTRL_CMD_COUPLE); + else + xlnx_pr_decoupler_write(priv, CTRL_OFFSET, CTRL_CMD_DECOUPLE); + + clk_disable(priv->clk); + + return 0; +} + +static int xlnx_pr_decoupler_enable_show(struct fpga_bridge *bridge) +{ + const struct xlnx_pr_decoupler_data *priv = bridge->priv; + u32 status; + int err; + + err = clk_enable(priv->clk); + if (err) + return err; + + status = readl(priv->io_base); + + clk_disable(priv->clk); + + return !status; +} + +static struct fpga_bridge_ops xlnx_pr_decoupler_br_ops = { + .enable_set = xlnx_pr_decoupler_enable_set, + .enable_show = xlnx_pr_decoupler_enable_show, +}; + +static const struct of_device_id xlnx_pr_decoupler_of_match[] = { + { .compatible = "xlnx,pr-decoupler-1.00", }, + { .compatible = "xlnx,pr-decoupler", }, + {}, +}; +MODULE_DEVICE_TABLE(of, xlnx_pr_decoupler_of_match); + +static int xlnx_pr_decoupler_probe(struct platform_device *pdev) +{ + struct xlnx_pr_decoupler_data *priv; + int err; + struct resource *res; + + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + priv->io_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(priv->io_base)) + return PTR_ERR(priv->io_base); + + priv->clk = devm_clk_get(&pdev->dev, "aclk"); + if (IS_ERR(priv->clk)) { + dev_err(&pdev->dev, "input clock not found\n"); + return PTR_ERR(priv->clk); + } + + err = clk_prepare_enable(priv->clk); + if (err) { + dev_err(&pdev->dev, "unable to enable clock\n"); + return err; + } + + clk_disable(priv->clk); + + err = fpga_bridge_register(&pdev->dev, "Xilinx PR Decoupler", + &xlnx_pr_decoupler_br_ops, priv); + + if (err) { + dev_err(&pdev->dev, "unable to register Xilinx PR Decoupler"); + clk_unprepare(priv->clk); + return err; + } + + return 0; +} + +static int xlnx_pr_decoupler_remove(struct platform_device *pdev) +{ + struct fpga_bridge *bridge = platform_get_drvdata(pdev); + struct xlnx_pr_decoupler_data *p = bridge->priv; + + fpga_bridge_unregister(&pdev->dev); + + clk_unprepare(p->clk); + + return 0; +} + +static struct platform_driver xlnx_pr_decoupler_driver = { + .probe = xlnx_pr_decoupler_probe, + .remove = xlnx_pr_decoupler_remove, + .driver = { + .name = "xlnx_pr_decoupler", + .of_match_table = of_match_ptr(xlnx_pr_decoupler_of_match), + }, +}; + +module_platform_driver(xlnx_pr_decoupler_driver); + +MODULE_DESCRIPTION("Xilinx Partial Reconfiguration Decoupler"); +MODULE_AUTHOR("Moritz Fischer <mdf@kernel.org>"); +MODULE_AUTHOR("Michal Simek <michal.simek@xilinx.com>"); +MODULE_LICENSE("GPL v2"); -- 2.11.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/2] fpga: Add support for Xilinx LogiCORE PR Decoupler @ 2017-03-24 15:33 ` Alan Tull 0 siblings, 0 replies; 13+ messages in thread From: Alan Tull @ 2017-03-24 15:33 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Moritz Fischer, Alan Tull, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-fpga-u79uwXL29TY76Z2rM5mHXA, Moritz Fischer, Michal Simek, Sören Brinkmann, devicetree-u79uwXL29TY76Z2rM5mHXA From: Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> This adds support for the Xilinx LogiCORE PR Decoupler soft-ip that does decoupling of PR regions in the FPGA fabric during partial reconfiguration. Signed-off-by: Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Signed-off-by: Michal Simek <michal.simek-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> Cc: Sören Brinkmann <soren.brinkmann-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Acked-by: Alan Tull <atull-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> --- drivers/fpga/Kconfig | 10 +++ drivers/fpga/Makefile | 1 + drivers/fpga/xilinx-pr-decoupler.c | 161 +++++++++++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+) create mode 100644 drivers/fpga/xilinx-pr-decoupler.c diff --git a/drivers/fpga/Kconfig b/drivers/fpga/Kconfig index 116ee92fe034..161ba9dccede 100644 --- a/drivers/fpga/Kconfig +++ b/drivers/fpga/Kconfig @@ -95,6 +95,16 @@ config ALTERA_PR_IP_CORE_PLAT Platform driver support for Altera Partial Reconfiguration IP component +config XILINX_PR_DECOUPLER + tristate "Xilinx LogiCORE PR Decoupler" + depends on FPGA_BRIDGE + depends on HAS_IOMEM + help + Say Y to enable drivers for Xilinx LogiCORE PR Decoupler. + The PR Decoupler exists in the FPGA fabric to isolate one + region of the FPGA from the busses while that region is + being reprogrammed during partial reconfig. + endif # FPGA endmenu diff --git a/drivers/fpga/Makefile b/drivers/fpga/Makefile index 530cf9410dde..2a4f0218145c 100644 --- a/drivers/fpga/Makefile +++ b/drivers/fpga/Makefile @@ -19,6 +19,7 @@ obj-$(CONFIG_ALTERA_PR_IP_CORE_PLAT) += altera-pr-ip-core-plat.o obj-$(CONFIG_FPGA_BRIDGE) += fpga-bridge.o obj-$(CONFIG_SOCFPGA_FPGA_BRIDGE) += altera-hps2fpga.o altera-fpga2sdram.o obj-$(CONFIG_ALTERA_FREEZE_BRIDGE) += altera-freeze-bridge.o +obj-$(CONFIG_XILINX_PR_DECOUPLER) += xilinx-pr-decoupler.o # High Level Interfaces obj-$(CONFIG_FPGA_REGION) += fpga-region.o diff --git a/drivers/fpga/xilinx-pr-decoupler.c b/drivers/fpga/xilinx-pr-decoupler.c new file mode 100644 index 000000000000..e359930bebc8 --- /dev/null +++ b/drivers/fpga/xilinx-pr-decoupler.c @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2017, National Instruments Corp. + * Copyright (c) 2017, Xilix Inc + * + * FPGA Bridge Driver for the Xilinx LogiCORE Partial Reconfiguration + * Decoupler IP Core. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/kernel.h> +#include <linux/of_device.h> +#include <linux/module.h> +#include <linux/fpga/fpga-bridge.h> + +#define CTRL_CMD_DECOUPLE BIT(0) +#define CTRL_CMD_COUPLE 0 +#define CTRL_OFFSET 0 + +struct xlnx_pr_decoupler_data { + void __iomem *io_base; + struct clk *clk; +}; + +static inline void xlnx_pr_decoupler_write(struct xlnx_pr_decoupler_data *d, + u32 offset, u32 val) +{ + writel(val, d->io_base + offset); +} + +static inline u32 xlnx_pr_decouple_read(const struct xlnx_pr_decoupler_data *d, + u32 offset) +{ + return readl(d->io_base + offset); +} + +static int xlnx_pr_decoupler_enable_set(struct fpga_bridge *bridge, bool enable) +{ + int err; + struct xlnx_pr_decoupler_data *priv = bridge->priv; + + err = clk_enable(priv->clk); + if (err) + return err; + + if (enable) + xlnx_pr_decoupler_write(priv, CTRL_OFFSET, CTRL_CMD_COUPLE); + else + xlnx_pr_decoupler_write(priv, CTRL_OFFSET, CTRL_CMD_DECOUPLE); + + clk_disable(priv->clk); + + return 0; +} + +static int xlnx_pr_decoupler_enable_show(struct fpga_bridge *bridge) +{ + const struct xlnx_pr_decoupler_data *priv = bridge->priv; + u32 status; + int err; + + err = clk_enable(priv->clk); + if (err) + return err; + + status = readl(priv->io_base); + + clk_disable(priv->clk); + + return !status; +} + +static struct fpga_bridge_ops xlnx_pr_decoupler_br_ops = { + .enable_set = xlnx_pr_decoupler_enable_set, + .enable_show = xlnx_pr_decoupler_enable_show, +}; + +static const struct of_device_id xlnx_pr_decoupler_of_match[] = { + { .compatible = "xlnx,pr-decoupler-1.00", }, + { .compatible = "xlnx,pr-decoupler", }, + {}, +}; +MODULE_DEVICE_TABLE(of, xlnx_pr_decoupler_of_match); + +static int xlnx_pr_decoupler_probe(struct platform_device *pdev) +{ + struct xlnx_pr_decoupler_data *priv; + int err; + struct resource *res; + + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + priv->io_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(priv->io_base)) + return PTR_ERR(priv->io_base); + + priv->clk = devm_clk_get(&pdev->dev, "aclk"); + if (IS_ERR(priv->clk)) { + dev_err(&pdev->dev, "input clock not found\n"); + return PTR_ERR(priv->clk); + } + + err = clk_prepare_enable(priv->clk); + if (err) { + dev_err(&pdev->dev, "unable to enable clock\n"); + return err; + } + + clk_disable(priv->clk); + + err = fpga_bridge_register(&pdev->dev, "Xilinx PR Decoupler", + &xlnx_pr_decoupler_br_ops, priv); + + if (err) { + dev_err(&pdev->dev, "unable to register Xilinx PR Decoupler"); + clk_unprepare(priv->clk); + return err; + } + + return 0; +} + +static int xlnx_pr_decoupler_remove(struct platform_device *pdev) +{ + struct fpga_bridge *bridge = platform_get_drvdata(pdev); + struct xlnx_pr_decoupler_data *p = bridge->priv; + + fpga_bridge_unregister(&pdev->dev); + + clk_unprepare(p->clk); + + return 0; +} + +static struct platform_driver xlnx_pr_decoupler_driver = { + .probe = xlnx_pr_decoupler_probe, + .remove = xlnx_pr_decoupler_remove, + .driver = { + .name = "xlnx_pr_decoupler", + .of_match_table = of_match_ptr(xlnx_pr_decoupler_of_match), + }, +}; + +module_platform_driver(xlnx_pr_decoupler_driver); + +MODULE_DESCRIPTION("Xilinx Partial Reconfiguration Decoupler"); +MODULE_AUTHOR("Moritz Fischer <mdf-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>"); +MODULE_AUTHOR("Michal Simek <michal.simek-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org>"); +MODULE_LICENSE("GPL v2"); -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2017-04-05 14:25 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-03-24 15:33 [PATCH 0/2] fpga: Xilinx LogiCore PR Decoupler Alan Tull 2017-03-24 15:33 ` [PATCH 1/2] doc: Add bindings document for " Alan Tull 2017-03-30 22:44 ` Rob Herring 2017-03-30 22:44 ` Rob Herring 2017-03-30 22:44 ` Rob Herring 2017-04-04 23:36 ` Moritz Fischer 2017-04-04 23:36 ` Moritz Fischer 2017-04-05 6:26 ` Michal Simek 2017-04-05 6:26 ` Michal Simek 2017-04-05 14:24 ` Alan Tull 2017-04-05 14:24 ` Alan Tull 2017-03-24 15:33 ` [PATCH 2/2] fpga: Add support for Xilinx LogiCORE " Alan Tull 2017-03-24 15:33 ` Alan Tull
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.